Skip to main content

asmkit/x86/features/
BASE.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/// `AADD`.
11///
12/// Supported operand variants:
13///
14/// ```text
15/// +---+----------+
16/// | # | Operands |
17/// +---+----------+
18/// | 1 | Mem, Gpd |
19/// | 2 | Mem, Gpq |
20/// +---+----------+
21/// ```
22pub trait AaddEmitter<A, B> {
23    fn aadd(&mut self, op0: A, op1: B);
24}
25
26impl<'a> AaddEmitter<Mem, Gpd> for Assembler<'a> {
27    fn aadd(&mut self, op0: Mem, op1: Gpd) {
28        self.emit(AADD32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
29    }
30}
31
32impl<'a> AaddEmitter<Mem, Gpq> for Assembler<'a> {
33    fn aadd(&mut self, op0: Mem, op1: Gpq) {
34        self.emit(AADD64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
35    }
36}
37
38/// `AAND`.
39///
40/// Supported operand variants:
41///
42/// ```text
43/// +---+----------+
44/// | # | Operands |
45/// +---+----------+
46/// | 1 | Mem, Gpd |
47/// | 2 | Mem, Gpq |
48/// +---+----------+
49/// ```
50pub trait AandEmitter<A, B> {
51    fn aand(&mut self, op0: A, op1: B);
52}
53
54impl<'a> AandEmitter<Mem, Gpd> for Assembler<'a> {
55    fn aand(&mut self, op0: Mem, op1: Gpd) {
56        self.emit(AAND32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
57    }
58}
59
60impl<'a> AandEmitter<Mem, Gpq> for Assembler<'a> {
61    fn aand(&mut self, op0: Mem, op1: Gpq) {
62        self.emit(AAND64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
63    }
64}
65
66/// `ADC`.
67///
68/// Supported operand variants:
69///
70/// ```text
71/// +----+--------------+
72/// | #  | Operands     |
73/// +----+--------------+
74/// | 1  | GpbLo, GpbLo |
75/// | 2  | GpbLo, Imm   |
76/// | 3  | GpbLo, Mem   |
77/// | 4  | Gpd, Gpd     |
78/// | 5  | Gpd, Imm     |
79/// | 6  | Gpd, Mem     |
80/// | 7  | Gpq, Gpq     |
81/// | 8  | Gpq, Imm     |
82/// | 9  | Gpq, Mem     |
83/// | 10 | Gpw, Gpw     |
84/// | 11 | Gpw, Imm     |
85/// | 12 | Gpw, Mem     |
86/// | 13 | Mem, GpbLo   |
87/// | 14 | Mem, Gpd     |
88/// | 15 | Mem, Gpq     |
89/// | 16 | Mem, Gpw     |
90/// | 17 | Mem, Imm     |
91/// +----+--------------+
92/// ```
93pub trait AdcEmitter<A, B> {
94    fn adc(&mut self, op0: A, op1: B);
95}
96
97impl<'a> AdcEmitter<GpbLo, GpbLo> for Assembler<'a> {
98    fn adc(&mut self, op0: GpbLo, op1: GpbLo) {
99        self.emit(ADC8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
100    }
101}
102
103impl<'a> AdcEmitter<Mem, GpbLo> for Assembler<'a> {
104    fn adc(&mut self, op0: Mem, op1: GpbLo) {
105        self.emit(ADC8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
106    }
107}
108
109impl<'a> AdcEmitter<Gpw, Gpw> for Assembler<'a> {
110    fn adc(&mut self, op0: Gpw, op1: Gpw) {
111        self.emit(ADC16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
112    }
113}
114
115impl<'a> AdcEmitter<Mem, Gpw> for Assembler<'a> {
116    fn adc(&mut self, op0: Mem, op1: Gpw) {
117        self.emit(ADC16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
118    }
119}
120
121impl<'a> AdcEmitter<Gpd, Gpd> for Assembler<'a> {
122    fn adc(&mut self, op0: Gpd, op1: Gpd) {
123        self.emit(ADC32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
124    }
125}
126
127impl<'a> AdcEmitter<Mem, Gpd> for Assembler<'a> {
128    fn adc(&mut self, op0: Mem, op1: Gpd) {
129        self.emit(ADC32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
130    }
131}
132
133impl<'a> AdcEmitter<Gpq, Gpq> for Assembler<'a> {
134    fn adc(&mut self, op0: Gpq, op1: Gpq) {
135        self.emit(ADC64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
136    }
137}
138
139impl<'a> AdcEmitter<Mem, Gpq> for Assembler<'a> {
140    fn adc(&mut self, op0: Mem, op1: Gpq) {
141        self.emit(ADC64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
142    }
143}
144
145impl<'a> AdcEmitter<GpbLo, Mem> for Assembler<'a> {
146    fn adc(&mut self, op0: GpbLo, op1: Mem) {
147        self.emit(ADC8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
148    }
149}
150
151impl<'a> AdcEmitter<Gpw, Mem> for Assembler<'a> {
152    fn adc(&mut self, op0: Gpw, op1: Mem) {
153        self.emit(ADC16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
154    }
155}
156
157impl<'a> AdcEmitter<Gpd, Mem> for Assembler<'a> {
158    fn adc(&mut self, op0: Gpd, op1: Mem) {
159        self.emit(ADC32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
160    }
161}
162
163impl<'a> AdcEmitter<Gpq, Mem> for Assembler<'a> {
164    fn adc(&mut self, op0: Gpq, op1: Mem) {
165        self.emit(ADC64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
166    }
167}
168
169impl<'a> AdcEmitter<GpbLo, Imm> for Assembler<'a> {
170    fn adc(&mut self, op0: GpbLo, op1: Imm) {
171        self.emit(ADC8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
172    }
173}
174
175impl<'a> AdcEmitter<Gpw, Imm> for Assembler<'a> {
176    fn adc(&mut self, op0: Gpw, op1: Imm) {
177        self.emit(ADC16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
178    }
179}
180
181impl<'a> AdcEmitter<Gpd, Imm> for Assembler<'a> {
182    fn adc(&mut self, op0: Gpd, op1: Imm) {
183        self.emit(ADC32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
184    }
185}
186
187impl<'a> AdcEmitter<Gpq, Imm> for Assembler<'a> {
188    fn adc(&mut self, op0: Gpq, op1: Imm) {
189        self.emit(ADC64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
190    }
191}
192
193impl<'a> AdcEmitter<Mem, Imm> for Assembler<'a> {
194    fn adc(&mut self, op0: Mem, op1: Imm) {
195        self.emit(ADC8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
196    }
197}
198
199/// `ADD`.
200///
201/// Supported operand variants:
202///
203/// ```text
204/// +----+--------------+
205/// | #  | Operands     |
206/// +----+--------------+
207/// | 1  | GpbLo, GpbLo |
208/// | 2  | GpbLo, Imm   |
209/// | 3  | GpbLo, Mem   |
210/// | 4  | Gpd, Gpd     |
211/// | 5  | Gpd, Imm     |
212/// | 6  | Gpd, Mem     |
213/// | 7  | Gpq, Gpq     |
214/// | 8  | Gpq, Imm     |
215/// | 9  | Gpq, Mem     |
216/// | 10 | Gpw, Gpw     |
217/// | 11 | Gpw, Imm     |
218/// | 12 | Gpw, Mem     |
219/// | 13 | Mem, GpbLo   |
220/// | 14 | Mem, Gpd     |
221/// | 15 | Mem, Gpq     |
222/// | 16 | Mem, Gpw     |
223/// | 17 | Mem, Imm     |
224/// +----+--------------+
225/// ```
226pub trait AddEmitter<A, B> {
227    fn add(&mut self, op0: A, op1: B);
228}
229
230impl<'a> AddEmitter<GpbLo, GpbLo> for Assembler<'a> {
231    fn add(&mut self, op0: GpbLo, op1: GpbLo) {
232        self.emit(ADD8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
233    }
234}
235
236impl<'a> AddEmitter<Mem, GpbLo> for Assembler<'a> {
237    fn add(&mut self, op0: Mem, op1: GpbLo) {
238        self.emit(ADD8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
239    }
240}
241
242impl<'a> AddEmitter<Gpw, Gpw> for Assembler<'a> {
243    fn add(&mut self, op0: Gpw, op1: Gpw) {
244        self.emit(ADD16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
245    }
246}
247
248impl<'a> AddEmitter<Mem, Gpw> for Assembler<'a> {
249    fn add(&mut self, op0: Mem, op1: Gpw) {
250        self.emit(ADD16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
251    }
252}
253
254impl<'a> AddEmitter<Gpd, Gpd> for Assembler<'a> {
255    fn add(&mut self, op0: Gpd, op1: Gpd) {
256        self.emit(ADD32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
257    }
258}
259
260impl<'a> AddEmitter<Mem, Gpd> for Assembler<'a> {
261    fn add(&mut self, op0: Mem, op1: Gpd) {
262        self.emit(ADD32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
263    }
264}
265
266impl<'a> AddEmitter<Gpq, Gpq> for Assembler<'a> {
267    fn add(&mut self, op0: Gpq, op1: Gpq) {
268        self.emit(ADD64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
269    }
270}
271
272impl<'a> AddEmitter<Mem, Gpq> for Assembler<'a> {
273    fn add(&mut self, op0: Mem, op1: Gpq) {
274        self.emit(ADD64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
275    }
276}
277
278impl<'a> AddEmitter<GpbLo, Mem> for Assembler<'a> {
279    fn add(&mut self, op0: GpbLo, op1: Mem) {
280        self.emit(ADD8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
281    }
282}
283
284impl<'a> AddEmitter<Gpw, Mem> for Assembler<'a> {
285    fn add(&mut self, op0: Gpw, op1: Mem) {
286        self.emit(ADD16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
287    }
288}
289
290impl<'a> AddEmitter<Gpd, Mem> for Assembler<'a> {
291    fn add(&mut self, op0: Gpd, op1: Mem) {
292        self.emit(ADD32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
293    }
294}
295
296impl<'a> AddEmitter<Gpq, Mem> for Assembler<'a> {
297    fn add(&mut self, op0: Gpq, op1: Mem) {
298        self.emit(ADD64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
299    }
300}
301
302impl<'a> AddEmitter<GpbLo, Imm> for Assembler<'a> {
303    fn add(&mut self, op0: GpbLo, op1: Imm) {
304        self.emit(ADD8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
305    }
306}
307
308impl<'a> AddEmitter<Gpw, Imm> for Assembler<'a> {
309    fn add(&mut self, op0: Gpw, op1: Imm) {
310        self.emit(ADD16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
311    }
312}
313
314impl<'a> AddEmitter<Gpd, Imm> for Assembler<'a> {
315    fn add(&mut self, op0: Gpd, op1: Imm) {
316        self.emit(ADD32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
317    }
318}
319
320impl<'a> AddEmitter<Gpq, Imm> for Assembler<'a> {
321    fn add(&mut self, op0: Gpq, op1: Imm) {
322        self.emit(ADD64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
323    }
324}
325
326impl<'a> AddEmitter<Mem, Imm> for Assembler<'a> {
327    fn add(&mut self, op0: Mem, op1: Imm) {
328        self.emit(ADD8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
329    }
330}
331
332/// `AND`.
333///
334/// Supported operand variants:
335///
336/// ```text
337/// +----+--------------+
338/// | #  | Operands     |
339/// +----+--------------+
340/// | 1  | GpbLo, GpbLo |
341/// | 2  | GpbLo, Imm   |
342/// | 3  | GpbLo, Mem   |
343/// | 4  | Gpd, Gpd     |
344/// | 5  | Gpd, Imm     |
345/// | 6  | Gpd, Mem     |
346/// | 7  | Gpq, Gpq     |
347/// | 8  | Gpq, Imm     |
348/// | 9  | Gpq, Mem     |
349/// | 10 | Gpw, Gpw     |
350/// | 11 | Gpw, Imm     |
351/// | 12 | Gpw, Mem     |
352/// | 13 | Mem, GpbLo   |
353/// | 14 | Mem, Gpd     |
354/// | 15 | Mem, Gpq     |
355/// | 16 | Mem, Gpw     |
356/// | 17 | Mem, Imm     |
357/// +----+--------------+
358/// ```
359pub trait AndEmitter<A, B> {
360    fn and(&mut self, op0: A, op1: B);
361}
362
363impl<'a> AndEmitter<GpbLo, GpbLo> for Assembler<'a> {
364    fn and(&mut self, op0: GpbLo, op1: GpbLo) {
365        self.emit(AND8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
366    }
367}
368
369impl<'a> AndEmitter<Mem, GpbLo> for Assembler<'a> {
370    fn and(&mut self, op0: Mem, op1: GpbLo) {
371        self.emit(AND8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
372    }
373}
374
375impl<'a> AndEmitter<Gpw, Gpw> for Assembler<'a> {
376    fn and(&mut self, op0: Gpw, op1: Gpw) {
377        self.emit(AND16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
378    }
379}
380
381impl<'a> AndEmitter<Mem, Gpw> for Assembler<'a> {
382    fn and(&mut self, op0: Mem, op1: Gpw) {
383        self.emit(AND16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
384    }
385}
386
387impl<'a> AndEmitter<Gpd, Gpd> for Assembler<'a> {
388    fn and(&mut self, op0: Gpd, op1: Gpd) {
389        self.emit(AND32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
390    }
391}
392
393impl<'a> AndEmitter<Mem, Gpd> for Assembler<'a> {
394    fn and(&mut self, op0: Mem, op1: Gpd) {
395        self.emit(AND32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
396    }
397}
398
399impl<'a> AndEmitter<Gpq, Gpq> for Assembler<'a> {
400    fn and(&mut self, op0: Gpq, op1: Gpq) {
401        self.emit(AND64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
402    }
403}
404
405impl<'a> AndEmitter<Mem, Gpq> for Assembler<'a> {
406    fn and(&mut self, op0: Mem, op1: Gpq) {
407        self.emit(AND64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
408    }
409}
410
411impl<'a> AndEmitter<GpbLo, Mem> for Assembler<'a> {
412    fn and(&mut self, op0: GpbLo, op1: Mem) {
413        self.emit(AND8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
414    }
415}
416
417impl<'a> AndEmitter<Gpw, Mem> for Assembler<'a> {
418    fn and(&mut self, op0: Gpw, op1: Mem) {
419        self.emit(AND16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
420    }
421}
422
423impl<'a> AndEmitter<Gpd, Mem> for Assembler<'a> {
424    fn and(&mut self, op0: Gpd, op1: Mem) {
425        self.emit(AND32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
426    }
427}
428
429impl<'a> AndEmitter<Gpq, Mem> for Assembler<'a> {
430    fn and(&mut self, op0: Gpq, op1: Mem) {
431        self.emit(AND64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
432    }
433}
434
435impl<'a> AndEmitter<GpbLo, Imm> for Assembler<'a> {
436    fn and(&mut self, op0: GpbLo, op1: Imm) {
437        self.emit(AND8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
438    }
439}
440
441impl<'a> AndEmitter<Gpw, Imm> for Assembler<'a> {
442    fn and(&mut self, op0: Gpw, op1: Imm) {
443        self.emit(AND16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
444    }
445}
446
447impl<'a> AndEmitter<Gpd, Imm> for Assembler<'a> {
448    fn and(&mut self, op0: Gpd, op1: Imm) {
449        self.emit(AND32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
450    }
451}
452
453impl<'a> AndEmitter<Gpq, Imm> for Assembler<'a> {
454    fn and(&mut self, op0: Gpq, op1: Imm) {
455        self.emit(AND64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
456    }
457}
458
459impl<'a> AndEmitter<Mem, Imm> for Assembler<'a> {
460    fn and(&mut self, op0: Mem, op1: Imm) {
461        self.emit(AND8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
462    }
463}
464
465/// `AOR`.
466///
467/// Supported operand variants:
468///
469/// ```text
470/// +---+----------+
471/// | # | Operands |
472/// +---+----------+
473/// | 1 | Mem, Gpd |
474/// | 2 | Mem, Gpq |
475/// +---+----------+
476/// ```
477pub trait AorEmitter<A, B> {
478    fn aor(&mut self, op0: A, op1: B);
479}
480
481impl<'a> AorEmitter<Mem, Gpd> for Assembler<'a> {
482    fn aor(&mut self, op0: Mem, op1: Gpd) {
483        self.emit(AOR32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
484    }
485}
486
487impl<'a> AorEmitter<Mem, Gpq> for Assembler<'a> {
488    fn aor(&mut self, op0: Mem, op1: Gpq) {
489        self.emit(AOR64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
490    }
491}
492
493/// `AXOR`.
494///
495/// Supported operand variants:
496///
497/// ```text
498/// +---+----------+
499/// | # | Operands |
500/// +---+----------+
501/// | 1 | Mem, Gpd |
502/// | 2 | Mem, Gpq |
503/// +---+----------+
504/// ```
505pub trait AxorEmitter<A, B> {
506    fn axor(&mut self, op0: A, op1: B);
507}
508
509impl<'a> AxorEmitter<Mem, Gpd> for Assembler<'a> {
510    fn axor(&mut self, op0: Mem, op1: Gpd) {
511        self.emit(AXOR32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
512    }
513}
514
515impl<'a> AxorEmitter<Mem, Gpq> for Assembler<'a> {
516    fn axor(&mut self, op0: Mem, op1: Gpq) {
517        self.emit(AXOR64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
518    }
519}
520
521/// `BSF`.
522///
523/// Supported operand variants:
524///
525/// ```text
526/// +---+----------+
527/// | # | Operands |
528/// +---+----------+
529/// | 1 | Gpd, Gpd |
530/// | 2 | Gpd, Mem |
531/// | 3 | Gpq, Gpq |
532/// | 4 | Gpq, Mem |
533/// | 5 | Gpw, Gpw |
534/// | 6 | Gpw, Mem |
535/// +---+----------+
536/// ```
537pub trait BsfEmitter<A, B> {
538    fn bsf(&mut self, op0: A, op1: B);
539}
540
541impl<'a> BsfEmitter<Gpw, Gpw> for Assembler<'a> {
542    fn bsf(&mut self, op0: Gpw, op1: Gpw) {
543        self.emit(BSF16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
544    }
545}
546
547impl<'a> BsfEmitter<Gpw, Mem> for Assembler<'a> {
548    fn bsf(&mut self, op0: Gpw, op1: Mem) {
549        self.emit(BSF16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
550    }
551}
552
553impl<'a> BsfEmitter<Gpd, Gpd> for Assembler<'a> {
554    fn bsf(&mut self, op0: Gpd, op1: Gpd) {
555        self.emit(BSF32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
556    }
557}
558
559impl<'a> BsfEmitter<Gpd, Mem> for Assembler<'a> {
560    fn bsf(&mut self, op0: Gpd, op1: Mem) {
561        self.emit(BSF32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
562    }
563}
564
565impl<'a> BsfEmitter<Gpq, Gpq> for Assembler<'a> {
566    fn bsf(&mut self, op0: Gpq, op1: Gpq) {
567        self.emit(BSF64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
568    }
569}
570
571impl<'a> BsfEmitter<Gpq, Mem> for Assembler<'a> {
572    fn bsf(&mut self, op0: Gpq, op1: Mem) {
573        self.emit(BSF64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
574    }
575}
576
577/// `BSR`.
578///
579/// Supported operand variants:
580///
581/// ```text
582/// +---+----------+
583/// | # | Operands |
584/// +---+----------+
585/// | 1 | Gpd, Gpd |
586/// | 2 | Gpd, Mem |
587/// | 3 | Gpq, Gpq |
588/// | 4 | Gpq, Mem |
589/// | 5 | Gpw, Gpw |
590/// | 6 | Gpw, Mem |
591/// +---+----------+
592/// ```
593pub trait BsrEmitter<A, B> {
594    fn bsr(&mut self, op0: A, op1: B);
595}
596
597impl<'a> BsrEmitter<Gpw, Gpw> for Assembler<'a> {
598    fn bsr(&mut self, op0: Gpw, op1: Gpw) {
599        self.emit(BSR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
600    }
601}
602
603impl<'a> BsrEmitter<Gpw, Mem> for Assembler<'a> {
604    fn bsr(&mut self, op0: Gpw, op1: Mem) {
605        self.emit(BSR16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
606    }
607}
608
609impl<'a> BsrEmitter<Gpd, Gpd> for Assembler<'a> {
610    fn bsr(&mut self, op0: Gpd, op1: Gpd) {
611        self.emit(BSR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
612    }
613}
614
615impl<'a> BsrEmitter<Gpd, Mem> for Assembler<'a> {
616    fn bsr(&mut self, op0: Gpd, op1: Mem) {
617        self.emit(BSR32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
618    }
619}
620
621impl<'a> BsrEmitter<Gpq, Gpq> for Assembler<'a> {
622    fn bsr(&mut self, op0: Gpq, op1: Gpq) {
623        self.emit(BSR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
624    }
625}
626
627impl<'a> BsrEmitter<Gpq, Mem> for Assembler<'a> {
628    fn bsr(&mut self, op0: Gpq, op1: Mem) {
629        self.emit(BSR64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
630    }
631}
632
633/// `BT`.
634///
635/// Supported operand variants:
636///
637/// ```text
638/// +----+----------+
639/// | #  | Operands |
640/// +----+----------+
641/// | 1  | Gpd, Gpd |
642/// | 2  | Gpd, Imm |
643/// | 3  | Gpq, Gpq |
644/// | 4  | Gpq, Imm |
645/// | 5  | Gpw, Gpw |
646/// | 6  | Gpw, Imm |
647/// | 7  | Mem, Gpd |
648/// | 8  | Mem, Gpq |
649/// | 9  | Mem, Gpw |
650/// | 10 | Mem, Imm |
651/// +----+----------+
652/// ```
653pub trait BtEmitter<A, B> {
654    fn bt(&mut self, op0: A, op1: B);
655}
656
657impl<'a> BtEmitter<Gpw, Gpw> for Assembler<'a> {
658    fn bt(&mut self, op0: Gpw, op1: Gpw) {
659        self.emit(BT16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
660    }
661}
662
663impl<'a> BtEmitter<Mem, Gpw> for Assembler<'a> {
664    fn bt(&mut self, op0: Mem, op1: Gpw) {
665        self.emit(BT16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
666    }
667}
668
669impl<'a> BtEmitter<Gpd, Gpd> for Assembler<'a> {
670    fn bt(&mut self, op0: Gpd, op1: Gpd) {
671        self.emit(BT32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
672    }
673}
674
675impl<'a> BtEmitter<Mem, Gpd> for Assembler<'a> {
676    fn bt(&mut self, op0: Mem, op1: Gpd) {
677        self.emit(BT32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
678    }
679}
680
681impl<'a> BtEmitter<Gpq, Gpq> for Assembler<'a> {
682    fn bt(&mut self, op0: Gpq, op1: Gpq) {
683        self.emit(BT64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
684    }
685}
686
687impl<'a> BtEmitter<Mem, Gpq> for Assembler<'a> {
688    fn bt(&mut self, op0: Mem, op1: Gpq) {
689        self.emit(BT64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
690    }
691}
692
693impl<'a> BtEmitter<Gpw, Imm> for Assembler<'a> {
694    fn bt(&mut self, op0: Gpw, op1: Imm) {
695        self.emit(BT16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
696    }
697}
698
699impl<'a> BtEmitter<Mem, Imm> for Assembler<'a> {
700    fn bt(&mut self, op0: Mem, op1: Imm) {
701        self.emit(BT16MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
702    }
703}
704
705impl<'a> BtEmitter<Gpd, Imm> for Assembler<'a> {
706    fn bt(&mut self, op0: Gpd, op1: Imm) {
707        self.emit(BT32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
708    }
709}
710
711impl<'a> BtEmitter<Gpq, Imm> for Assembler<'a> {
712    fn bt(&mut self, op0: Gpq, op1: Imm) {
713        self.emit(BT64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
714    }
715}
716
717/// `BTC`.
718///
719/// Supported operand variants:
720///
721/// ```text
722/// +----+----------+
723/// | #  | Operands |
724/// +----+----------+
725/// | 1  | Gpd, Gpd |
726/// | 2  | Gpd, Imm |
727/// | 3  | Gpq, Gpq |
728/// | 4  | Gpq, Imm |
729/// | 5  | Gpw, Gpw |
730/// | 6  | Gpw, Imm |
731/// | 7  | Mem, Gpd |
732/// | 8  | Mem, Gpq |
733/// | 9  | Mem, Gpw |
734/// | 10 | Mem, Imm |
735/// +----+----------+
736/// ```
737pub trait BtcEmitter<A, B> {
738    fn btc(&mut self, op0: A, op1: B);
739}
740
741impl<'a> BtcEmitter<Gpw, Imm> for Assembler<'a> {
742    fn btc(&mut self, op0: Gpw, op1: Imm) {
743        self.emit(BTC16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
744    }
745}
746
747impl<'a> BtcEmitter<Mem, Imm> for Assembler<'a> {
748    fn btc(&mut self, op0: Mem, op1: Imm) {
749        self.emit(BTC16MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
750    }
751}
752
753impl<'a> BtcEmitter<Gpd, Imm> for Assembler<'a> {
754    fn btc(&mut self, op0: Gpd, op1: Imm) {
755        self.emit(BTC32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
756    }
757}
758
759impl<'a> BtcEmitter<Gpq, Imm> for Assembler<'a> {
760    fn btc(&mut self, op0: Gpq, op1: Imm) {
761        self.emit(BTC64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
762    }
763}
764
765impl<'a> BtcEmitter<Gpw, Gpw> for Assembler<'a> {
766    fn btc(&mut self, op0: Gpw, op1: Gpw) {
767        self.emit(BTC16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
768    }
769}
770
771impl<'a> BtcEmitter<Mem, Gpw> for Assembler<'a> {
772    fn btc(&mut self, op0: Mem, op1: Gpw) {
773        self.emit(BTC16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
774    }
775}
776
777impl<'a> BtcEmitter<Gpd, Gpd> for Assembler<'a> {
778    fn btc(&mut self, op0: Gpd, op1: Gpd) {
779        self.emit(BTC32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
780    }
781}
782
783impl<'a> BtcEmitter<Mem, Gpd> for Assembler<'a> {
784    fn btc(&mut self, op0: Mem, op1: Gpd) {
785        self.emit(BTC32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
786    }
787}
788
789impl<'a> BtcEmitter<Gpq, Gpq> for Assembler<'a> {
790    fn btc(&mut self, op0: Gpq, op1: Gpq) {
791        self.emit(BTC64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
792    }
793}
794
795impl<'a> BtcEmitter<Mem, Gpq> for Assembler<'a> {
796    fn btc(&mut self, op0: Mem, op1: Gpq) {
797        self.emit(BTC64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
798    }
799}
800
801/// `BTR`.
802///
803/// Supported operand variants:
804///
805/// ```text
806/// +----+----------+
807/// | #  | Operands |
808/// +----+----------+
809/// | 1  | Gpd, Gpd |
810/// | 2  | Gpd, Imm |
811/// | 3  | Gpq, Gpq |
812/// | 4  | Gpq, Imm |
813/// | 5  | Gpw, Gpw |
814/// | 6  | Gpw, Imm |
815/// | 7  | Mem, Gpd |
816/// | 8  | Mem, Gpq |
817/// | 9  | Mem, Gpw |
818/// | 10 | Mem, Imm |
819/// +----+----------+
820/// ```
821pub trait BtrEmitter<A, B> {
822    fn btr(&mut self, op0: A, op1: B);
823}
824
825impl<'a> BtrEmitter<Gpw, Gpw> for Assembler<'a> {
826    fn btr(&mut self, op0: Gpw, op1: Gpw) {
827        self.emit(BTR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
828    }
829}
830
831impl<'a> BtrEmitter<Mem, Gpw> for Assembler<'a> {
832    fn btr(&mut self, op0: Mem, op1: Gpw) {
833        self.emit(BTR16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
834    }
835}
836
837impl<'a> BtrEmitter<Gpd, Gpd> for Assembler<'a> {
838    fn btr(&mut self, op0: Gpd, op1: Gpd) {
839        self.emit(BTR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
840    }
841}
842
843impl<'a> BtrEmitter<Mem, Gpd> for Assembler<'a> {
844    fn btr(&mut self, op0: Mem, op1: Gpd) {
845        self.emit(BTR32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
846    }
847}
848
849impl<'a> BtrEmitter<Gpq, Gpq> for Assembler<'a> {
850    fn btr(&mut self, op0: Gpq, op1: Gpq) {
851        self.emit(BTR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
852    }
853}
854
855impl<'a> BtrEmitter<Mem, Gpq> for Assembler<'a> {
856    fn btr(&mut self, op0: Mem, op1: Gpq) {
857        self.emit(BTR64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
858    }
859}
860
861impl<'a> BtrEmitter<Gpw, Imm> for Assembler<'a> {
862    fn btr(&mut self, op0: Gpw, op1: Imm) {
863        self.emit(BTR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
864    }
865}
866
867impl<'a> BtrEmitter<Mem, Imm> for Assembler<'a> {
868    fn btr(&mut self, op0: Mem, op1: Imm) {
869        self.emit(BTR16MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
870    }
871}
872
873impl<'a> BtrEmitter<Gpd, Imm> for Assembler<'a> {
874    fn btr(&mut self, op0: Gpd, op1: Imm) {
875        self.emit(BTR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
876    }
877}
878
879impl<'a> BtrEmitter<Gpq, Imm> for Assembler<'a> {
880    fn btr(&mut self, op0: Gpq, op1: Imm) {
881        self.emit(BTR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
882    }
883}
884
885/// `BTS`.
886///
887/// Supported operand variants:
888///
889/// ```text
890/// +----+----------+
891/// | #  | Operands |
892/// +----+----------+
893/// | 1  | Gpd, Gpd |
894/// | 2  | Gpd, Imm |
895/// | 3  | Gpq, Gpq |
896/// | 4  | Gpq, Imm |
897/// | 5  | Gpw, Gpw |
898/// | 6  | Gpw, Imm |
899/// | 7  | Mem, Gpd |
900/// | 8  | Mem, Gpq |
901/// | 9  | Mem, Gpw |
902/// | 10 | Mem, Imm |
903/// +----+----------+
904/// ```
905pub trait BtsEmitter<A, B> {
906    fn bts(&mut self, op0: A, op1: B);
907}
908
909impl<'a> BtsEmitter<Gpw, Gpw> for Assembler<'a> {
910    fn bts(&mut self, op0: Gpw, op1: Gpw) {
911        self.emit(BTS16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
912    }
913}
914
915impl<'a> BtsEmitter<Mem, Gpw> for Assembler<'a> {
916    fn bts(&mut self, op0: Mem, op1: Gpw) {
917        self.emit(BTS16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
918    }
919}
920
921impl<'a> BtsEmitter<Gpd, Gpd> for Assembler<'a> {
922    fn bts(&mut self, op0: Gpd, op1: Gpd) {
923        self.emit(BTS32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
924    }
925}
926
927impl<'a> BtsEmitter<Mem, Gpd> for Assembler<'a> {
928    fn bts(&mut self, op0: Mem, op1: Gpd) {
929        self.emit(BTS32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
930    }
931}
932
933impl<'a> BtsEmitter<Gpq, Gpq> for Assembler<'a> {
934    fn bts(&mut self, op0: Gpq, op1: Gpq) {
935        self.emit(BTS64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
936    }
937}
938
939impl<'a> BtsEmitter<Mem, Gpq> for Assembler<'a> {
940    fn bts(&mut self, op0: Mem, op1: Gpq) {
941        self.emit(BTS64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
942    }
943}
944
945impl<'a> BtsEmitter<Gpw, Imm> for Assembler<'a> {
946    fn bts(&mut self, op0: Gpw, op1: Imm) {
947        self.emit(BTS16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
948    }
949}
950
951impl<'a> BtsEmitter<Mem, Imm> for Assembler<'a> {
952    fn bts(&mut self, op0: Mem, op1: Imm) {
953        self.emit(BTS16MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
954    }
955}
956
957impl<'a> BtsEmitter<Gpd, Imm> for Assembler<'a> {
958    fn bts(&mut self, op0: Gpd, op1: Imm) {
959        self.emit(BTS32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
960    }
961}
962
963impl<'a> BtsEmitter<Gpq, Imm> for Assembler<'a> {
964    fn bts(&mut self, op0: Gpq, op1: Imm) {
965        self.emit(BTS64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
966    }
967}
968
969/// `CALL`.
970///
971/// Supported operand variants:
972///
973/// ```text
974/// +---+----------+
975/// | # | Operands |
976/// +---+----------+
977/// | 1 | Gpq      |
978/// | 2 | Imm      |
979/// | 3 | Label    |
980/// | 4 | Mem      |
981/// | 5 | Sym      |
982/// +---+----------+
983/// ```
984pub trait CallEmitter<A> {
985    fn call(&mut self, op0: A);
986}
987
988impl<'a> CallEmitter<Imm> for Assembler<'a> {
989    fn call(&mut self, op0: Imm) {
990        self.emit(CALL, op0.as_operand(), &NOREG, &NOREG, &NOREG);
991    }
992}
993
994impl<'a> CallEmitter<Sym> for Assembler<'a> {
995    fn call(&mut self, op0: Sym) {
996        self.emit(CALL, op0.as_operand(), &NOREG, &NOREG, &NOREG);
997    }
998}
999
1000impl<'a> CallEmitter<Label> for Assembler<'a> {
1001    fn call(&mut self, op0: Label) {
1002        self.emit(CALL, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1003    }
1004}
1005
1006impl<'a> CallEmitter<Gpq> for Assembler<'a> {
1007    fn call(&mut self, op0: Gpq) {
1008        self.emit(CALLR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1009    }
1010}
1011
1012impl<'a> CallEmitter<Mem> for Assembler<'a> {
1013    fn call(&mut self, op0: Mem) {
1014        self.emit(CALLM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1015    }
1016}
1017
1018/// `CALLF`.
1019///
1020/// Supported operand variants:
1021///
1022/// ```text
1023/// +---+----------+
1024/// | # | Operands |
1025/// +---+----------+
1026/// | 1 | Mem      |
1027/// +---+----------+
1028/// ```
1029pub trait CallfEmitter<A> {
1030    fn callf(&mut self, op0: A);
1031}
1032
1033impl<'a> CallfEmitter<Mem> for Assembler<'a> {
1034    fn callf(&mut self, op0: Mem) {
1035        self.emit(CALLF16M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1036    }
1037}
1038
1039/// `CBW`.
1040///
1041/// Supported operand variants:
1042///
1043/// ```text
1044/// +---+----------+
1045/// | # | Operands |
1046/// +---+----------+
1047/// | 1 | (none)   |
1048/// +---+----------+
1049/// ```
1050pub trait CbwEmitter {
1051    fn cbw(&mut self);
1052}
1053
1054impl<'a> CbwEmitter for Assembler<'a> {
1055    fn cbw(&mut self) {
1056        self.emit(CBW, &NOREG, &NOREG, &NOREG, &NOREG);
1057    }
1058}
1059
1060/// `CDQ`.
1061///
1062/// Supported operand variants:
1063///
1064/// ```text
1065/// +---+----------+
1066/// | # | Operands |
1067/// +---+----------+
1068/// | 1 | (none)   |
1069/// +---+----------+
1070/// ```
1071pub trait CdqEmitter {
1072    fn cdq(&mut self);
1073}
1074
1075impl<'a> CdqEmitter for Assembler<'a> {
1076    fn cdq(&mut self) {
1077        self.emit(CDQ, &NOREG, &NOREG, &NOREG, &NOREG);
1078    }
1079}
1080
1081/// `CDQE`.
1082///
1083/// Supported operand variants:
1084///
1085/// ```text
1086/// +---+----------+
1087/// | # | Operands |
1088/// +---+----------+
1089/// | 1 | (none)   |
1090/// +---+----------+
1091/// ```
1092pub trait CdqeEmitter {
1093    fn cdqe(&mut self);
1094}
1095
1096impl<'a> CdqeEmitter for Assembler<'a> {
1097    fn cdqe(&mut self) {
1098        self.emit(CDQE, &NOREG, &NOREG, &NOREG, &NOREG);
1099    }
1100}
1101
1102/// `CLC`.
1103///
1104/// Supported operand variants:
1105///
1106/// ```text
1107/// +---+----------+
1108/// | # | Operands |
1109/// +---+----------+
1110/// | 1 | (none)   |
1111/// +---+----------+
1112/// ```
1113pub trait ClcEmitter {
1114    fn clc(&mut self);
1115}
1116
1117impl<'a> ClcEmitter for Assembler<'a> {
1118    fn clc(&mut self) {
1119        self.emit(CLC, &NOREG, &NOREG, &NOREG, &NOREG);
1120    }
1121}
1122
1123/// `CLD`.
1124///
1125/// Supported operand variants:
1126///
1127/// ```text
1128/// +---+----------+
1129/// | # | Operands |
1130/// +---+----------+
1131/// | 1 | (none)   |
1132/// +---+----------+
1133/// ```
1134pub trait CldEmitter {
1135    fn cld(&mut self);
1136}
1137
1138impl<'a> CldEmitter for Assembler<'a> {
1139    fn cld(&mut self) {
1140        self.emit(CLD, &NOREG, &NOREG, &NOREG, &NOREG);
1141    }
1142}
1143
1144/// `CLFLUSH`.
1145///
1146/// Supported operand variants:
1147///
1148/// ```text
1149/// +---+----------+
1150/// | # | Operands |
1151/// +---+----------+
1152/// | 1 | Mem      |
1153/// +---+----------+
1154/// ```
1155pub trait ClflushEmitter<A> {
1156    fn clflush(&mut self, op0: A);
1157}
1158
1159impl<'a> ClflushEmitter<Mem> for Assembler<'a> {
1160    fn clflush(&mut self, op0: Mem) {
1161        self.emit(CLFLUSHM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1162    }
1163}
1164
1165/// `CLI`.
1166///
1167/// Supported operand variants:
1168///
1169/// ```text
1170/// +---+----------+
1171/// | # | Operands |
1172/// +---+----------+
1173/// | 1 | (none)   |
1174/// +---+----------+
1175/// ```
1176pub trait CliEmitter {
1177    fn cli(&mut self);
1178}
1179
1180impl<'a> CliEmitter for Assembler<'a> {
1181    fn cli(&mut self) {
1182        self.emit(CLI, &NOREG, &NOREG, &NOREG, &NOREG);
1183    }
1184}
1185
1186/// `CLTS`.
1187///
1188/// Supported operand variants:
1189///
1190/// ```text
1191/// +---+----------+
1192/// | # | Operands |
1193/// +---+----------+
1194/// | 1 | (none)   |
1195/// +---+----------+
1196/// ```
1197pub trait CltsEmitter {
1198    fn clts(&mut self);
1199}
1200
1201impl<'a> CltsEmitter for Assembler<'a> {
1202    fn clts(&mut self) {
1203        self.emit(CLTS, &NOREG, &NOREG, &NOREG, &NOREG);
1204    }
1205}
1206
1207/// `CMC`.
1208///
1209/// Supported operand variants:
1210///
1211/// ```text
1212/// +---+----------+
1213/// | # | Operands |
1214/// +---+----------+
1215/// | 1 | (none)   |
1216/// +---+----------+
1217/// ```
1218pub trait CmcEmitter {
1219    fn cmc(&mut self);
1220}
1221
1222impl<'a> CmcEmitter for Assembler<'a> {
1223    fn cmc(&mut self) {
1224        self.emit(CMC, &NOREG, &NOREG, &NOREG, &NOREG);
1225    }
1226}
1227
1228/// `CMP`.
1229///
1230/// Supported operand variants:
1231///
1232/// ```text
1233/// +----+--------------+
1234/// | #  | Operands     |
1235/// +----+--------------+
1236/// | 1  | GpbLo, GpbLo |
1237/// | 2  | GpbLo, Imm   |
1238/// | 3  | GpbLo, Mem   |
1239/// | 4  | Gpd, Gpd     |
1240/// | 5  | Gpd, Imm     |
1241/// | 6  | Gpd, Mem     |
1242/// | 7  | Gpq, Gpq     |
1243/// | 8  | Gpq, Imm     |
1244/// | 9  | Gpq, Mem     |
1245/// | 10 | Gpw, Gpw     |
1246/// | 11 | Gpw, Imm     |
1247/// | 12 | Gpw, Mem     |
1248/// | 13 | Mem, GpbLo   |
1249/// | 14 | Mem, Gpd     |
1250/// | 15 | Mem, Gpq     |
1251/// | 16 | Mem, Gpw     |
1252/// | 17 | Mem, Imm     |
1253/// +----+--------------+
1254/// ```
1255pub trait CmpEmitter<A, B> {
1256    fn cmp(&mut self, op0: A, op1: B);
1257}
1258
1259impl<'a> CmpEmitter<GpbLo, GpbLo> for Assembler<'a> {
1260    fn cmp(&mut self, op0: GpbLo, op1: GpbLo) {
1261        self.emit(CMP8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1262    }
1263}
1264
1265impl<'a> CmpEmitter<Mem, GpbLo> for Assembler<'a> {
1266    fn cmp(&mut self, op0: Mem, op1: GpbLo) {
1267        self.emit(CMP8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1268    }
1269}
1270
1271impl<'a> CmpEmitter<Gpw, Gpw> for Assembler<'a> {
1272    fn cmp(&mut self, op0: Gpw, op1: Gpw) {
1273        self.emit(CMP16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1274    }
1275}
1276
1277impl<'a> CmpEmitter<Mem, Gpw> for Assembler<'a> {
1278    fn cmp(&mut self, op0: Mem, op1: Gpw) {
1279        self.emit(CMP16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1280    }
1281}
1282
1283impl<'a> CmpEmitter<Gpd, Gpd> for Assembler<'a> {
1284    fn cmp(&mut self, op0: Gpd, op1: Gpd) {
1285        self.emit(CMP32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1286    }
1287}
1288
1289impl<'a> CmpEmitter<Mem, Gpd> for Assembler<'a> {
1290    fn cmp(&mut self, op0: Mem, op1: Gpd) {
1291        self.emit(CMP32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1292    }
1293}
1294
1295impl<'a> CmpEmitter<Gpq, Gpq> for Assembler<'a> {
1296    fn cmp(&mut self, op0: Gpq, op1: Gpq) {
1297        self.emit(CMP64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1298    }
1299}
1300
1301impl<'a> CmpEmitter<Mem, Gpq> for Assembler<'a> {
1302    fn cmp(&mut self, op0: Mem, op1: Gpq) {
1303        self.emit(CMP64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1304    }
1305}
1306
1307impl<'a> CmpEmitter<GpbLo, Mem> for Assembler<'a> {
1308    fn cmp(&mut self, op0: GpbLo, op1: Mem) {
1309        self.emit(CMP8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1310    }
1311}
1312
1313impl<'a> CmpEmitter<Gpw, Mem> for Assembler<'a> {
1314    fn cmp(&mut self, op0: Gpw, op1: Mem) {
1315        self.emit(CMP16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1316    }
1317}
1318
1319impl<'a> CmpEmitter<Gpd, Mem> for Assembler<'a> {
1320    fn cmp(&mut self, op0: Gpd, op1: Mem) {
1321        self.emit(CMP32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1322    }
1323}
1324
1325impl<'a> CmpEmitter<Gpq, Mem> for Assembler<'a> {
1326    fn cmp(&mut self, op0: Gpq, op1: Mem) {
1327        self.emit(CMP64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1328    }
1329}
1330
1331impl<'a> CmpEmitter<GpbLo, Imm> for Assembler<'a> {
1332    fn cmp(&mut self, op0: GpbLo, op1: Imm) {
1333        self.emit(CMP8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1334    }
1335}
1336
1337impl<'a> CmpEmitter<Gpw, Imm> for Assembler<'a> {
1338    fn cmp(&mut self, op0: Gpw, op1: Imm) {
1339        self.emit(CMP16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1340    }
1341}
1342
1343impl<'a> CmpEmitter<Gpd, Imm> for Assembler<'a> {
1344    fn cmp(&mut self, op0: Gpd, op1: Imm) {
1345        self.emit(CMP32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1346    }
1347}
1348
1349impl<'a> CmpEmitter<Gpq, Imm> for Assembler<'a> {
1350    fn cmp(&mut self, op0: Gpq, op1: Imm) {
1351        self.emit(CMP64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1352    }
1353}
1354
1355impl<'a> CmpEmitter<Mem, Imm> for Assembler<'a> {
1356    fn cmp(&mut self, op0: Mem, op1: Imm) {
1357        self.emit(CMP8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1358    }
1359}
1360
1361/// `CMPS`.
1362///
1363/// Supported operand variants:
1364///
1365/// ```text
1366/// +---+----------+
1367/// | # | Operands |
1368/// +---+----------+
1369/// | 1 | (none)   |
1370/// +---+----------+
1371/// ```
1372pub trait CmpsEmitter {
1373    fn cmps(&mut self);
1374}
1375
1376impl<'a> CmpsEmitter for Assembler<'a> {
1377    fn cmps(&mut self) {
1378        self.emit(CMPS8, &NOREG, &NOREG, &NOREG, &NOREG);
1379    }
1380}
1381
1382/// `CQO`.
1383///
1384/// Supported operand variants:
1385///
1386/// ```text
1387/// +---+----------+
1388/// | # | Operands |
1389/// +---+----------+
1390/// | 1 | (none)   |
1391/// +---+----------+
1392/// ```
1393pub trait CqoEmitter {
1394    fn cqo(&mut self);
1395}
1396
1397impl<'a> CqoEmitter for Assembler<'a> {
1398    fn cqo(&mut self) {
1399        self.emit(CQO, &NOREG, &NOREG, &NOREG, &NOREG);
1400    }
1401}
1402
1403/// `CWD`.
1404///
1405/// Supported operand variants:
1406///
1407/// ```text
1408/// +---+----------+
1409/// | # | Operands |
1410/// +---+----------+
1411/// | 1 | (none)   |
1412/// +---+----------+
1413/// ```
1414pub trait CwdEmitter {
1415    fn cwd(&mut self);
1416}
1417
1418impl<'a> CwdEmitter for Assembler<'a> {
1419    fn cwd(&mut self) {
1420        self.emit(CWD, &NOREG, &NOREG, &NOREG, &NOREG);
1421    }
1422}
1423
1424/// `CWDE`.
1425///
1426/// Supported operand variants:
1427///
1428/// ```text
1429/// +---+----------+
1430/// | # | Operands |
1431/// +---+----------+
1432/// | 1 | (none)   |
1433/// +---+----------+
1434/// ```
1435pub trait CwdeEmitter {
1436    fn cwde(&mut self);
1437}
1438
1439impl<'a> CwdeEmitter for Assembler<'a> {
1440    fn cwde(&mut self) {
1441        self.emit(CWDE, &NOREG, &NOREG, &NOREG, &NOREG);
1442    }
1443}
1444
1445/// `C_EX`.
1446///
1447/// Supported operand variants:
1448///
1449/// ```text
1450/// +---+----------+
1451/// | # | Operands |
1452/// +---+----------+
1453/// | 1 | (none)   |
1454/// +---+----------+
1455/// ```
1456pub trait CExEmitter {
1457    fn c_ex(&mut self);
1458}
1459
1460impl<'a> CExEmitter for Assembler<'a> {
1461    fn c_ex(&mut self) {
1462        self.emit(C_EX16, &NOREG, &NOREG, &NOREG, &NOREG);
1463    }
1464}
1465
1466/// `C_SEP`.
1467///
1468/// Supported operand variants:
1469///
1470/// ```text
1471/// +---+----------+
1472/// | # | Operands |
1473/// +---+----------+
1474/// | 1 | (none)   |
1475/// +---+----------+
1476/// ```
1477pub trait CSepEmitter {
1478    fn c_sep(&mut self);
1479}
1480
1481impl<'a> CSepEmitter for Assembler<'a> {
1482    fn c_sep(&mut self) {
1483        self.emit(C_SEP16, &NOREG, &NOREG, &NOREG, &NOREG);
1484    }
1485}
1486
1487/// `DEC`.
1488///
1489/// Supported operand variants:
1490///
1491/// ```text
1492/// +---+----------+
1493/// | # | Operands |
1494/// +---+----------+
1495/// | 1 | GpbLo    |
1496/// | 2 | Gpd      |
1497/// | 3 | Gpq      |
1498/// | 4 | Gpw      |
1499/// | 5 | Mem      |
1500/// +---+----------+
1501/// ```
1502pub trait DecEmitter<A> {
1503    fn dec(&mut self, op0: A);
1504}
1505
1506impl<'a> DecEmitter<GpbLo> for Assembler<'a> {
1507    fn dec(&mut self, op0: GpbLo) {
1508        self.emit(DEC8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1509    }
1510}
1511
1512impl<'a> DecEmitter<Mem> for Assembler<'a> {
1513    fn dec(&mut self, op0: Mem) {
1514        self.emit(DEC8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1515    }
1516}
1517
1518impl<'a> DecEmitter<Gpw> for Assembler<'a> {
1519    fn dec(&mut self, op0: Gpw) {
1520        self.emit(DEC16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1521    }
1522}
1523
1524impl<'a> DecEmitter<Gpd> for Assembler<'a> {
1525    fn dec(&mut self, op0: Gpd) {
1526        self.emit(DEC32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1527    }
1528}
1529
1530impl<'a> DecEmitter<Gpq> for Assembler<'a> {
1531    fn dec(&mut self, op0: Gpq) {
1532        self.emit(DEC64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1533    }
1534}
1535
1536/// `DIV`.
1537///
1538/// Supported operand variants:
1539///
1540/// ```text
1541/// +---+----------+
1542/// | # | Operands |
1543/// +---+----------+
1544/// | 1 | GpbLo    |
1545/// | 2 | Gpd      |
1546/// | 3 | Gpq      |
1547/// | 4 | Gpw      |
1548/// | 5 | Mem      |
1549/// +---+----------+
1550/// ```
1551pub trait DivEmitter<A> {
1552    fn div(&mut self, op0: A);
1553}
1554
1555impl<'a> DivEmitter<GpbLo> for Assembler<'a> {
1556    fn div(&mut self, op0: GpbLo) {
1557        self.emit(DIV8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1558    }
1559}
1560
1561impl<'a> DivEmitter<Mem> for Assembler<'a> {
1562    fn div(&mut self, op0: Mem) {
1563        self.emit(DIV8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1564    }
1565}
1566
1567impl<'a> DivEmitter<Gpw> for Assembler<'a> {
1568    fn div(&mut self, op0: Gpw) {
1569        self.emit(DIV16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1570    }
1571}
1572
1573impl<'a> DivEmitter<Gpd> for Assembler<'a> {
1574    fn div(&mut self, op0: Gpd) {
1575        self.emit(DIV32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1576    }
1577}
1578
1579impl<'a> DivEmitter<Gpq> for Assembler<'a> {
1580    fn div(&mut self, op0: Gpq) {
1581        self.emit(DIV64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1582    }
1583}
1584
1585/// `ENTER`.
1586///
1587/// Supported operand variants:
1588///
1589/// ```text
1590/// +---+----------+
1591/// | # | Operands |
1592/// +---+----------+
1593/// | 1 | Imm      |
1594/// +---+----------+
1595/// ```
1596pub trait EnterEmitter<A> {
1597    fn enter(&mut self, op0: A);
1598}
1599
1600impl<'a> EnterEmitter<Imm> for Assembler<'a> {
1601    fn enter(&mut self, op0: Imm) {
1602        self.emit(ENTER16I, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1603    }
1604}
1605
1606/// `FWAIT`.
1607///
1608/// Supported operand variants:
1609///
1610/// ```text
1611/// +---+----------+
1612/// | # | Operands |
1613/// +---+----------+
1614/// | 1 | (none)   |
1615/// +---+----------+
1616/// ```
1617pub trait FwaitEmitter {
1618    fn fwait(&mut self);
1619}
1620
1621impl<'a> FwaitEmitter for Assembler<'a> {
1622    fn fwait(&mut self) {
1623        self.emit(FWAIT, &NOREG, &NOREG, &NOREG, &NOREG);
1624    }
1625}
1626
1627/// `HLT`.
1628///
1629/// Supported operand variants:
1630///
1631/// ```text
1632/// +---+----------+
1633/// | # | Operands |
1634/// +---+----------+
1635/// | 1 | (none)   |
1636/// +---+----------+
1637/// ```
1638pub trait HltEmitter {
1639    fn hlt(&mut self);
1640}
1641
1642impl<'a> HltEmitter for Assembler<'a> {
1643    fn hlt(&mut self) {
1644        self.emit(HLT, &NOREG, &NOREG, &NOREG, &NOREG);
1645    }
1646}
1647
1648/// `IDIV`.
1649///
1650/// Supported operand variants:
1651///
1652/// ```text
1653/// +---+----------+
1654/// | # | Operands |
1655/// +---+----------+
1656/// | 1 | GpbLo    |
1657/// | 2 | Gpd      |
1658/// | 3 | Gpq      |
1659/// | 4 | Gpw      |
1660/// | 5 | Mem      |
1661/// +---+----------+
1662/// ```
1663pub trait IdivEmitter<A> {
1664    fn idiv(&mut self, op0: A);
1665}
1666
1667impl<'a> IdivEmitter<GpbLo> for Assembler<'a> {
1668    fn idiv(&mut self, op0: GpbLo) {
1669        self.emit(IDIV8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1670    }
1671}
1672
1673impl<'a> IdivEmitter<Mem> for Assembler<'a> {
1674    fn idiv(&mut self, op0: Mem) {
1675        self.emit(IDIV8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1676    }
1677}
1678
1679impl<'a> IdivEmitter<Gpw> for Assembler<'a> {
1680    fn idiv(&mut self, op0: Gpw) {
1681        self.emit(IDIV16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1682    }
1683}
1684
1685impl<'a> IdivEmitter<Gpd> for Assembler<'a> {
1686    fn idiv(&mut self, op0: Gpd) {
1687        self.emit(IDIV32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1688    }
1689}
1690
1691impl<'a> IdivEmitter<Gpq> for Assembler<'a> {
1692    fn idiv(&mut self, op0: Gpq) {
1693        self.emit(IDIV64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1694    }
1695}
1696
1697/// `IMUL`.
1698///
1699/// Supported operand variants:
1700///
1701/// ```text
1702/// +---+----------+
1703/// | # | Operands |
1704/// +---+----------+
1705/// | 1 | GpbLo    |
1706/// | 2 | Gpd      |
1707/// | 3 | Gpq      |
1708/// | 4 | Gpw      |
1709/// | 5 | Mem      |
1710/// +---+----------+
1711/// ```
1712pub trait ImulEmitter_1<A> {
1713    fn imul_1(&mut self, op0: A);
1714}
1715
1716impl<'a> ImulEmitter_1<GpbLo> for Assembler<'a> {
1717    fn imul_1(&mut self, op0: GpbLo) {
1718        self.emit(IMUL8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1719    }
1720}
1721
1722impl<'a> ImulEmitter_1<Mem> for Assembler<'a> {
1723    fn imul_1(&mut self, op0: Mem) {
1724        self.emit(IMUL8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1725    }
1726}
1727
1728impl<'a> ImulEmitter_1<Gpw> for Assembler<'a> {
1729    fn imul_1(&mut self, op0: Gpw) {
1730        self.emit(IMUL16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1731    }
1732}
1733
1734impl<'a> ImulEmitter_1<Gpd> for Assembler<'a> {
1735    fn imul_1(&mut self, op0: Gpd) {
1736        self.emit(IMUL32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1737    }
1738}
1739
1740impl<'a> ImulEmitter_1<Gpq> for Assembler<'a> {
1741    fn imul_1(&mut self, op0: Gpq) {
1742        self.emit(IMUL64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1743    }
1744}
1745
1746/// `IMUL`.
1747///
1748/// Supported operand variants:
1749///
1750/// ```text
1751/// +---+----------+
1752/// | # | Operands |
1753/// +---+----------+
1754/// | 1 | Gpd, Gpd |
1755/// | 2 | Gpd, Mem |
1756/// | 3 | Gpq, Gpq |
1757/// | 4 | Gpq, Mem |
1758/// | 5 | Gpw, Gpw |
1759/// | 6 | Gpw, Mem |
1760/// +---+----------+
1761/// ```
1762pub trait ImulEmitter_2<A, B> {
1763    fn imul_2(&mut self, op0: A, op1: B);
1764}
1765
1766impl<'a> ImulEmitter_2<Gpw, Gpw> for Assembler<'a> {
1767    fn imul_2(&mut self, op0: Gpw, op1: Gpw) {
1768        self.emit(IMUL16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1769    }
1770}
1771
1772impl<'a> ImulEmitter_2<Gpw, Mem> for Assembler<'a> {
1773    fn imul_2(&mut self, op0: Gpw, op1: Mem) {
1774        self.emit(IMUL16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1775    }
1776}
1777
1778impl<'a> ImulEmitter_2<Gpd, Gpd> for Assembler<'a> {
1779    fn imul_2(&mut self, op0: Gpd, op1: Gpd) {
1780        self.emit(IMUL32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1781    }
1782}
1783
1784impl<'a> ImulEmitter_2<Gpd, Mem> for Assembler<'a> {
1785    fn imul_2(&mut self, op0: Gpd, op1: Mem) {
1786        self.emit(IMUL32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1787    }
1788}
1789
1790impl<'a> ImulEmitter_2<Gpq, Gpq> for Assembler<'a> {
1791    fn imul_2(&mut self, op0: Gpq, op1: Gpq) {
1792        self.emit(IMUL64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1793    }
1794}
1795
1796impl<'a> ImulEmitter_2<Gpq, Mem> for Assembler<'a> {
1797    fn imul_2(&mut self, op0: Gpq, op1: Mem) {
1798        self.emit(IMUL64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1799    }
1800}
1801
1802/// `IMUL`.
1803///
1804/// Supported operand variants:
1805///
1806/// ```text
1807/// +---+---------------+
1808/// | # | Operands      |
1809/// +---+---------------+
1810/// | 1 | Gpd, Gpd, Imm |
1811/// | 2 | Gpd, Mem, Imm |
1812/// | 3 | Gpq, Gpq, Imm |
1813/// | 4 | Gpq, Mem, Imm |
1814/// | 5 | Gpw, Gpw, Imm |
1815/// | 6 | Gpw, Mem, Imm |
1816/// +---+---------------+
1817/// ```
1818pub trait ImulEmitter_3<A, B, C> {
1819    fn imul_3(&mut self, op0: A, op1: B, op2: C);
1820}
1821
1822impl<'a> ImulEmitter_3<Gpw, Gpw, Imm> for Assembler<'a> {
1823    fn imul_3(&mut self, op0: Gpw, op1: Gpw, op2: Imm) {
1824        self.emit(
1825            IMUL16RRI,
1826            op0.as_operand(),
1827            op1.as_operand(),
1828            op2.as_operand(),
1829            &NOREG,
1830        );
1831    }
1832}
1833
1834impl<'a> ImulEmitter_3<Gpw, Mem, Imm> for Assembler<'a> {
1835    fn imul_3(&mut self, op0: Gpw, op1: Mem, op2: Imm) {
1836        self.emit(
1837            IMUL16RMI,
1838            op0.as_operand(),
1839            op1.as_operand(),
1840            op2.as_operand(),
1841            &NOREG,
1842        );
1843    }
1844}
1845
1846impl<'a> ImulEmitter_3<Gpd, Gpd, Imm> for Assembler<'a> {
1847    fn imul_3(&mut self, op0: Gpd, op1: Gpd, op2: Imm) {
1848        self.emit(
1849            IMUL32RRI,
1850            op0.as_operand(),
1851            op1.as_operand(),
1852            op2.as_operand(),
1853            &NOREG,
1854        );
1855    }
1856}
1857
1858impl<'a> ImulEmitter_3<Gpd, Mem, Imm> for Assembler<'a> {
1859    fn imul_3(&mut self, op0: Gpd, op1: Mem, op2: Imm) {
1860        self.emit(
1861            IMUL32RMI,
1862            op0.as_operand(),
1863            op1.as_operand(),
1864            op2.as_operand(),
1865            &NOREG,
1866        );
1867    }
1868}
1869
1870impl<'a> ImulEmitter_3<Gpq, Gpq, Imm> for Assembler<'a> {
1871    fn imul_3(&mut self, op0: Gpq, op1: Gpq, op2: Imm) {
1872        self.emit(
1873            IMUL64RRI,
1874            op0.as_operand(),
1875            op1.as_operand(),
1876            op2.as_operand(),
1877            &NOREG,
1878        );
1879    }
1880}
1881
1882impl<'a> ImulEmitter_3<Gpq, Mem, Imm> for Assembler<'a> {
1883    fn imul_3(&mut self, op0: Gpq, op1: Mem, op2: Imm) {
1884        self.emit(
1885            IMUL64RMI,
1886            op0.as_operand(),
1887            op1.as_operand(),
1888            op2.as_operand(),
1889            &NOREG,
1890        );
1891    }
1892}
1893
1894/// `IN`.
1895///
1896/// Supported operand variants:
1897///
1898/// ```text
1899/// +---+----------+
1900/// | # | Operands |
1901/// +---+----------+
1902/// | 1 | (none)   |
1903/// +---+----------+
1904/// ```
1905pub trait InEmitter {
1906    fn r#in(&mut self);
1907}
1908
1909impl<'a> InEmitter for Assembler<'a> {
1910    fn r#in(&mut self) {
1911        self.emit(IN8, &NOREG, &NOREG, &NOREG, &NOREG);
1912    }
1913}
1914
1915/// `IN`.
1916///
1917/// Supported operand variants:
1918///
1919/// ```text
1920/// +---+------------+
1921/// | # | Operands   |
1922/// +---+------------+
1923/// | 1 | GpbLo, Imm |
1924/// | 2 | Gpd, Imm   |
1925/// | 3 | Gpq, Imm   |
1926/// | 4 | Gpw, Imm   |
1927/// +---+------------+
1928/// ```
1929pub trait InEmitter_2<A, B> {
1930    fn r#in_2(&mut self, op0: A, op1: B);
1931}
1932
1933impl<'a> InEmitter_2<GpbLo, Imm> for Assembler<'a> {
1934    fn r#in_2(&mut self, op0: GpbLo, op1: Imm) {
1935        self.emit(IN8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1936    }
1937}
1938
1939impl<'a> InEmitter_2<Gpw, Imm> for Assembler<'a> {
1940    fn r#in_2(&mut self, op0: Gpw, op1: Imm) {
1941        self.emit(IN16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1942    }
1943}
1944
1945impl<'a> InEmitter_2<Gpd, Imm> for Assembler<'a> {
1946    fn r#in_2(&mut self, op0: Gpd, op1: Imm) {
1947        self.emit(IN32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1948    }
1949}
1950
1951impl<'a> InEmitter_2<Gpq, Imm> for Assembler<'a> {
1952    fn r#in_2(&mut self, op0: Gpq, op1: Imm) {
1953        self.emit(IN64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1954    }
1955}
1956
1957/// `INC`.
1958///
1959/// Supported operand variants:
1960///
1961/// ```text
1962/// +---+----------+
1963/// | # | Operands |
1964/// +---+----------+
1965/// | 1 | GpbLo    |
1966/// | 2 | Gpd      |
1967/// | 3 | Gpq      |
1968/// | 4 | Gpw      |
1969/// | 5 | Mem      |
1970/// +---+----------+
1971/// ```
1972pub trait IncEmitter<A> {
1973    fn inc(&mut self, op0: A);
1974}
1975
1976impl<'a> IncEmitter<GpbLo> for Assembler<'a> {
1977    fn inc(&mut self, op0: GpbLo) {
1978        self.emit(INC8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1979    }
1980}
1981
1982impl<'a> IncEmitter<Mem> for Assembler<'a> {
1983    fn inc(&mut self, op0: Mem) {
1984        self.emit(INC8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1985    }
1986}
1987
1988impl<'a> IncEmitter<Gpw> for Assembler<'a> {
1989    fn inc(&mut self, op0: Gpw) {
1990        self.emit(INC16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1991    }
1992}
1993
1994impl<'a> IncEmitter<Gpd> for Assembler<'a> {
1995    fn inc(&mut self, op0: Gpd) {
1996        self.emit(INC32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1997    }
1998}
1999
2000impl<'a> IncEmitter<Gpq> for Assembler<'a> {
2001    fn inc(&mut self, op0: Gpq) {
2002        self.emit(INC64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2003    }
2004}
2005
2006/// `INS`.
2007///
2008/// Supported operand variants:
2009///
2010/// ```text
2011/// +---+----------+
2012/// | # | Operands |
2013/// +---+----------+
2014/// | 1 | (none)   |
2015/// +---+----------+
2016/// ```
2017pub trait InsEmitter {
2018    fn ins(&mut self);
2019}
2020
2021impl<'a> InsEmitter for Assembler<'a> {
2022    fn ins(&mut self) {
2023        self.emit(INS8, &NOREG, &NOREG, &NOREG, &NOREG);
2024    }
2025}
2026
2027/// `INT`.
2028///
2029/// Supported operand variants:
2030///
2031/// ```text
2032/// +---+----------+
2033/// | # | Operands |
2034/// +---+----------+
2035/// | 1 | Imm      |
2036/// +---+----------+
2037/// ```
2038pub trait IntEmitter<A> {
2039    fn int(&mut self, op0: A);
2040}
2041
2042impl<'a> IntEmitter<Imm> for Assembler<'a> {
2043    fn int(&mut self, op0: Imm) {
2044        self.emit(INTI, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2045    }
2046}
2047
2048/// `INT1`.
2049///
2050/// Supported operand variants:
2051///
2052/// ```text
2053/// +---+----------+
2054/// | # | Operands |
2055/// +---+----------+
2056/// | 1 | (none)   |
2057/// +---+----------+
2058/// ```
2059pub trait Int1Emitter {
2060    fn int1(&mut self);
2061}
2062
2063impl<'a> Int1Emitter for Assembler<'a> {
2064    fn int1(&mut self) {
2065        self.emit(INT1, &NOREG, &NOREG, &NOREG, &NOREG);
2066    }
2067}
2068
2069/// `INT3`.
2070///
2071/// Supported operand variants:
2072///
2073/// ```text
2074/// +---+----------+
2075/// | # | Operands |
2076/// +---+----------+
2077/// | 1 | (none)   |
2078/// +---+----------+
2079/// ```
2080pub trait Int3Emitter {
2081    fn int3(&mut self);
2082}
2083
2084impl<'a> Int3Emitter for Assembler<'a> {
2085    fn int3(&mut self) {
2086        self.emit(INT3, &NOREG, &NOREG, &NOREG, &NOREG);
2087    }
2088}
2089
2090/// `IRET`.
2091///
2092/// Supported operand variants:
2093///
2094/// ```text
2095/// +---+----------+
2096/// | # | Operands |
2097/// +---+----------+
2098/// | 1 | (none)   |
2099/// +---+----------+
2100/// ```
2101pub trait IretEmitter {
2102    fn iret(&mut self);
2103}
2104
2105impl<'a> IretEmitter for Assembler<'a> {
2106    fn iret(&mut self) {
2107        self.emit(IRET16, &NOREG, &NOREG, &NOREG, &NOREG);
2108    }
2109}
2110
2111/// `JA`.
2112///
2113/// Supported operand variants:
2114///
2115/// ```text
2116/// +---+----------+
2117/// | # | Operands |
2118/// +---+----------+
2119/// | 1 | Imm      |
2120/// | 2 | Label    |
2121/// | 3 | Sym      |
2122/// +---+----------+
2123/// ```
2124pub trait JaEmitter<A> {
2125    fn ja(&mut self, op0: A);
2126}
2127
2128impl<'a> JaEmitter<Imm> for Assembler<'a> {
2129    fn ja(&mut self, op0: Imm) {
2130        self.emit(JA, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2131    }
2132}
2133
2134impl<'a> JaEmitter<Sym> for Assembler<'a> {
2135    fn ja(&mut self, op0: Sym) {
2136        self.emit(JA, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2137    }
2138}
2139
2140impl<'a> JaEmitter<Label> for Assembler<'a> {
2141    fn ja(&mut self, op0: Label) {
2142        self.emit(JA, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2143    }
2144}
2145
2146/// `JBE`.
2147///
2148/// Supported operand variants:
2149///
2150/// ```text
2151/// +---+----------+
2152/// | # | Operands |
2153/// +---+----------+
2154/// | 1 | Imm      |
2155/// | 2 | Label    |
2156/// | 3 | Sym      |
2157/// +---+----------+
2158/// ```
2159pub trait JbeEmitter<A> {
2160    fn jbe(&mut self, op0: A);
2161}
2162
2163impl<'a> JbeEmitter<Imm> for Assembler<'a> {
2164    fn jbe(&mut self, op0: Imm) {
2165        self.emit(JBE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2166    }
2167}
2168
2169impl<'a> JbeEmitter<Sym> for Assembler<'a> {
2170    fn jbe(&mut self, op0: Sym) {
2171        self.emit(JBE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2172    }
2173}
2174
2175impl<'a> JbeEmitter<Label> for Assembler<'a> {
2176    fn jbe(&mut self, op0: Label) {
2177        self.emit(JBE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2178    }
2179}
2180
2181/// `JC`.
2182///
2183/// Supported operand variants:
2184///
2185/// ```text
2186/// +---+----------+
2187/// | # | Operands |
2188/// +---+----------+
2189/// | 1 | Imm      |
2190/// | 2 | Label    |
2191/// | 3 | Sym      |
2192/// +---+----------+
2193/// ```
2194pub trait JcEmitter<A> {
2195    fn jc(&mut self, op0: A);
2196}
2197
2198impl<'a> JcEmitter<Imm> for Assembler<'a> {
2199    fn jc(&mut self, op0: Imm) {
2200        self.emit(JC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2201    }
2202}
2203
2204impl<'a> JcEmitter<Sym> for Assembler<'a> {
2205    fn jc(&mut self, op0: Sym) {
2206        self.emit(JC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2207    }
2208}
2209
2210impl<'a> JcEmitter<Label> for Assembler<'a> {
2211    fn jc(&mut self, op0: Label) {
2212        self.emit(JC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2213    }
2214}
2215
2216/// `JCXZ`.
2217///
2218/// Supported operand variants:
2219///
2220/// ```text
2221/// +---+----------+
2222/// | # | Operands |
2223/// +---+----------+
2224/// | 1 | Imm      |
2225/// | 2 | Label    |
2226/// | 3 | Sym      |
2227/// +---+----------+
2228/// ```
2229pub trait JcxzEmitter<A> {
2230    fn jcxz(&mut self, op0: A);
2231}
2232
2233impl<'a> JcxzEmitter<Imm> for Assembler<'a> {
2234    fn jcxz(&mut self, op0: Imm) {
2235        self.emit(JCXZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2236    }
2237}
2238
2239impl<'a> JcxzEmitter<Sym> for Assembler<'a> {
2240    fn jcxz(&mut self, op0: Sym) {
2241        self.emit(JCXZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2242    }
2243}
2244
2245impl<'a> JcxzEmitter<Label> for Assembler<'a> {
2246    fn jcxz(&mut self, op0: Label) {
2247        self.emit(JCXZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2248    }
2249}
2250
2251/// `JG`.
2252///
2253/// Supported operand variants:
2254///
2255/// ```text
2256/// +---+----------+
2257/// | # | Operands |
2258/// +---+----------+
2259/// | 1 | Imm      |
2260/// | 2 | Label    |
2261/// | 3 | Sym      |
2262/// +---+----------+
2263/// ```
2264pub trait JgEmitter<A> {
2265    fn jg(&mut self, op0: A);
2266}
2267
2268impl<'a> JgEmitter<Imm> for Assembler<'a> {
2269    fn jg(&mut self, op0: Imm) {
2270        self.emit(JG, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2271    }
2272}
2273
2274impl<'a> JgEmitter<Sym> for Assembler<'a> {
2275    fn jg(&mut self, op0: Sym) {
2276        self.emit(JG, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2277    }
2278}
2279
2280impl<'a> JgEmitter<Label> for Assembler<'a> {
2281    fn jg(&mut self, op0: Label) {
2282        self.emit(JG, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2283    }
2284}
2285
2286/// `JGE`.
2287///
2288/// Supported operand variants:
2289///
2290/// ```text
2291/// +---+----------+
2292/// | # | Operands |
2293/// +---+----------+
2294/// | 1 | Imm      |
2295/// | 2 | Label    |
2296/// | 3 | Sym      |
2297/// +---+----------+
2298/// ```
2299pub trait JgeEmitter<A> {
2300    fn jge(&mut self, op0: A);
2301}
2302
2303impl<'a> JgeEmitter<Imm> for Assembler<'a> {
2304    fn jge(&mut self, op0: Imm) {
2305        self.emit(JGE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2306    }
2307}
2308
2309impl<'a> JgeEmitter<Sym> for Assembler<'a> {
2310    fn jge(&mut self, op0: Sym) {
2311        self.emit(JGE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2312    }
2313}
2314
2315impl<'a> JgeEmitter<Label> for Assembler<'a> {
2316    fn jge(&mut self, op0: Label) {
2317        self.emit(JGE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2318    }
2319}
2320
2321/// `JL`.
2322///
2323/// Supported operand variants:
2324///
2325/// ```text
2326/// +---+----------+
2327/// | # | Operands |
2328/// +---+----------+
2329/// | 1 | Imm      |
2330/// | 2 | Label    |
2331/// | 3 | Sym      |
2332/// +---+----------+
2333/// ```
2334pub trait JlEmitter<A> {
2335    fn jl(&mut self, op0: A);
2336}
2337
2338impl<'a> JlEmitter<Imm> for Assembler<'a> {
2339    fn jl(&mut self, op0: Imm) {
2340        self.emit(JL, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2341    }
2342}
2343
2344impl<'a> JlEmitter<Sym> for Assembler<'a> {
2345    fn jl(&mut self, op0: Sym) {
2346        self.emit(JL, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2347    }
2348}
2349
2350impl<'a> JlEmitter<Label> for Assembler<'a> {
2351    fn jl(&mut self, op0: Label) {
2352        self.emit(JL, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2353    }
2354}
2355
2356/// `JLE`.
2357///
2358/// Supported operand variants:
2359///
2360/// ```text
2361/// +---+----------+
2362/// | # | Operands |
2363/// +---+----------+
2364/// | 1 | Imm      |
2365/// | 2 | Label    |
2366/// | 3 | Sym      |
2367/// +---+----------+
2368/// ```
2369pub trait JleEmitter<A> {
2370    fn jle(&mut self, op0: A);
2371}
2372
2373impl<'a> JleEmitter<Imm> for Assembler<'a> {
2374    fn jle(&mut self, op0: Imm) {
2375        self.emit(JLE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2376    }
2377}
2378
2379impl<'a> JleEmitter<Sym> for Assembler<'a> {
2380    fn jle(&mut self, op0: Sym) {
2381        self.emit(JLE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2382    }
2383}
2384
2385impl<'a> JleEmitter<Label> for Assembler<'a> {
2386    fn jle(&mut self, op0: Label) {
2387        self.emit(JLE, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2388    }
2389}
2390
2391/// `JMP`.
2392///
2393/// Supported operand variants:
2394///
2395/// ```text
2396/// +---+----------+
2397/// | # | Operands |
2398/// +---+----------+
2399/// | 1 | Gpq      |
2400/// | 2 | Imm      |
2401/// | 3 | Label    |
2402/// | 4 | Mem      |
2403/// | 5 | Sym      |
2404/// +---+----------+
2405/// ```
2406pub trait JmpEmitter<A> {
2407    fn jmp(&mut self, op0: A);
2408}
2409
2410impl<'a> JmpEmitter<Imm> for Assembler<'a> {
2411    fn jmp(&mut self, op0: Imm) {
2412        self.emit(JMP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2413    }
2414}
2415
2416impl<'a> JmpEmitter<Sym> for Assembler<'a> {
2417    fn jmp(&mut self, op0: Sym) {
2418        self.emit(JMP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2419    }
2420}
2421
2422impl<'a> JmpEmitter<Label> for Assembler<'a> {
2423    fn jmp(&mut self, op0: Label) {
2424        self.emit(JMP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2425    }
2426}
2427
2428impl<'a> JmpEmitter<Gpq> for Assembler<'a> {
2429    fn jmp(&mut self, op0: Gpq) {
2430        self.emit(JMPR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2431    }
2432}
2433
2434impl<'a> JmpEmitter<Mem> for Assembler<'a> {
2435    fn jmp(&mut self, op0: Mem) {
2436        self.emit(JMPM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2437    }
2438}
2439
2440/// `JMPF`.
2441///
2442/// Supported operand variants:
2443///
2444/// ```text
2445/// +---+----------+
2446/// | # | Operands |
2447/// +---+----------+
2448/// | 1 | Mem      |
2449/// +---+----------+
2450/// ```
2451pub trait JmpfEmitter<A> {
2452    fn jmpf(&mut self, op0: A);
2453}
2454
2455impl<'a> JmpfEmitter<Mem> for Assembler<'a> {
2456    fn jmpf(&mut self, op0: Mem) {
2457        self.emit(JMPF16M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2458    }
2459}
2460
2461/// `JNC`.
2462///
2463/// Supported operand variants:
2464///
2465/// ```text
2466/// +---+----------+
2467/// | # | Operands |
2468/// +---+----------+
2469/// | 1 | Imm      |
2470/// | 2 | Label    |
2471/// | 3 | Sym      |
2472/// +---+----------+
2473/// ```
2474pub trait JncEmitter<A> {
2475    fn jnc(&mut self, op0: A);
2476}
2477
2478impl<'a> JncEmitter<Imm> for Assembler<'a> {
2479    fn jnc(&mut self, op0: Imm) {
2480        self.emit(JNC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2481    }
2482}
2483
2484impl<'a> JncEmitter<Sym> for Assembler<'a> {
2485    fn jnc(&mut self, op0: Sym) {
2486        self.emit(JNC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2487    }
2488}
2489
2490impl<'a> JncEmitter<Label> for Assembler<'a> {
2491    fn jnc(&mut self, op0: Label) {
2492        self.emit(JNC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2493    }
2494}
2495
2496/// `JNO`.
2497///
2498/// Supported operand variants:
2499///
2500/// ```text
2501/// +---+----------+
2502/// | # | Operands |
2503/// +---+----------+
2504/// | 1 | Imm      |
2505/// | 2 | Label    |
2506/// | 3 | Sym      |
2507/// +---+----------+
2508/// ```
2509pub trait JnoEmitter<A> {
2510    fn jno(&mut self, op0: A);
2511}
2512
2513impl<'a> JnoEmitter<Imm> for Assembler<'a> {
2514    fn jno(&mut self, op0: Imm) {
2515        self.emit(JNO, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2516    }
2517}
2518
2519impl<'a> JnoEmitter<Sym> for Assembler<'a> {
2520    fn jno(&mut self, op0: Sym) {
2521        self.emit(JNO, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2522    }
2523}
2524
2525impl<'a> JnoEmitter<Label> for Assembler<'a> {
2526    fn jno(&mut self, op0: Label) {
2527        self.emit(JNO, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2528    }
2529}
2530
2531/// `JNP`.
2532///
2533/// Supported operand variants:
2534///
2535/// ```text
2536/// +---+----------+
2537/// | # | Operands |
2538/// +---+----------+
2539/// | 1 | Imm      |
2540/// | 2 | Label    |
2541/// | 3 | Sym      |
2542/// +---+----------+
2543/// ```
2544pub trait JnpEmitter<A> {
2545    fn jnp(&mut self, op0: A);
2546}
2547
2548impl<'a> JnpEmitter<Imm> for Assembler<'a> {
2549    fn jnp(&mut self, op0: Imm) {
2550        self.emit(JNP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2551    }
2552}
2553
2554impl<'a> JnpEmitter<Sym> for Assembler<'a> {
2555    fn jnp(&mut self, op0: Sym) {
2556        self.emit(JNP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2557    }
2558}
2559
2560impl<'a> JnpEmitter<Label> for Assembler<'a> {
2561    fn jnp(&mut self, op0: Label) {
2562        self.emit(JNP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2563    }
2564}
2565
2566/// `JNS`.
2567///
2568/// Supported operand variants:
2569///
2570/// ```text
2571/// +---+----------+
2572/// | # | Operands |
2573/// +---+----------+
2574/// | 1 | Imm      |
2575/// | 2 | Label    |
2576/// | 3 | Sym      |
2577/// +---+----------+
2578/// ```
2579pub trait JnsEmitter<A> {
2580    fn jns(&mut self, op0: A);
2581}
2582
2583impl<'a> JnsEmitter<Imm> for Assembler<'a> {
2584    fn jns(&mut self, op0: Imm) {
2585        self.emit(JNS, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2586    }
2587}
2588
2589impl<'a> JnsEmitter<Sym> for Assembler<'a> {
2590    fn jns(&mut self, op0: Sym) {
2591        self.emit(JNS, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2592    }
2593}
2594
2595impl<'a> JnsEmitter<Label> for Assembler<'a> {
2596    fn jns(&mut self, op0: Label) {
2597        self.emit(JNS, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2598    }
2599}
2600
2601/// `JNZ`.
2602///
2603/// Supported operand variants:
2604///
2605/// ```text
2606/// +---+----------+
2607/// | # | Operands |
2608/// +---+----------+
2609/// | 1 | Imm      |
2610/// | 2 | Label    |
2611/// | 3 | Sym      |
2612/// +---+----------+
2613/// ```
2614pub trait JnzEmitter<A> {
2615    fn jnz(&mut self, op0: A);
2616}
2617
2618impl<'a> JnzEmitter<Imm> for Assembler<'a> {
2619    fn jnz(&mut self, op0: Imm) {
2620        self.emit(JNZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2621    }
2622}
2623
2624impl<'a> JnzEmitter<Sym> for Assembler<'a> {
2625    fn jnz(&mut self, op0: Sym) {
2626        self.emit(JNZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2627    }
2628}
2629
2630impl<'a> JnzEmitter<Label> for Assembler<'a> {
2631    fn jnz(&mut self, op0: Label) {
2632        self.emit(JNZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2633    }
2634}
2635
2636/// `JO`.
2637///
2638/// Supported operand variants:
2639///
2640/// ```text
2641/// +---+----------+
2642/// | # | Operands |
2643/// +---+----------+
2644/// | 1 | Imm      |
2645/// | 2 | Label    |
2646/// | 3 | Sym      |
2647/// +---+----------+
2648/// ```
2649pub trait JoEmitter<A> {
2650    fn jo(&mut self, op0: A);
2651}
2652
2653impl<'a> JoEmitter<Imm> for Assembler<'a> {
2654    fn jo(&mut self, op0: Imm) {
2655        self.emit(JO, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2656    }
2657}
2658
2659impl<'a> JoEmitter<Sym> for Assembler<'a> {
2660    fn jo(&mut self, op0: Sym) {
2661        self.emit(JO, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2662    }
2663}
2664
2665impl<'a> JoEmitter<Label> for Assembler<'a> {
2666    fn jo(&mut self, op0: Label) {
2667        self.emit(JO, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2668    }
2669}
2670
2671/// `JP`.
2672///
2673/// Supported operand variants:
2674///
2675/// ```text
2676/// +---+----------+
2677/// | # | Operands |
2678/// +---+----------+
2679/// | 1 | Imm      |
2680/// | 2 | Label    |
2681/// | 3 | Sym      |
2682/// +---+----------+
2683/// ```
2684pub trait JpEmitter<A> {
2685    fn jp(&mut self, op0: A);
2686}
2687
2688impl<'a> JpEmitter<Imm> for Assembler<'a> {
2689    fn jp(&mut self, op0: Imm) {
2690        self.emit(JP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2691    }
2692}
2693
2694impl<'a> JpEmitter<Sym> for Assembler<'a> {
2695    fn jp(&mut self, op0: Sym) {
2696        self.emit(JP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2697    }
2698}
2699
2700impl<'a> JpEmitter<Label> for Assembler<'a> {
2701    fn jp(&mut self, op0: Label) {
2702        self.emit(JP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2703    }
2704}
2705
2706/// `JS`.
2707///
2708/// Supported operand variants:
2709///
2710/// ```text
2711/// +---+----------+
2712/// | # | Operands |
2713/// +---+----------+
2714/// | 1 | Imm      |
2715/// | 2 | Label    |
2716/// | 3 | Sym      |
2717/// +---+----------+
2718/// ```
2719pub trait JsEmitter<A> {
2720    fn js(&mut self, op0: A);
2721}
2722
2723impl<'a> JsEmitter<Imm> for Assembler<'a> {
2724    fn js(&mut self, op0: Imm) {
2725        self.emit(JS, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2726    }
2727}
2728
2729impl<'a> JsEmitter<Sym> for Assembler<'a> {
2730    fn js(&mut self, op0: Sym) {
2731        self.emit(JS, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2732    }
2733}
2734
2735impl<'a> JsEmitter<Label> for Assembler<'a> {
2736    fn js(&mut self, op0: Label) {
2737        self.emit(JS, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2738    }
2739}
2740
2741/// `JZ`.
2742///
2743/// Supported operand variants:
2744///
2745/// ```text
2746/// +---+----------+
2747/// | # | Operands |
2748/// +---+----------+
2749/// | 1 | Imm      |
2750/// | 2 | Label    |
2751/// | 3 | Sym      |
2752/// +---+----------+
2753/// ```
2754pub trait JzEmitter<A> {
2755    fn jz(&mut self, op0: A);
2756}
2757
2758impl<'a> JzEmitter<Imm> for Assembler<'a> {
2759    fn jz(&mut self, op0: Imm) {
2760        self.emit(JZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2761    }
2762}
2763
2764impl<'a> JzEmitter<Sym> for Assembler<'a> {
2765    fn jz(&mut self, op0: Sym) {
2766        self.emit(JZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2767    }
2768}
2769
2770impl<'a> JzEmitter<Label> for Assembler<'a> {
2771    fn jz(&mut self, op0: Label) {
2772        self.emit(JZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2773    }
2774}
2775
2776/// `JCC`.
2777///
2778/// Supported operand variants:
2779///
2780/// ```text
2781/// +---+----------+
2782/// | # | Operands |
2783/// +---+----------+
2784/// | 1 | Imm      |
2785/// | 2 | Label    |
2786/// | 3 | Sym      |
2787/// +---+----------+
2788/// ```
2789pub trait JccEmitter<A> {
2790    fn jcc(&mut self, op0: A);
2791}
2792
2793impl<'a> JccEmitter<Imm> for Assembler<'a> {
2794    fn jcc(&mut self, op0: Imm) {
2795        self.emit(JCC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2796    }
2797}
2798
2799impl<'a> JccEmitter<Sym> for Assembler<'a> {
2800    fn jcc(&mut self, op0: Sym) {
2801        self.emit(JCC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2802    }
2803}
2804
2805impl<'a> JccEmitter<Label> for Assembler<'a> {
2806    fn jcc(&mut self, op0: Label) {
2807        self.emit(JCC, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2808    }
2809}
2810
2811/// `LAHF`.
2812///
2813/// Supported operand variants:
2814///
2815/// ```text
2816/// +---+----------+
2817/// | # | Operands |
2818/// +---+----------+
2819/// | 1 | (none)   |
2820/// +---+----------+
2821/// ```
2822pub trait LahfEmitter {
2823    fn lahf(&mut self);
2824}
2825
2826impl<'a> LahfEmitter for Assembler<'a> {
2827    fn lahf(&mut self) {
2828        self.emit(LAHF, &NOREG, &NOREG, &NOREG, &NOREG);
2829    }
2830}
2831
2832/// `LAR`.
2833///
2834/// Supported operand variants:
2835///
2836/// ```text
2837/// +---+----------+
2838/// | # | Operands |
2839/// +---+----------+
2840/// | 1 | Gpd, Gpw |
2841/// | 2 | Gpd, Mem |
2842/// | 3 | Gpq, Gpw |
2843/// | 4 | Gpq, Mem |
2844/// | 5 | Gpw, Gpw |
2845/// | 6 | Gpw, Mem |
2846/// +---+----------+
2847/// ```
2848pub trait LarEmitter<A, B> {
2849    fn lar(&mut self, op0: A, op1: B);
2850}
2851
2852impl<'a> LarEmitter<Gpw, Gpw> for Assembler<'a> {
2853    fn lar(&mut self, op0: Gpw, op1: Gpw) {
2854        self.emit(LAR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2855    }
2856}
2857
2858impl<'a> LarEmitter<Gpw, Mem> for Assembler<'a> {
2859    fn lar(&mut self, op0: Gpw, op1: Mem) {
2860        self.emit(LAR16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2861    }
2862}
2863
2864impl<'a> LarEmitter<Gpd, Gpw> for Assembler<'a> {
2865    fn lar(&mut self, op0: Gpd, op1: Gpw) {
2866        self.emit(LAR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2867    }
2868}
2869
2870impl<'a> LarEmitter<Gpd, Mem> for Assembler<'a> {
2871    fn lar(&mut self, op0: Gpd, op1: Mem) {
2872        self.emit(LAR32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2873    }
2874}
2875
2876impl<'a> LarEmitter<Gpq, Gpw> for Assembler<'a> {
2877    fn lar(&mut self, op0: Gpq, op1: Gpw) {
2878        self.emit(LAR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2879    }
2880}
2881
2882impl<'a> LarEmitter<Gpq, Mem> for Assembler<'a> {
2883    fn lar(&mut self, op0: Gpq, op1: Mem) {
2884        self.emit(LAR64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2885    }
2886}
2887
2888/// `LDTILECFG`.
2889///
2890/// Supported operand variants:
2891///
2892/// ```text
2893/// +---+----------+
2894/// | # | Operands |
2895/// +---+----------+
2896/// | 1 | Mem      |
2897/// +---+----------+
2898/// ```
2899pub trait LdtilecfgEmitter<A> {
2900    fn ldtilecfg(&mut self, op0: A);
2901}
2902
2903impl<'a> LdtilecfgEmitter<Mem> for Assembler<'a> {
2904    fn ldtilecfg(&mut self, op0: Mem) {
2905        self.emit(LDTILECFGM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2906    }
2907}
2908
2909/// `LEA`.
2910///
2911/// Supported operand variants:
2912///
2913/// ```text
2914/// +---+----------+
2915/// | # | Operands |
2916/// +---+----------+
2917/// | 1 | Gpd, Mem |
2918/// | 2 | Gpq, Mem |
2919/// | 3 | Gpw, Mem |
2920/// +---+----------+
2921/// ```
2922pub trait LeaEmitter<A, B> {
2923    fn lea(&mut self, op0: A, op1: B);
2924}
2925
2926impl<'a> LeaEmitter<Gpw, Mem> for Assembler<'a> {
2927    fn lea(&mut self, op0: Gpw, op1: Mem) {
2928        self.emit(LEA16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2929    }
2930}
2931
2932impl<'a> LeaEmitter<Gpd, Mem> for Assembler<'a> {
2933    fn lea(&mut self, op0: Gpd, op1: Mem) {
2934        self.emit(LEA32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2935    }
2936}
2937
2938impl<'a> LeaEmitter<Gpq, Mem> for Assembler<'a> {
2939    fn lea(&mut self, op0: Gpq, op1: Mem) {
2940        self.emit(LEA64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2941    }
2942}
2943
2944/// `LEAVE`.
2945///
2946/// Supported operand variants:
2947///
2948/// ```text
2949/// +---+----------+
2950/// | # | Operands |
2951/// +---+----------+
2952/// | 1 | (none)   |
2953/// +---+----------+
2954/// ```
2955pub trait LeaveEmitter {
2956    fn leave(&mut self);
2957}
2958
2959impl<'a> LeaveEmitter for Assembler<'a> {
2960    fn leave(&mut self) {
2961        self.emit(LEAVE16, &NOREG, &NOREG, &NOREG, &NOREG);
2962    }
2963}
2964
2965/// `LFS`.
2966///
2967/// Supported operand variants:
2968///
2969/// ```text
2970/// +---+----------+
2971/// | # | Operands |
2972/// +---+----------+
2973/// | 1 | Gpd, Mem |
2974/// | 2 | Gpq, Mem |
2975/// | 3 | Gpw, Mem |
2976/// +---+----------+
2977/// ```
2978pub trait LfsEmitter<A, B> {
2979    fn lfs(&mut self, op0: A, op1: B);
2980}
2981
2982impl<'a> LfsEmitter<Gpw, Mem> for Assembler<'a> {
2983    fn lfs(&mut self, op0: Gpw, op1: Mem) {
2984        self.emit(LFS16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2985    }
2986}
2987
2988impl<'a> LfsEmitter<Gpd, Mem> for Assembler<'a> {
2989    fn lfs(&mut self, op0: Gpd, op1: Mem) {
2990        self.emit(LFS32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2991    }
2992}
2993
2994impl<'a> LfsEmitter<Gpq, Mem> for Assembler<'a> {
2995    fn lfs(&mut self, op0: Gpq, op1: Mem) {
2996        self.emit(LFS64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
2997    }
2998}
2999
3000/// `LGDT`.
3001///
3002/// Supported operand variants:
3003///
3004/// ```text
3005/// +---+----------+
3006/// | # | Operands |
3007/// +---+----------+
3008/// | 1 | Mem      |
3009/// +---+----------+
3010/// ```
3011pub trait LgdtEmitter<A> {
3012    fn lgdt(&mut self, op0: A);
3013}
3014
3015impl<'a> LgdtEmitter<Mem> for Assembler<'a> {
3016    fn lgdt(&mut self, op0: Mem) {
3017        self.emit(LGDTM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3018    }
3019}
3020
3021/// `LGS`.
3022///
3023/// Supported operand variants:
3024///
3025/// ```text
3026/// +---+----------+
3027/// | # | Operands |
3028/// +---+----------+
3029/// | 1 | Gpd, Mem |
3030/// | 2 | Gpq, Mem |
3031/// | 3 | Gpw, Mem |
3032/// +---+----------+
3033/// ```
3034pub trait LgsEmitter<A, B> {
3035    fn lgs(&mut self, op0: A, op1: B);
3036}
3037
3038impl<'a> LgsEmitter<Gpw, Mem> for Assembler<'a> {
3039    fn lgs(&mut self, op0: Gpw, op1: Mem) {
3040        self.emit(LGS16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3041    }
3042}
3043
3044impl<'a> LgsEmitter<Gpd, Mem> for Assembler<'a> {
3045    fn lgs(&mut self, op0: Gpd, op1: Mem) {
3046        self.emit(LGS32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3047    }
3048}
3049
3050impl<'a> LgsEmitter<Gpq, Mem> for Assembler<'a> {
3051    fn lgs(&mut self, op0: Gpq, op1: Mem) {
3052        self.emit(LGS64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3053    }
3054}
3055
3056/// `LIDT`.
3057///
3058/// Supported operand variants:
3059///
3060/// ```text
3061/// +---+----------+
3062/// | # | Operands |
3063/// +---+----------+
3064/// | 1 | Mem      |
3065/// +---+----------+
3066/// ```
3067pub trait LidtEmitter<A> {
3068    fn lidt(&mut self, op0: A);
3069}
3070
3071impl<'a> LidtEmitter<Mem> for Assembler<'a> {
3072    fn lidt(&mut self, op0: Mem) {
3073        self.emit(LIDTM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3074    }
3075}
3076
3077/// `LLDT`.
3078///
3079/// Supported operand variants:
3080///
3081/// ```text
3082/// +---+----------+
3083/// | # | Operands |
3084/// +---+----------+
3085/// | 1 | Gpd      |
3086/// | 2 | Mem      |
3087/// +---+----------+
3088/// ```
3089pub trait LldtEmitter<A> {
3090    fn lldt(&mut self, op0: A);
3091}
3092
3093impl<'a> LldtEmitter<Gpd> for Assembler<'a> {
3094    fn lldt(&mut self, op0: Gpd) {
3095        self.emit(LLDTR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3096    }
3097}
3098
3099impl<'a> LldtEmitter<Mem> for Assembler<'a> {
3100    fn lldt(&mut self, op0: Mem) {
3101        self.emit(LLDTM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3102    }
3103}
3104
3105/// `LMSW`.
3106///
3107/// Supported operand variants:
3108///
3109/// ```text
3110/// +---+----------+
3111/// | # | Operands |
3112/// +---+----------+
3113/// | 1 | Gpd      |
3114/// | 2 | Mem      |
3115/// +---+----------+
3116/// ```
3117pub trait LmswEmitter<A> {
3118    fn lmsw(&mut self, op0: A);
3119}
3120
3121impl<'a> LmswEmitter<Gpd> for Assembler<'a> {
3122    fn lmsw(&mut self, op0: Gpd) {
3123        self.emit(LMSWR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3124    }
3125}
3126
3127impl<'a> LmswEmitter<Mem> for Assembler<'a> {
3128    fn lmsw(&mut self, op0: Mem) {
3129        self.emit(LMSWM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3130    }
3131}
3132
3133/// `LODS`.
3134///
3135/// Supported operand variants:
3136///
3137/// ```text
3138/// +---+----------+
3139/// | # | Operands |
3140/// +---+----------+
3141/// | 1 | (none)   |
3142/// +---+----------+
3143/// ```
3144pub trait LodsEmitter {
3145    fn lods(&mut self);
3146}
3147
3148impl<'a> LodsEmitter for Assembler<'a> {
3149    fn lods(&mut self) {
3150        self.emit(LODS8, &NOREG, &NOREG, &NOREG, &NOREG);
3151    }
3152}
3153
3154/// `LOOP`.
3155///
3156/// Supported operand variants:
3157///
3158/// ```text
3159/// +---+----------+
3160/// | # | Operands |
3161/// +---+----------+
3162/// | 1 | Imm      |
3163/// | 2 | Label    |
3164/// | 3 | Sym      |
3165/// +---+----------+
3166/// ```
3167pub trait LoopEmitter<A> {
3168    fn r#loop(&mut self, op0: A);
3169}
3170
3171impl<'a> LoopEmitter<Imm> for Assembler<'a> {
3172    fn r#loop(&mut self, op0: Imm) {
3173        self.emit(LOOP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3174    }
3175}
3176
3177impl<'a> LoopEmitter<Sym> for Assembler<'a> {
3178    fn r#loop(&mut self, op0: Sym) {
3179        self.emit(LOOP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3180    }
3181}
3182
3183impl<'a> LoopEmitter<Label> for Assembler<'a> {
3184    fn r#loop(&mut self, op0: Label) {
3185        self.emit(LOOP, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3186    }
3187}
3188
3189/// `LOOPNZ`.
3190///
3191/// Supported operand variants:
3192///
3193/// ```text
3194/// +---+----------+
3195/// | # | Operands |
3196/// +---+----------+
3197/// | 1 | Imm      |
3198/// | 2 | Label    |
3199/// | 3 | Sym      |
3200/// +---+----------+
3201/// ```
3202pub trait LoopnzEmitter<A> {
3203    fn loopnz(&mut self, op0: A);
3204}
3205
3206impl<'a> LoopnzEmitter<Imm> for Assembler<'a> {
3207    fn loopnz(&mut self, op0: Imm) {
3208        self.emit(LOOPNZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3209    }
3210}
3211
3212impl<'a> LoopnzEmitter<Sym> for Assembler<'a> {
3213    fn loopnz(&mut self, op0: Sym) {
3214        self.emit(LOOPNZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3215    }
3216}
3217
3218impl<'a> LoopnzEmitter<Label> for Assembler<'a> {
3219    fn loopnz(&mut self, op0: Label) {
3220        self.emit(LOOPNZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3221    }
3222}
3223
3224/// `LOOPZ`.
3225///
3226/// Supported operand variants:
3227///
3228/// ```text
3229/// +---+----------+
3230/// | # | Operands |
3231/// +---+----------+
3232/// | 1 | Imm      |
3233/// | 2 | Label    |
3234/// | 3 | Sym      |
3235/// +---+----------+
3236/// ```
3237pub trait LoopzEmitter<A> {
3238    fn loopz(&mut self, op0: A);
3239}
3240
3241impl<'a> LoopzEmitter<Imm> for Assembler<'a> {
3242    fn loopz(&mut self, op0: Imm) {
3243        self.emit(LOOPZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3244    }
3245}
3246
3247impl<'a> LoopzEmitter<Sym> for Assembler<'a> {
3248    fn loopz(&mut self, op0: Sym) {
3249        self.emit(LOOPZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3250    }
3251}
3252
3253impl<'a> LoopzEmitter<Label> for Assembler<'a> {
3254    fn loopz(&mut self, op0: Label) {
3255        self.emit(LOOPZ, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3256    }
3257}
3258
3259/// `LSL`.
3260///
3261/// Supported operand variants:
3262///
3263/// ```text
3264/// +---+----------+
3265/// | # | Operands |
3266/// +---+----------+
3267/// | 1 | Gpd, Gpw |
3268/// | 2 | Gpd, Mem |
3269/// | 3 | Gpq, Gpw |
3270/// | 4 | Gpq, Mem |
3271/// | 5 | Gpw, Gpw |
3272/// | 6 | Gpw, Mem |
3273/// +---+----------+
3274/// ```
3275pub trait LslEmitter<A, B> {
3276    fn lsl(&mut self, op0: A, op1: B);
3277}
3278
3279impl<'a> LslEmitter<Gpw, Gpw> for Assembler<'a> {
3280    fn lsl(&mut self, op0: Gpw, op1: Gpw) {
3281        self.emit(LSL16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3282    }
3283}
3284
3285impl<'a> LslEmitter<Gpw, Mem> for Assembler<'a> {
3286    fn lsl(&mut self, op0: Gpw, op1: Mem) {
3287        self.emit(LSL16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3288    }
3289}
3290
3291impl<'a> LslEmitter<Gpd, Gpw> for Assembler<'a> {
3292    fn lsl(&mut self, op0: Gpd, op1: Gpw) {
3293        self.emit(LSL32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3294    }
3295}
3296
3297impl<'a> LslEmitter<Gpd, Mem> for Assembler<'a> {
3298    fn lsl(&mut self, op0: Gpd, op1: Mem) {
3299        self.emit(LSL32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3300    }
3301}
3302
3303impl<'a> LslEmitter<Gpq, Gpw> for Assembler<'a> {
3304    fn lsl(&mut self, op0: Gpq, op1: Gpw) {
3305        self.emit(LSL64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3306    }
3307}
3308
3309impl<'a> LslEmitter<Gpq, Mem> for Assembler<'a> {
3310    fn lsl(&mut self, op0: Gpq, op1: Mem) {
3311        self.emit(LSL64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3312    }
3313}
3314
3315/// `LSS`.
3316///
3317/// Supported operand variants:
3318///
3319/// ```text
3320/// +---+----------+
3321/// | # | Operands |
3322/// +---+----------+
3323/// | 1 | Gpd, Mem |
3324/// | 2 | Gpq, Mem |
3325/// | 3 | Gpw, Mem |
3326/// +---+----------+
3327/// ```
3328pub trait LssEmitter<A, B> {
3329    fn lss(&mut self, op0: A, op1: B);
3330}
3331
3332impl<'a> LssEmitter<Gpw, Mem> for Assembler<'a> {
3333    fn lss(&mut self, op0: Gpw, op1: Mem) {
3334        self.emit(LSS16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3335    }
3336}
3337
3338impl<'a> LssEmitter<Gpd, Mem> for Assembler<'a> {
3339    fn lss(&mut self, op0: Gpd, op1: Mem) {
3340        self.emit(LSS32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3341    }
3342}
3343
3344impl<'a> LssEmitter<Gpq, Mem> for Assembler<'a> {
3345    fn lss(&mut self, op0: Gpq, op1: Mem) {
3346        self.emit(LSS64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3347    }
3348}
3349
3350/// `LTR`.
3351///
3352/// Supported operand variants:
3353///
3354/// ```text
3355/// +---+----------+
3356/// | # | Operands |
3357/// +---+----------+
3358/// | 1 | Gpd      |
3359/// | 2 | Mem      |
3360/// +---+----------+
3361/// ```
3362pub trait LtrEmitter<A> {
3363    fn ltr(&mut self, op0: A);
3364}
3365
3366impl<'a> LtrEmitter<Gpd> for Assembler<'a> {
3367    fn ltr(&mut self, op0: Gpd) {
3368        self.emit(LTRR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3369    }
3370}
3371
3372impl<'a> LtrEmitter<Mem> for Assembler<'a> {
3373    fn ltr(&mut self, op0: Mem) {
3374        self.emit(LTRM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
3375    }
3376}
3377
3378/// `MOV`.
3379///
3380/// Supported operand variants:
3381///
3382/// ```text
3383/// +----+------------------------+
3384/// | #  | Operands               |
3385/// +----+------------------------+
3386/// | 1  | AbsoluteAddress, GpbLo |
3387/// | 2  | AbsoluteAddress, Gpd   |
3388/// | 3  | AbsoluteAddress, Gpq   |
3389/// | 4  | AbsoluteAddress, Gpw   |
3390/// | 5  | GpbLo, AbsoluteAddress |
3391/// | 6  | GpbLo, GpbLo           |
3392/// | 7  | GpbLo, Imm             |
3393/// | 8  | GpbLo, Mem             |
3394/// | 9  | Gpd, AbsoluteAddress   |
3395/// | 10 | Gpd, Gpd               |
3396/// | 11 | Gpd, Imm               |
3397/// | 12 | Gpd, Mem               |
3398/// | 13 | Gpq, AbsoluteAddress   |
3399/// | 14 | Gpq, Gpq               |
3400/// | 15 | Gpq, Imm               |
3401/// | 16 | Gpq, Mem               |
3402/// | 17 | Gpw, AbsoluteAddress   |
3403/// | 18 | Gpw, Gpw               |
3404/// | 19 | Gpw, Imm               |
3405/// | 20 | Gpw, Mem               |
3406/// | 21 | Mem, GpbLo             |
3407/// | 22 | Mem, Gpd               |
3408/// | 23 | Mem, Gpq               |
3409/// | 24 | Mem, Gpw               |
3410/// | 25 | Mem, Imm               |
3411/// +----+------------------------+
3412/// ```
3413pub trait MovEmitter<A, B> {
3414    fn mov(&mut self, op0: A, op1: B);
3415}
3416
3417impl<'a> MovEmitter<GpbLo, GpbLo> for Assembler<'a> {
3418    fn mov(&mut self, op0: GpbLo, op1: GpbLo) {
3419        self.emit(MOV8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3420    }
3421}
3422
3423impl<'a> MovEmitter<Mem, GpbLo> for Assembler<'a> {
3424    fn mov(&mut self, op0: Mem, op1: GpbLo) {
3425        self.emit(MOV8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3426    }
3427}
3428
3429impl<'a> MovEmitter<Gpw, Gpw> for Assembler<'a> {
3430    fn mov(&mut self, op0: Gpw, op1: Gpw) {
3431        self.emit(MOV16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3432    }
3433}
3434
3435impl<'a> MovEmitter<Mem, Gpw> for Assembler<'a> {
3436    fn mov(&mut self, op0: Mem, op1: Gpw) {
3437        self.emit(MOV16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3438    }
3439}
3440
3441impl<'a> MovEmitter<Gpd, Gpd> for Assembler<'a> {
3442    fn mov(&mut self, op0: Gpd, op1: Gpd) {
3443        self.emit(MOV32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3444    }
3445}
3446
3447impl<'a> MovEmitter<Mem, Gpd> for Assembler<'a> {
3448    fn mov(&mut self, op0: Mem, op1: Gpd) {
3449        self.emit(MOV32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3450    }
3451}
3452
3453impl<'a> MovEmitter<Gpq, Gpq> for Assembler<'a> {
3454    fn mov(&mut self, op0: Gpq, op1: Gpq) {
3455        self.emit(MOV64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3456    }
3457}
3458
3459impl<'a> MovEmitter<Mem, Gpq> for Assembler<'a> {
3460    fn mov(&mut self, op0: Mem, op1: Gpq) {
3461        self.emit(MOV64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3462    }
3463}
3464
3465impl<'a> MovEmitter<GpbLo, Mem> for Assembler<'a> {
3466    fn mov(&mut self, op0: GpbLo, op1: Mem) {
3467        self.emit(MOV8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3468    }
3469}
3470
3471impl<'a> MovEmitter<Gpw, Mem> for Assembler<'a> {
3472    fn mov(&mut self, op0: Gpw, op1: Mem) {
3473        self.emit(MOV16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3474    }
3475}
3476
3477impl<'a> MovEmitter<Gpd, Mem> for Assembler<'a> {
3478    fn mov(&mut self, op0: Gpd, op1: Mem) {
3479        self.emit(MOV32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3480    }
3481}
3482
3483impl<'a> MovEmitter<Gpq, Mem> for Assembler<'a> {
3484    fn mov(&mut self, op0: Gpq, op1: Mem) {
3485        self.emit(MOV64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3486    }
3487}
3488
3489impl<'a> MovEmitter<GpbLo, AbsoluteAddress> for Assembler<'a> {
3490    fn mov(&mut self, op0: GpbLo, op1: AbsoluteAddress) {
3491        self.emit(MOV8RA, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3492    }
3493}
3494
3495impl<'a> MovEmitter<Gpw, AbsoluteAddress> for Assembler<'a> {
3496    fn mov(&mut self, op0: Gpw, op1: AbsoluteAddress) {
3497        self.emit(MOV16RA, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3498    }
3499}
3500
3501impl<'a> MovEmitter<Gpd, AbsoluteAddress> for Assembler<'a> {
3502    fn mov(&mut self, op0: Gpd, op1: AbsoluteAddress) {
3503        self.emit(MOV32RA, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3504    }
3505}
3506
3507impl<'a> MovEmitter<Gpq, AbsoluteAddress> for Assembler<'a> {
3508    fn mov(&mut self, op0: Gpq, op1: AbsoluteAddress) {
3509        self.emit(MOV64RA, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3510    }
3511}
3512
3513impl<'a> MovEmitter<AbsoluteAddress, GpbLo> for Assembler<'a> {
3514    fn mov(&mut self, op0: AbsoluteAddress, op1: GpbLo) {
3515        self.emit(MOV8AR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3516    }
3517}
3518
3519impl<'a> MovEmitter<AbsoluteAddress, Gpw> for Assembler<'a> {
3520    fn mov(&mut self, op0: AbsoluteAddress, op1: Gpw) {
3521        self.emit(MOV16AR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3522    }
3523}
3524
3525impl<'a> MovEmitter<AbsoluteAddress, Gpd> for Assembler<'a> {
3526    fn mov(&mut self, op0: AbsoluteAddress, op1: Gpd) {
3527        self.emit(MOV32AR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3528    }
3529}
3530
3531impl<'a> MovEmitter<AbsoluteAddress, Gpq> for Assembler<'a> {
3532    fn mov(&mut self, op0: AbsoluteAddress, op1: Gpq) {
3533        self.emit(MOV64AR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3534    }
3535}
3536
3537impl<'a> MovEmitter<GpbLo, Imm> for Assembler<'a> {
3538    fn mov(&mut self, op0: GpbLo, op1: Imm) {
3539        self.emit(MOV8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3540    }
3541}
3542
3543impl<'a> MovEmitter<Gpw, Imm> for Assembler<'a> {
3544    fn mov(&mut self, op0: Gpw, op1: Imm) {
3545        self.emit(MOV16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3546    }
3547}
3548
3549impl<'a> MovEmitter<Gpd, Imm> for Assembler<'a> {
3550    fn mov(&mut self, op0: Gpd, op1: Imm) {
3551        self.emit(MOV32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3552    }
3553}
3554
3555impl<'a> MovEmitter<Gpq, Imm> for Assembler<'a> {
3556    fn mov(&mut self, op0: Gpq, op1: Imm) {
3557        self.emit(MOV64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3558    }
3559}
3560
3561impl<'a> MovEmitter<Mem, Imm> for Assembler<'a> {
3562    fn mov(&mut self, op0: Mem, op1: Imm) {
3563        self.emit(MOV8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
3564    }
3565}
3566
3567/// `MOVS`.
3568///
3569/// Supported operand variants:
3570///
3571/// ```text
3572/// +---+----------+
3573/// | # | Operands |
3574/// +---+----------+
3575/// | 1 | (none)   |
3576/// +---+----------+
3577/// ```
3578pub trait MovsEmitter {
3579    fn movs(&mut self);
3580}
3581
3582impl<'a> MovsEmitter for Assembler<'a> {
3583    fn movs(&mut self) {
3584        self.emit(MOVS8, &NOREG, &NOREG, &NOREG, &NOREG);
3585    }
3586}
3587
3588/// `MOVSX`.
3589///
3590/// Supported operand variants:
3591///
3592/// ```text
3593/// +----+------------+
3594/// | #  | Operands   |
3595/// +----+------------+
3596/// | 1  | Gpd, GpbLo |
3597/// | 2  | Gpd, Gpd   |
3598/// | 3  | Gpd, Gpw   |
3599/// | 4  | Gpd, Mem   |
3600/// | 5  | Gpq, GpbLo |
3601/// | 6  | Gpq, Gpd   |
3602/// | 7  | Gpq, Gpw   |
3603/// | 8  | Gpq, Mem   |
3604/// | 9  | Gpw, GpbLo |
3605/// | 10 | Gpw, Gpd   |
3606/// | 11 | Gpw, Gpw   |
3607/// | 12 | Gpw, Mem   |
3608/// +----+------------+
3609/// ```
3610pub trait MovsxEmitter<A, B> {
3611    fn movsx(&mut self, op0: A, op1: B);
3612}
3613
3614impl<'a> MovsxEmitter<Gpw, Gpd> for Assembler<'a> {
3615    fn movsx(&mut self, op0: Gpw, op1: Gpd) {
3616        self.emit(
3617            MOVSXR16R32,
3618            op0.as_operand(),
3619            op1.as_operand(),
3620            &NOREG,
3621            &NOREG,
3622        );
3623    }
3624}
3625
3626impl<'a> MovsxEmitter<Gpw, Mem> for Assembler<'a> {
3627    fn movsx(&mut self, op0: Gpw, op1: Mem) {
3628        self.emit(
3629            MOVSXR16M32,
3630            op0.as_operand(),
3631            op1.as_operand(),
3632            &NOREG,
3633            &NOREG,
3634        );
3635    }
3636}
3637
3638impl<'a> MovsxEmitter<Gpd, Gpd> for Assembler<'a> {
3639    fn movsx(&mut self, op0: Gpd, op1: Gpd) {
3640        self.emit(
3641            MOVSXR32R32,
3642            op0.as_operand(),
3643            op1.as_operand(),
3644            &NOREG,
3645            &NOREG,
3646        );
3647    }
3648}
3649
3650impl<'a> MovsxEmitter<Gpd, Mem> for Assembler<'a> {
3651    fn movsx(&mut self, op0: Gpd, op1: Mem) {
3652        self.emit(
3653            MOVSXR32M32,
3654            op0.as_operand(),
3655            op1.as_operand(),
3656            &NOREG,
3657            &NOREG,
3658        );
3659    }
3660}
3661
3662impl<'a> MovsxEmitter<Gpq, Gpd> for Assembler<'a> {
3663    fn movsx(&mut self, op0: Gpq, op1: Gpd) {
3664        self.emit(
3665            MOVSXR64R32,
3666            op0.as_operand(),
3667            op1.as_operand(),
3668            &NOREG,
3669            &NOREG,
3670        );
3671    }
3672}
3673
3674impl<'a> MovsxEmitter<Gpq, Mem> for Assembler<'a> {
3675    fn movsx(&mut self, op0: Gpq, op1: Mem) {
3676        self.emit(
3677            MOVSXR64M32,
3678            op0.as_operand(),
3679            op1.as_operand(),
3680            &NOREG,
3681            &NOREG,
3682        );
3683    }
3684}
3685
3686impl<'a> MovsxEmitter<Gpw, GpbLo> for Assembler<'a> {
3687    fn movsx(&mut self, op0: Gpw, op1: GpbLo) {
3688        self.emit(
3689            MOVSXR16R8,
3690            op0.as_operand(),
3691            op1.as_operand(),
3692            &NOREG,
3693            &NOREG,
3694        );
3695    }
3696}
3697
3698impl<'a> MovsxEmitter<Gpd, GpbLo> for Assembler<'a> {
3699    fn movsx(&mut self, op0: Gpd, op1: GpbLo) {
3700        self.emit(
3701            MOVSXR32R8,
3702            op0.as_operand(),
3703            op1.as_operand(),
3704            &NOREG,
3705            &NOREG,
3706        );
3707    }
3708}
3709
3710impl<'a> MovsxEmitter<Gpq, GpbLo> for Assembler<'a> {
3711    fn movsx(&mut self, op0: Gpq, op1: GpbLo) {
3712        self.emit(
3713            MOVSXR64R8,
3714            op0.as_operand(),
3715            op1.as_operand(),
3716            &NOREG,
3717            &NOREG,
3718        );
3719    }
3720}
3721
3722impl<'a> MovsxEmitter<Gpw, Gpw> for Assembler<'a> {
3723    fn movsx(&mut self, op0: Gpw, op1: Gpw) {
3724        self.emit(
3725            MOVSXR16R16,
3726            op0.as_operand(),
3727            op1.as_operand(),
3728            &NOREG,
3729            &NOREG,
3730        );
3731    }
3732}
3733
3734impl<'a> MovsxEmitter<Gpd, Gpw> for Assembler<'a> {
3735    fn movsx(&mut self, op0: Gpd, op1: Gpw) {
3736        self.emit(
3737            MOVSXR32R16,
3738            op0.as_operand(),
3739            op1.as_operand(),
3740            &NOREG,
3741            &NOREG,
3742        );
3743    }
3744}
3745
3746impl<'a> MovsxEmitter<Gpq, Gpw> for Assembler<'a> {
3747    fn movsx(&mut self, op0: Gpq, op1: Gpw) {
3748        self.emit(
3749            MOVSXR64R16,
3750            op0.as_operand(),
3751            op1.as_operand(),
3752            &NOREG,
3753            &NOREG,
3754        );
3755    }
3756}
3757
3758/// `MOVZX`.
3759///
3760/// Supported operand variants:
3761///
3762/// ```text
3763/// +---+------------+
3764/// | # | Operands   |
3765/// +---+------------+
3766/// | 1 | Gpd, GpbLo |
3767/// | 2 | Gpd, Gpw   |
3768/// | 3 | Gpd, Mem   |
3769/// | 4 | Gpq, GpbLo |
3770/// | 5 | Gpq, Gpw   |
3771/// | 6 | Gpq, Mem   |
3772/// | 7 | Gpw, GpbLo |
3773/// | 8 | Gpw, Gpw   |
3774/// | 9 | Gpw, Mem   |
3775/// +---+------------+
3776/// ```
3777pub trait MovzxEmitter<A, B> {
3778    fn movzx(&mut self, op0: A, op1: B);
3779}
3780
3781impl<'a> MovzxEmitter<Gpw, GpbLo> for Assembler<'a> {
3782    fn movzx(&mut self, op0: Gpw, op1: GpbLo) {
3783        self.emit(
3784            MOVZXR16R8,
3785            op0.as_operand(),
3786            op1.as_operand(),
3787            &NOREG,
3788            &NOREG,
3789        );
3790    }
3791}
3792
3793impl<'a> MovzxEmitter<Gpw, Mem> for Assembler<'a> {
3794    fn movzx(&mut self, op0: Gpw, op1: Mem) {
3795        self.emit(
3796            MOVZXR16M8,
3797            op0.as_operand(),
3798            op1.as_operand(),
3799            &NOREG,
3800            &NOREG,
3801        );
3802    }
3803}
3804
3805impl<'a> MovzxEmitter<Gpd, GpbLo> for Assembler<'a> {
3806    fn movzx(&mut self, op0: Gpd, op1: GpbLo) {
3807        self.emit(
3808            MOVZXR32R8,
3809            op0.as_operand(),
3810            op1.as_operand(),
3811            &NOREG,
3812            &NOREG,
3813        );
3814    }
3815}
3816
3817impl<'a> MovzxEmitter<Gpd, Mem> for Assembler<'a> {
3818    fn movzx(&mut self, op0: Gpd, op1: Mem) {
3819        self.emit(
3820            MOVZXR32M8,
3821            op0.as_operand(),
3822            op1.as_operand(),
3823            &NOREG,
3824            &NOREG,
3825        );
3826    }
3827}
3828
3829impl<'a> MovzxEmitter<Gpq, GpbLo> for Assembler<'a> {
3830    fn movzx(&mut self, op0: Gpq, op1: GpbLo) {
3831        self.emit(
3832            MOVZXR64R8,
3833            op0.as_operand(),
3834            op1.as_operand(),
3835            &NOREG,
3836            &NOREG,
3837        );
3838    }
3839}
3840
3841impl<'a> MovzxEmitter<Gpq, Mem> for Assembler<'a> {
3842    fn movzx(&mut self, op0: Gpq, op1: Mem) {
3843        self.emit(
3844            MOVZXR64M8,
3845            op0.as_operand(),
3846            op1.as_operand(),
3847            &NOREG,
3848            &NOREG,
3849        );
3850    }
3851}
3852
3853impl<'a> MovzxEmitter<Gpw, Gpw> for Assembler<'a> {
3854    fn movzx(&mut self, op0: Gpw, op1: Gpw) {
3855        self.emit(
3856            MOVZXR16R16,
3857            op0.as_operand(),
3858            op1.as_operand(),
3859            &NOREG,
3860            &NOREG,
3861        );
3862    }
3863}
3864
3865impl<'a> MovzxEmitter<Gpd, Gpw> for Assembler<'a> {
3866    fn movzx(&mut self, op0: Gpd, op1: Gpw) {
3867        self.emit(
3868            MOVZXR32R16,
3869            op0.as_operand(),
3870            op1.as_operand(),
3871            &NOREG,
3872            &NOREG,
3873        );
3874    }
3875}
3876
3877impl<'a> MovzxEmitter<Gpq, Gpw> for Assembler<'a> {
3878    fn movzx(&mut self, op0: Gpq, op1: Gpw) {
3879        self.emit(
3880            MOVZXR64R16,
3881            op0.as_operand(),
3882            op1.as_operand(),
3883            &NOREG,
3884            &NOREG,
3885        );
3886    }
3887}
3888
3889/// `MOV_CR2G`.
3890///
3891/// Supported operand variants:
3892///
3893/// ```text
3894/// +---+-----------+
3895/// | # | Operands  |
3896/// +---+-----------+
3897/// | 1 | Gpq, CReg |
3898/// +---+-----------+
3899/// ```
3900pub trait MovCr2gEmitter<A, B> {
3901    fn mov_cr2g(&mut self, op0: A, op1: B);
3902}
3903
3904impl<'a> MovCr2gEmitter<Gpq, CReg> for Assembler<'a> {
3905    fn mov_cr2g(&mut self, op0: Gpq, op1: CReg) {
3906        self.emit(
3907            MOV_CR2GRR,
3908            op0.as_operand(),
3909            op1.as_operand(),
3910            &NOREG,
3911            &NOREG,
3912        );
3913    }
3914}
3915
3916/// `MOV_DR2G`.
3917///
3918/// Supported operand variants:
3919///
3920/// ```text
3921/// +---+-----------+
3922/// | # | Operands  |
3923/// +---+-----------+
3924/// | 1 | Gpq, DReg |
3925/// +---+-----------+
3926/// ```
3927pub trait MovDr2gEmitter<A, B> {
3928    fn mov_dr2g(&mut self, op0: A, op1: B);
3929}
3930
3931impl<'a> MovDr2gEmitter<Gpq, DReg> for Assembler<'a> {
3932    fn mov_dr2g(&mut self, op0: Gpq, op1: DReg) {
3933        self.emit(
3934            MOV_DR2GRR,
3935            op0.as_operand(),
3936            op1.as_operand(),
3937            &NOREG,
3938            &NOREG,
3939        );
3940    }
3941}
3942
3943/// `MOV_G2CR`.
3944///
3945/// Supported operand variants:
3946///
3947/// ```text
3948/// +---+-----------+
3949/// | # | Operands  |
3950/// +---+-----------+
3951/// | 1 | CReg, Gpq |
3952/// +---+-----------+
3953/// ```
3954pub trait MovG2crEmitter<A, B> {
3955    fn mov_g2cr(&mut self, op0: A, op1: B);
3956}
3957
3958impl<'a> MovG2crEmitter<CReg, Gpq> for Assembler<'a> {
3959    fn mov_g2cr(&mut self, op0: CReg, op1: Gpq) {
3960        self.emit(
3961            MOV_G2CRRR,
3962            op0.as_operand(),
3963            op1.as_operand(),
3964            &NOREG,
3965            &NOREG,
3966        );
3967    }
3968}
3969
3970/// `MOV_G2DR`.
3971///
3972/// Supported operand variants:
3973///
3974/// ```text
3975/// +---+-----------+
3976/// | # | Operands  |
3977/// +---+-----------+
3978/// | 1 | DReg, Gpq |
3979/// +---+-----------+
3980/// ```
3981pub trait MovG2drEmitter<A, B> {
3982    fn mov_g2dr(&mut self, op0: A, op1: B);
3983}
3984
3985impl<'a> MovG2drEmitter<DReg, Gpq> for Assembler<'a> {
3986    fn mov_g2dr(&mut self, op0: DReg, op1: Gpq) {
3987        self.emit(
3988            MOV_G2DRRR,
3989            op0.as_operand(),
3990            op1.as_operand(),
3991            &NOREG,
3992            &NOREG,
3993        );
3994    }
3995}
3996
3997/// `MOV_G2S`.
3998///
3999/// Supported operand variants:
4000///
4001/// ```text
4002/// +---+-----------+
4003/// | # | Operands  |
4004/// +---+-----------+
4005/// | 1 | SReg, Gpd |
4006/// | 2 | SReg, Mem |
4007/// +---+-----------+
4008/// ```
4009pub trait MovG2sEmitter<A, B> {
4010    fn mov_g2s(&mut self, op0: A, op1: B);
4011}
4012
4013impl<'a> MovG2sEmitter<SReg, Gpd> for Assembler<'a> {
4014    fn mov_g2s(&mut self, op0: SReg, op1: Gpd) {
4015        self.emit(
4016            MOV_G2SRR,
4017            op0.as_operand(),
4018            op1.as_operand(),
4019            &NOREG,
4020            &NOREG,
4021        );
4022    }
4023}
4024
4025impl<'a> MovG2sEmitter<SReg, Mem> for Assembler<'a> {
4026    fn mov_g2s(&mut self, op0: SReg, op1: Mem) {
4027        self.emit(
4028            MOV_G2SRM,
4029            op0.as_operand(),
4030            op1.as_operand(),
4031            &NOREG,
4032            &NOREG,
4033        );
4034    }
4035}
4036
4037/// `MOV_S2G`.
4038///
4039/// Supported operand variants:
4040///
4041/// ```text
4042/// +---+-----------+
4043/// | # | Operands  |
4044/// +---+-----------+
4045/// | 1 | Gpd, SReg |
4046/// | 2 | Mem, SReg |
4047/// +---+-----------+
4048/// ```
4049pub trait MovS2gEmitter<A, B> {
4050    fn mov_s2g(&mut self, op0: A, op1: B);
4051}
4052
4053impl<'a> MovS2gEmitter<Gpd, SReg> for Assembler<'a> {
4054    fn mov_s2g(&mut self, op0: Gpd, op1: SReg) {
4055        self.emit(
4056            MOV_S2GRR,
4057            op0.as_operand(),
4058            op1.as_operand(),
4059            &NOREG,
4060            &NOREG,
4061        );
4062    }
4063}
4064
4065impl<'a> MovS2gEmitter<Mem, SReg> for Assembler<'a> {
4066    fn mov_s2g(&mut self, op0: Mem, op1: SReg) {
4067        self.emit(
4068            MOV_S2GMR,
4069            op0.as_operand(),
4070            op1.as_operand(),
4071            &NOREG,
4072            &NOREG,
4073        );
4074    }
4075}
4076
4077/// `MUL`.
4078///
4079/// Supported operand variants:
4080///
4081/// ```text
4082/// +---+----------+
4083/// | # | Operands |
4084/// +---+----------+
4085/// | 1 | GpbLo    |
4086/// | 2 | Gpd      |
4087/// | 3 | Gpq      |
4088/// | 4 | Gpw      |
4089/// | 5 | Mem      |
4090/// +---+----------+
4091/// ```
4092pub trait MulEmitter<A> {
4093    fn mul(&mut self, op0: A);
4094}
4095
4096impl<'a> MulEmitter<GpbLo> for Assembler<'a> {
4097    fn mul(&mut self, op0: GpbLo) {
4098        self.emit(MUL8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4099    }
4100}
4101
4102impl<'a> MulEmitter<Mem> for Assembler<'a> {
4103    fn mul(&mut self, op0: Mem) {
4104        self.emit(MUL8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4105    }
4106}
4107
4108impl<'a> MulEmitter<Gpw> for Assembler<'a> {
4109    fn mul(&mut self, op0: Gpw) {
4110        self.emit(MUL16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4111    }
4112}
4113
4114impl<'a> MulEmitter<Gpd> for Assembler<'a> {
4115    fn mul(&mut self, op0: Gpd) {
4116        self.emit(MUL32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4117    }
4118}
4119
4120impl<'a> MulEmitter<Gpq> for Assembler<'a> {
4121    fn mul(&mut self, op0: Gpq) {
4122        self.emit(MUL64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4123    }
4124}
4125
4126/// `NEG`.
4127///
4128/// Supported operand variants:
4129///
4130/// ```text
4131/// +---+----------+
4132/// | # | Operands |
4133/// +---+----------+
4134/// | 1 | GpbLo    |
4135/// | 2 | Gpd      |
4136/// | 3 | Gpq      |
4137/// | 4 | Gpw      |
4138/// | 5 | Mem      |
4139/// +---+----------+
4140/// ```
4141pub trait NegEmitter<A> {
4142    fn neg(&mut self, op0: A);
4143}
4144
4145impl<'a> NegEmitter<GpbLo> for Assembler<'a> {
4146    fn neg(&mut self, op0: GpbLo) {
4147        self.emit(NEG8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4148    }
4149}
4150
4151impl<'a> NegEmitter<Mem> for Assembler<'a> {
4152    fn neg(&mut self, op0: Mem) {
4153        self.emit(NEG8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4154    }
4155}
4156
4157impl<'a> NegEmitter<Gpw> for Assembler<'a> {
4158    fn neg(&mut self, op0: Gpw) {
4159        self.emit(NEG16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4160    }
4161}
4162
4163impl<'a> NegEmitter<Gpd> for Assembler<'a> {
4164    fn neg(&mut self, op0: Gpd) {
4165        self.emit(NEG32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4166    }
4167}
4168
4169impl<'a> NegEmitter<Gpq> for Assembler<'a> {
4170    fn neg(&mut self, op0: Gpq) {
4171        self.emit(NEG64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4172    }
4173}
4174
4175/// `NOP`.
4176///
4177/// Supported operand variants:
4178///
4179/// ```text
4180/// +---+----------+
4181/// | # | Operands |
4182/// +---+----------+
4183/// | 1 | (none)   |
4184/// +---+----------+
4185/// ```
4186pub trait NopEmitter {
4187    fn nop(&mut self);
4188}
4189
4190impl<'a> NopEmitter for Assembler<'a> {
4191    fn nop(&mut self) {
4192        self.emit(NOP, &NOREG, &NOREG, &NOREG, &NOREG);
4193    }
4194}
4195
4196/// `NOP`.
4197///
4198/// Supported operand variants:
4199///
4200/// ```text
4201/// +---+----------+
4202/// | # | Operands |
4203/// +---+----------+
4204/// | 1 | Gpd      |
4205/// | 2 | Gpq      |
4206/// | 3 | Gpw      |
4207/// | 4 | Mem      |
4208/// +---+----------+
4209/// ```
4210pub trait NopEmitter_1<A> {
4211    fn nop_1(&mut self, op0: A);
4212}
4213
4214impl<'a> NopEmitter_1<Gpw> for Assembler<'a> {
4215    fn nop_1(&mut self, op0: Gpw) {
4216        self.emit(NOP16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4217    }
4218}
4219
4220impl<'a> NopEmitter_1<Mem> for Assembler<'a> {
4221    fn nop_1(&mut self, op0: Mem) {
4222        self.emit(NOP16M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4223    }
4224}
4225
4226impl<'a> NopEmitter_1<Gpd> for Assembler<'a> {
4227    fn nop_1(&mut self, op0: Gpd) {
4228        self.emit(NOP32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4229    }
4230}
4231
4232impl<'a> NopEmitter_1<Gpq> for Assembler<'a> {
4233    fn nop_1(&mut self, op0: Gpq) {
4234        self.emit(NOP64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4235    }
4236}
4237
4238/// `NOT`.
4239///
4240/// Supported operand variants:
4241///
4242/// ```text
4243/// +---+----------+
4244/// | # | Operands |
4245/// +---+----------+
4246/// | 1 | GpbLo    |
4247/// | 2 | Gpd      |
4248/// | 3 | Gpq      |
4249/// | 4 | Gpw      |
4250/// | 5 | Mem      |
4251/// +---+----------+
4252/// ```
4253pub trait NotEmitter<A> {
4254    fn not(&mut self, op0: A);
4255}
4256
4257impl<'a> NotEmitter<GpbLo> for Assembler<'a> {
4258    fn not(&mut self, op0: GpbLo) {
4259        self.emit(NOT8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4260    }
4261}
4262
4263impl<'a> NotEmitter<Mem> for Assembler<'a> {
4264    fn not(&mut self, op0: Mem) {
4265        self.emit(NOT8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4266    }
4267}
4268
4269impl<'a> NotEmitter<Gpw> for Assembler<'a> {
4270    fn not(&mut self, op0: Gpw) {
4271        self.emit(NOT16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4272    }
4273}
4274
4275impl<'a> NotEmitter<Gpd> for Assembler<'a> {
4276    fn not(&mut self, op0: Gpd) {
4277        self.emit(NOT32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4278    }
4279}
4280
4281impl<'a> NotEmitter<Gpq> for Assembler<'a> {
4282    fn not(&mut self, op0: Gpq) {
4283        self.emit(NOT64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4284    }
4285}
4286
4287/// `OR`.
4288///
4289/// Supported operand variants:
4290///
4291/// ```text
4292/// +----+--------------+
4293/// | #  | Operands     |
4294/// +----+--------------+
4295/// | 1  | GpbLo, GpbLo |
4296/// | 2  | GpbLo, Imm   |
4297/// | 3  | GpbLo, Mem   |
4298/// | 4  | Gpd, Gpd     |
4299/// | 5  | Gpd, Imm     |
4300/// | 6  | Gpd, Mem     |
4301/// | 7  | Gpq, Gpq     |
4302/// | 8  | Gpq, Imm     |
4303/// | 9  | Gpq, Mem     |
4304/// | 10 | Gpw, Gpw     |
4305/// | 11 | Gpw, Imm     |
4306/// | 12 | Gpw, Mem     |
4307/// | 13 | Mem, GpbLo   |
4308/// | 14 | Mem, Gpd     |
4309/// | 15 | Mem, Gpq     |
4310/// | 16 | Mem, Gpw     |
4311/// | 17 | Mem, Imm     |
4312/// +----+--------------+
4313/// ```
4314pub trait OrEmitter<A, B> {
4315    fn or(&mut self, op0: A, op1: B);
4316}
4317
4318impl<'a> OrEmitter<GpbLo, GpbLo> for Assembler<'a> {
4319    fn or(&mut self, op0: GpbLo, op1: GpbLo) {
4320        self.emit(OR8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4321    }
4322}
4323
4324impl<'a> OrEmitter<Mem, GpbLo> for Assembler<'a> {
4325    fn or(&mut self, op0: Mem, op1: GpbLo) {
4326        self.emit(OR8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4327    }
4328}
4329
4330impl<'a> OrEmitter<Gpw, Gpw> for Assembler<'a> {
4331    fn or(&mut self, op0: Gpw, op1: Gpw) {
4332        self.emit(OR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4333    }
4334}
4335
4336impl<'a> OrEmitter<Mem, Gpw> for Assembler<'a> {
4337    fn or(&mut self, op0: Mem, op1: Gpw) {
4338        self.emit(OR16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4339    }
4340}
4341
4342impl<'a> OrEmitter<Gpd, Gpd> for Assembler<'a> {
4343    fn or(&mut self, op0: Gpd, op1: Gpd) {
4344        self.emit(OR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4345    }
4346}
4347
4348impl<'a> OrEmitter<Mem, Gpd> for Assembler<'a> {
4349    fn or(&mut self, op0: Mem, op1: Gpd) {
4350        self.emit(OR32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4351    }
4352}
4353
4354impl<'a> OrEmitter<Gpq, Gpq> for Assembler<'a> {
4355    fn or(&mut self, op0: Gpq, op1: Gpq) {
4356        self.emit(OR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4357    }
4358}
4359
4360impl<'a> OrEmitter<Mem, Gpq> for Assembler<'a> {
4361    fn or(&mut self, op0: Mem, op1: Gpq) {
4362        self.emit(OR64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4363    }
4364}
4365
4366impl<'a> OrEmitter<GpbLo, Mem> for Assembler<'a> {
4367    fn or(&mut self, op0: GpbLo, op1: Mem) {
4368        self.emit(OR8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4369    }
4370}
4371
4372impl<'a> OrEmitter<Gpw, Mem> for Assembler<'a> {
4373    fn or(&mut self, op0: Gpw, op1: Mem) {
4374        self.emit(OR16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4375    }
4376}
4377
4378impl<'a> OrEmitter<Gpd, Mem> for Assembler<'a> {
4379    fn or(&mut self, op0: Gpd, op1: Mem) {
4380        self.emit(OR32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4381    }
4382}
4383
4384impl<'a> OrEmitter<Gpq, Mem> for Assembler<'a> {
4385    fn or(&mut self, op0: Gpq, op1: Mem) {
4386        self.emit(OR64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4387    }
4388}
4389
4390impl<'a> OrEmitter<GpbLo, Imm> for Assembler<'a> {
4391    fn or(&mut self, op0: GpbLo, op1: Imm) {
4392        self.emit(OR8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4393    }
4394}
4395
4396impl<'a> OrEmitter<Gpw, Imm> for Assembler<'a> {
4397    fn or(&mut self, op0: Gpw, op1: Imm) {
4398        self.emit(OR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4399    }
4400}
4401
4402impl<'a> OrEmitter<Gpd, Imm> for Assembler<'a> {
4403    fn or(&mut self, op0: Gpd, op1: Imm) {
4404        self.emit(OR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4405    }
4406}
4407
4408impl<'a> OrEmitter<Gpq, Imm> for Assembler<'a> {
4409    fn or(&mut self, op0: Gpq, op1: Imm) {
4410        self.emit(OR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4411    }
4412}
4413
4414impl<'a> OrEmitter<Mem, Imm> for Assembler<'a> {
4415    fn or(&mut self, op0: Mem, op1: Imm) {
4416        self.emit(OR8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4417    }
4418}
4419
4420/// `OUT`.
4421///
4422/// Supported operand variants:
4423///
4424/// ```text
4425/// +---+----------+
4426/// | # | Operands |
4427/// +---+----------+
4428/// | 1 | (none)   |
4429/// +---+----------+
4430/// ```
4431pub trait OutEmitter {
4432    fn r#out(&mut self);
4433}
4434
4435impl<'a> OutEmitter for Assembler<'a> {
4436    fn r#out(&mut self) {
4437        self.emit(OUT8, &NOREG, &NOREG, &NOREG, &NOREG);
4438    }
4439}
4440
4441/// `OUT`.
4442///
4443/// Supported operand variants:
4444///
4445/// ```text
4446/// +---+------------+
4447/// | # | Operands   |
4448/// +---+------------+
4449/// | 1 | GpbLo, Imm |
4450/// | 2 | Gpd, Imm   |
4451/// | 3 | Gpq, Imm   |
4452/// | 4 | Gpw, Imm   |
4453/// +---+------------+
4454/// ```
4455pub trait OutEmitter_2<A, B> {
4456    fn r#out_2(&mut self, op0: A, op1: B);
4457}
4458
4459impl<'a> OutEmitter_2<GpbLo, Imm> for Assembler<'a> {
4460    fn r#out_2(&mut self, op0: GpbLo, op1: Imm) {
4461        self.emit(OUT8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4462    }
4463}
4464
4465impl<'a> OutEmitter_2<Gpw, Imm> for Assembler<'a> {
4466    fn r#out_2(&mut self, op0: Gpw, op1: Imm) {
4467        self.emit(OUT16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4468    }
4469}
4470
4471impl<'a> OutEmitter_2<Gpd, Imm> for Assembler<'a> {
4472    fn r#out_2(&mut self, op0: Gpd, op1: Imm) {
4473        self.emit(OUT32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4474    }
4475}
4476
4477impl<'a> OutEmitter_2<Gpq, Imm> for Assembler<'a> {
4478    fn r#out_2(&mut self, op0: Gpq, op1: Imm) {
4479        self.emit(OUT64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4480    }
4481}
4482
4483/// `OUTS`.
4484///
4485/// Supported operand variants:
4486///
4487/// ```text
4488/// +---+----------+
4489/// | # | Operands |
4490/// +---+----------+
4491/// | 1 | (none)   |
4492/// +---+----------+
4493/// ```
4494pub trait OutsEmitter {
4495    fn outs(&mut self);
4496}
4497
4498impl<'a> OutsEmitter for Assembler<'a> {
4499    fn outs(&mut self) {
4500        self.emit(OUTS8, &NOREG, &NOREG, &NOREG, &NOREG);
4501    }
4502}
4503
4504/// `PAUSE`.
4505///
4506/// Supported operand variants:
4507///
4508/// ```text
4509/// +---+----------+
4510/// | # | Operands |
4511/// +---+----------+
4512/// | 1 | (none)   |
4513/// +---+----------+
4514/// ```
4515pub trait PauseEmitter {
4516    fn pause(&mut self);
4517}
4518
4519impl<'a> PauseEmitter for Assembler<'a> {
4520    fn pause(&mut self) {
4521        self.emit(PAUSE, &NOREG, &NOREG, &NOREG, &NOREG);
4522    }
4523}
4524
4525/// `POP`.
4526///
4527/// Supported operand variants:
4528///
4529/// ```text
4530/// +---+----------+
4531/// | # | Operands |
4532/// +---+----------+
4533/// | 1 | Gpq      |
4534/// | 2 | Gpw      |
4535/// | 3 | Mem      |
4536/// +---+----------+
4537/// ```
4538pub trait PopEmitter<A> {
4539    fn pop(&mut self, op0: A);
4540}
4541
4542impl<'a> PopEmitter<Gpw> for Assembler<'a> {
4543    fn pop(&mut self, op0: Gpw) {
4544        self.emit(POP16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4545    }
4546}
4547
4548impl<'a> PopEmitter<Gpq> for Assembler<'a> {
4549    fn pop(&mut self, op0: Gpq) {
4550        self.emit(POPR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4551    }
4552}
4553
4554impl<'a> PopEmitter<Mem> for Assembler<'a> {
4555    fn pop(&mut self, op0: Mem) {
4556        self.emit(POP16M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4557    }
4558}
4559
4560/// `POPF`.
4561///
4562/// Supported operand variants:
4563///
4564/// ```text
4565/// +---+----------+
4566/// | # | Operands |
4567/// +---+----------+
4568/// | 1 | (none)   |
4569/// +---+----------+
4570/// ```
4571pub trait PopfEmitter {
4572    fn popf(&mut self);
4573}
4574
4575impl<'a> PopfEmitter for Assembler<'a> {
4576    fn popf(&mut self) {
4577        self.emit(POPF16, &NOREG, &NOREG, &NOREG, &NOREG);
4578    }
4579}
4580
4581/// `POP_SEG`.
4582///
4583/// Supported operand variants:
4584///
4585/// ```text
4586/// +---+----------+
4587/// | # | Operands |
4588/// +---+----------+
4589/// | 1 | SReg     |
4590/// +---+----------+
4591/// ```
4592pub trait PopSegEmitter<A> {
4593    fn pop_seg(&mut self, op0: A);
4594}
4595
4596impl<'a> PopSegEmitter<SReg> for Assembler<'a> {
4597    fn pop_seg(&mut self, op0: SReg) {
4598        self.emit(POP_SEG16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4599    }
4600}
4601
4602/// `PUSH`.
4603///
4604/// Supported operand variants:
4605///
4606/// ```text
4607/// +---+----------+
4608/// | # | Operands |
4609/// +---+----------+
4610/// | 1 | Gpq      |
4611/// | 2 | Gpw      |
4612/// | 3 | Imm      |
4613/// | 4 | Mem      |
4614/// +---+----------+
4615/// ```
4616pub trait PushEmitter<A> {
4617    fn push(&mut self, op0: A);
4618}
4619
4620impl<'a> PushEmitter<Gpw> for Assembler<'a> {
4621    fn push(&mut self, op0: Gpw) {
4622        self.emit(PUSH16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4623    }
4624}
4625
4626impl<'a> PushEmitter<Gpq> for Assembler<'a> {
4627    fn push(&mut self, op0: Gpq) {
4628        self.emit(PUSHR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4629    }
4630}
4631
4632impl<'a> PushEmitter<Imm> for Assembler<'a> {
4633    fn push(&mut self, op0: Imm) {
4634        self.emit(PUSH16I, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4635    }
4636}
4637
4638impl<'a> PushEmitter<Mem> for Assembler<'a> {
4639    fn push(&mut self, op0: Mem) {
4640        self.emit(PUSH16M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4641    }
4642}
4643
4644/// `PUSHF`.
4645///
4646/// Supported operand variants:
4647///
4648/// ```text
4649/// +---+----------+
4650/// | # | Operands |
4651/// +---+----------+
4652/// | 1 | (none)   |
4653/// +---+----------+
4654/// ```
4655pub trait PushfEmitter {
4656    fn pushf(&mut self);
4657}
4658
4659impl<'a> PushfEmitter for Assembler<'a> {
4660    fn pushf(&mut self) {
4661        self.emit(PUSHF16, &NOREG, &NOREG, &NOREG, &NOREG);
4662    }
4663}
4664
4665/// `PUSH_SEG`.
4666///
4667/// Supported operand variants:
4668///
4669/// ```text
4670/// +---+----------+
4671/// | # | Operands |
4672/// +---+----------+
4673/// | 1 | SReg     |
4674/// +---+----------+
4675/// ```
4676pub trait PushSegEmitter<A> {
4677    fn push_seg(&mut self, op0: A);
4678}
4679
4680impl<'a> PushSegEmitter<SReg> for Assembler<'a> {
4681    fn push_seg(&mut self, op0: SReg) {
4682        self.emit(PUSH_SEG16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4683    }
4684}
4685
4686/// `RCL`.
4687///
4688/// Supported operand variants:
4689///
4690/// ```text
4691/// +----+--------------+
4692/// | #  | Operands     |
4693/// +----+--------------+
4694/// | 1  | GpbLo, GpbLo |
4695/// | 2  | GpbLo, Imm   |
4696/// | 3  | Gpd, GpbLo   |
4697/// | 4  | Gpd, Imm     |
4698/// | 5  | Gpq, GpbLo   |
4699/// | 6  | Gpq, Imm     |
4700/// | 7  | Gpw, GpbLo   |
4701/// | 8  | Gpw, Imm     |
4702/// | 9  | Mem, GpbLo   |
4703/// | 10 | Mem, Imm     |
4704/// +----+--------------+
4705/// ```
4706pub trait RclEmitter<A, B> {
4707    fn rcl(&mut self, op0: A, op1: B);
4708}
4709
4710impl<'a> RclEmitter<GpbLo, Imm> for Assembler<'a> {
4711    fn rcl(&mut self, op0: GpbLo, op1: Imm) {
4712        self.emit(RCL8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4713    }
4714}
4715
4716impl<'a> RclEmitter<Mem, Imm> for Assembler<'a> {
4717    fn rcl(&mut self, op0: Mem, op1: Imm) {
4718        self.emit(RCL8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4719    }
4720}
4721
4722impl<'a> RclEmitter<Gpw, Imm> for Assembler<'a> {
4723    fn rcl(&mut self, op0: Gpw, op1: Imm) {
4724        self.emit(RCL16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4725    }
4726}
4727
4728impl<'a> RclEmitter<Gpd, Imm> for Assembler<'a> {
4729    fn rcl(&mut self, op0: Gpd, op1: Imm) {
4730        self.emit(RCL32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4731    }
4732}
4733
4734impl<'a> RclEmitter<Gpq, Imm> for Assembler<'a> {
4735    fn rcl(&mut self, op0: Gpq, op1: Imm) {
4736        self.emit(RCL64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4737    }
4738}
4739
4740impl<'a> RclEmitter<GpbLo, GpbLo> for Assembler<'a> {
4741    fn rcl(&mut self, op0: GpbLo, op1: GpbLo) {
4742        self.emit(RCL8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4743    }
4744}
4745
4746impl<'a> RclEmitter<Mem, GpbLo> for Assembler<'a> {
4747    fn rcl(&mut self, op0: Mem, op1: GpbLo) {
4748        self.emit(RCL8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4749    }
4750}
4751
4752impl<'a> RclEmitter<Gpw, GpbLo> for Assembler<'a> {
4753    fn rcl(&mut self, op0: Gpw, op1: GpbLo) {
4754        self.emit(RCL16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4755    }
4756}
4757
4758impl<'a> RclEmitter<Gpd, GpbLo> for Assembler<'a> {
4759    fn rcl(&mut self, op0: Gpd, op1: GpbLo) {
4760        self.emit(RCL32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4761    }
4762}
4763
4764impl<'a> RclEmitter<Gpq, GpbLo> for Assembler<'a> {
4765    fn rcl(&mut self, op0: Gpq, op1: GpbLo) {
4766        self.emit(RCL64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4767    }
4768}
4769
4770/// `RCR`.
4771///
4772/// Supported operand variants:
4773///
4774/// ```text
4775/// +----+--------------+
4776/// | #  | Operands     |
4777/// +----+--------------+
4778/// | 1  | GpbLo, GpbLo |
4779/// | 2  | GpbLo, Imm   |
4780/// | 3  | Gpd, GpbLo   |
4781/// | 4  | Gpd, Imm     |
4782/// | 5  | Gpq, GpbLo   |
4783/// | 6  | Gpq, Imm     |
4784/// | 7  | Gpw, GpbLo   |
4785/// | 8  | Gpw, Imm     |
4786/// | 9  | Mem, GpbLo   |
4787/// | 10 | Mem, Imm     |
4788/// +----+--------------+
4789/// ```
4790pub trait RcrEmitter<A, B> {
4791    fn rcr(&mut self, op0: A, op1: B);
4792}
4793
4794impl<'a> RcrEmitter<GpbLo, Imm> for Assembler<'a> {
4795    fn rcr(&mut self, op0: GpbLo, op1: Imm) {
4796        self.emit(RCR8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4797    }
4798}
4799
4800impl<'a> RcrEmitter<Mem, Imm> for Assembler<'a> {
4801    fn rcr(&mut self, op0: Mem, op1: Imm) {
4802        self.emit(RCR8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4803    }
4804}
4805
4806impl<'a> RcrEmitter<Gpw, Imm> for Assembler<'a> {
4807    fn rcr(&mut self, op0: Gpw, op1: Imm) {
4808        self.emit(RCR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4809    }
4810}
4811
4812impl<'a> RcrEmitter<Gpd, Imm> for Assembler<'a> {
4813    fn rcr(&mut self, op0: Gpd, op1: Imm) {
4814        self.emit(RCR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4815    }
4816}
4817
4818impl<'a> RcrEmitter<Gpq, Imm> for Assembler<'a> {
4819    fn rcr(&mut self, op0: Gpq, op1: Imm) {
4820        self.emit(RCR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4821    }
4822}
4823
4824impl<'a> RcrEmitter<GpbLo, GpbLo> for Assembler<'a> {
4825    fn rcr(&mut self, op0: GpbLo, op1: GpbLo) {
4826        self.emit(RCR8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4827    }
4828}
4829
4830impl<'a> RcrEmitter<Mem, GpbLo> for Assembler<'a> {
4831    fn rcr(&mut self, op0: Mem, op1: GpbLo) {
4832        self.emit(RCR8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4833    }
4834}
4835
4836impl<'a> RcrEmitter<Gpw, GpbLo> for Assembler<'a> {
4837    fn rcr(&mut self, op0: Gpw, op1: GpbLo) {
4838        self.emit(RCR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4839    }
4840}
4841
4842impl<'a> RcrEmitter<Gpd, GpbLo> for Assembler<'a> {
4843    fn rcr(&mut self, op0: Gpd, op1: GpbLo) {
4844        self.emit(RCR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4845    }
4846}
4847
4848impl<'a> RcrEmitter<Gpq, GpbLo> for Assembler<'a> {
4849    fn rcr(&mut self, op0: Gpq, op1: GpbLo) {
4850        self.emit(RCR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4851    }
4852}
4853
4854/// `RET`.
4855///
4856/// Supported operand variants:
4857///
4858/// ```text
4859/// +---+----------+
4860/// | # | Operands |
4861/// +---+----------+
4862/// | 1 | (none)   |
4863/// +---+----------+
4864/// ```
4865pub trait RetEmitter {
4866    fn ret(&mut self);
4867}
4868
4869impl<'a> RetEmitter for Assembler<'a> {
4870    fn ret(&mut self) {
4871        self.emit(RET, &NOREG, &NOREG, &NOREG, &NOREG);
4872    }
4873}
4874
4875/// `RET`.
4876///
4877/// Supported operand variants:
4878///
4879/// ```text
4880/// +---+----------+
4881/// | # | Operands |
4882/// +---+----------+
4883/// | 1 | Imm      |
4884/// +---+----------+
4885/// ```
4886pub trait RetEmitter_1<A> {
4887    fn ret_1(&mut self, op0: A);
4888}
4889
4890impl<'a> RetEmitter_1<Imm> for Assembler<'a> {
4891    fn ret_1(&mut self, op0: Imm) {
4892        self.emit(RETI, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4893    }
4894}
4895
4896/// `RETF`.
4897///
4898/// Supported operand variants:
4899///
4900/// ```text
4901/// +---+----------+
4902/// | # | Operands |
4903/// +---+----------+
4904/// | 1 | (none)   |
4905/// +---+----------+
4906/// ```
4907pub trait RetfEmitter {
4908    fn retf(&mut self);
4909}
4910
4911impl<'a> RetfEmitter for Assembler<'a> {
4912    fn retf(&mut self) {
4913        self.emit(RETF16, &NOREG, &NOREG, &NOREG, &NOREG);
4914    }
4915}
4916
4917/// `RETF`.
4918///
4919/// Supported operand variants:
4920///
4921/// ```text
4922/// +---+----------+
4923/// | # | Operands |
4924/// +---+----------+
4925/// | 1 | Imm      |
4926/// +---+----------+
4927/// ```
4928pub trait RetfEmitter_1<A> {
4929    fn retf_1(&mut self, op0: A);
4930}
4931
4932impl<'a> RetfEmitter_1<Imm> for Assembler<'a> {
4933    fn retf_1(&mut self, op0: Imm) {
4934        self.emit(RETF16I, op0.as_operand(), &NOREG, &NOREG, &NOREG);
4935    }
4936}
4937
4938/// `ROL`.
4939///
4940/// Supported operand variants:
4941///
4942/// ```text
4943/// +----+--------------+
4944/// | #  | Operands     |
4945/// +----+--------------+
4946/// | 1  | GpbLo, GpbLo |
4947/// | 2  | GpbLo, Imm   |
4948/// | 3  | Gpd, GpbLo   |
4949/// | 4  | Gpd, Imm     |
4950/// | 5  | Gpq, GpbLo   |
4951/// | 6  | Gpq, Imm     |
4952/// | 7  | Gpw, GpbLo   |
4953/// | 8  | Gpw, Imm     |
4954/// | 9  | Mem, GpbLo   |
4955/// | 10 | Mem, Imm     |
4956/// +----+--------------+
4957/// ```
4958pub trait RolEmitter<A, B> {
4959    fn rol(&mut self, op0: A, op1: B);
4960}
4961
4962impl<'a> RolEmitter<GpbLo, Imm> for Assembler<'a> {
4963    fn rol(&mut self, op0: GpbLo, op1: Imm) {
4964        self.emit(ROL8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4965    }
4966}
4967
4968impl<'a> RolEmitter<Mem, Imm> for Assembler<'a> {
4969    fn rol(&mut self, op0: Mem, op1: Imm) {
4970        self.emit(ROL8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4971    }
4972}
4973
4974impl<'a> RolEmitter<Gpw, Imm> for Assembler<'a> {
4975    fn rol(&mut self, op0: Gpw, op1: Imm) {
4976        self.emit(ROL16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4977    }
4978}
4979
4980impl<'a> RolEmitter<Gpd, Imm> for Assembler<'a> {
4981    fn rol(&mut self, op0: Gpd, op1: Imm) {
4982        self.emit(ROL32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4983    }
4984}
4985
4986impl<'a> RolEmitter<Gpq, Imm> for Assembler<'a> {
4987    fn rol(&mut self, op0: Gpq, op1: Imm) {
4988        self.emit(ROL64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4989    }
4990}
4991
4992impl<'a> RolEmitter<GpbLo, GpbLo> for Assembler<'a> {
4993    fn rol(&mut self, op0: GpbLo, op1: GpbLo) {
4994        self.emit(ROL8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
4995    }
4996}
4997
4998impl<'a> RolEmitter<Mem, GpbLo> for Assembler<'a> {
4999    fn rol(&mut self, op0: Mem, op1: GpbLo) {
5000        self.emit(ROL8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5001    }
5002}
5003
5004impl<'a> RolEmitter<Gpw, GpbLo> for Assembler<'a> {
5005    fn rol(&mut self, op0: Gpw, op1: GpbLo) {
5006        self.emit(ROL16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5007    }
5008}
5009
5010impl<'a> RolEmitter<Gpd, GpbLo> for Assembler<'a> {
5011    fn rol(&mut self, op0: Gpd, op1: GpbLo) {
5012        self.emit(ROL32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5013    }
5014}
5015
5016impl<'a> RolEmitter<Gpq, GpbLo> for Assembler<'a> {
5017    fn rol(&mut self, op0: Gpq, op1: GpbLo) {
5018        self.emit(ROL64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5019    }
5020}
5021
5022/// `ROR`.
5023///
5024/// Supported operand variants:
5025///
5026/// ```text
5027/// +----+--------------+
5028/// | #  | Operands     |
5029/// +----+--------------+
5030/// | 1  | GpbLo, GpbLo |
5031/// | 2  | GpbLo, Imm   |
5032/// | 3  | Gpd, GpbLo   |
5033/// | 4  | Gpd, Imm     |
5034/// | 5  | Gpq, GpbLo   |
5035/// | 6  | Gpq, Imm     |
5036/// | 7  | Gpw, GpbLo   |
5037/// | 8  | Gpw, Imm     |
5038/// | 9  | Mem, GpbLo   |
5039/// | 10 | Mem, Imm     |
5040/// +----+--------------+
5041/// ```
5042pub trait RorEmitter<A, B> {
5043    fn ror(&mut self, op0: A, op1: B);
5044}
5045
5046impl<'a> RorEmitter<GpbLo, Imm> for Assembler<'a> {
5047    fn ror(&mut self, op0: GpbLo, op1: Imm) {
5048        self.emit(ROR8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5049    }
5050}
5051
5052impl<'a> RorEmitter<Mem, Imm> for Assembler<'a> {
5053    fn ror(&mut self, op0: Mem, op1: Imm) {
5054        self.emit(ROR8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5055    }
5056}
5057
5058impl<'a> RorEmitter<Gpw, Imm> for Assembler<'a> {
5059    fn ror(&mut self, op0: Gpw, op1: Imm) {
5060        self.emit(ROR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5061    }
5062}
5063
5064impl<'a> RorEmitter<Gpd, Imm> for Assembler<'a> {
5065    fn ror(&mut self, op0: Gpd, op1: Imm) {
5066        self.emit(ROR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5067    }
5068}
5069
5070impl<'a> RorEmitter<Gpq, Imm> for Assembler<'a> {
5071    fn ror(&mut self, op0: Gpq, op1: Imm) {
5072        self.emit(ROR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5073    }
5074}
5075
5076impl<'a> RorEmitter<GpbLo, GpbLo> for Assembler<'a> {
5077    fn ror(&mut self, op0: GpbLo, op1: GpbLo) {
5078        self.emit(ROR8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5079    }
5080}
5081
5082impl<'a> RorEmitter<Mem, GpbLo> for Assembler<'a> {
5083    fn ror(&mut self, op0: Mem, op1: GpbLo) {
5084        self.emit(ROR8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5085    }
5086}
5087
5088impl<'a> RorEmitter<Gpw, GpbLo> for Assembler<'a> {
5089    fn ror(&mut self, op0: Gpw, op1: GpbLo) {
5090        self.emit(ROR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5091    }
5092}
5093
5094impl<'a> RorEmitter<Gpd, GpbLo> for Assembler<'a> {
5095    fn ror(&mut self, op0: Gpd, op1: GpbLo) {
5096        self.emit(ROR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5097    }
5098}
5099
5100impl<'a> RorEmitter<Gpq, GpbLo> for Assembler<'a> {
5101    fn ror(&mut self, op0: Gpq, op1: GpbLo) {
5102        self.emit(ROR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5103    }
5104}
5105
5106/// `SAHF`.
5107///
5108/// Supported operand variants:
5109///
5110/// ```text
5111/// +---+----------+
5112/// | # | Operands |
5113/// +---+----------+
5114/// | 1 | (none)   |
5115/// +---+----------+
5116/// ```
5117pub trait SahfEmitter {
5118    fn sahf(&mut self);
5119}
5120
5121impl<'a> SahfEmitter for Assembler<'a> {
5122    fn sahf(&mut self) {
5123        self.emit(SAHF, &NOREG, &NOREG, &NOREG, &NOREG);
5124    }
5125}
5126
5127/// `SAR`.
5128///
5129/// Supported operand variants:
5130///
5131/// ```text
5132/// +----+--------------+
5133/// | #  | Operands     |
5134/// +----+--------------+
5135/// | 1  | GpbLo, GpbLo |
5136/// | 2  | GpbLo, Imm   |
5137/// | 3  | Gpd, GpbLo   |
5138/// | 4  | Gpd, Imm     |
5139/// | 5  | Gpq, GpbLo   |
5140/// | 6  | Gpq, Imm     |
5141/// | 7  | Gpw, GpbLo   |
5142/// | 8  | Gpw, Imm     |
5143/// | 9  | Mem, GpbLo   |
5144/// | 10 | Mem, Imm     |
5145/// +----+--------------+
5146/// ```
5147pub trait SarEmitter<A, B> {
5148    fn sar(&mut self, op0: A, op1: B);
5149}
5150
5151impl<'a> SarEmitter<GpbLo, Imm> for Assembler<'a> {
5152    fn sar(&mut self, op0: GpbLo, op1: Imm) {
5153        self.emit(SAR8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5154    }
5155}
5156
5157impl<'a> SarEmitter<Mem, Imm> for Assembler<'a> {
5158    fn sar(&mut self, op0: Mem, op1: Imm) {
5159        self.emit(SAR8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5160    }
5161}
5162
5163impl<'a> SarEmitter<Gpw, Imm> for Assembler<'a> {
5164    fn sar(&mut self, op0: Gpw, op1: Imm) {
5165        self.emit(SAR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5166    }
5167}
5168
5169impl<'a> SarEmitter<Gpd, Imm> for Assembler<'a> {
5170    fn sar(&mut self, op0: Gpd, op1: Imm) {
5171        self.emit(SAR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5172    }
5173}
5174
5175impl<'a> SarEmitter<Gpq, Imm> for Assembler<'a> {
5176    fn sar(&mut self, op0: Gpq, op1: Imm) {
5177        self.emit(SAR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5178    }
5179}
5180
5181impl<'a> SarEmitter<GpbLo, GpbLo> for Assembler<'a> {
5182    fn sar(&mut self, op0: GpbLo, op1: GpbLo) {
5183        self.emit(SAR8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5184    }
5185}
5186
5187impl<'a> SarEmitter<Mem, GpbLo> for Assembler<'a> {
5188    fn sar(&mut self, op0: Mem, op1: GpbLo) {
5189        self.emit(SAR8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5190    }
5191}
5192
5193impl<'a> SarEmitter<Gpw, GpbLo> for Assembler<'a> {
5194    fn sar(&mut self, op0: Gpw, op1: GpbLo) {
5195        self.emit(SAR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5196    }
5197}
5198
5199impl<'a> SarEmitter<Gpd, GpbLo> for Assembler<'a> {
5200    fn sar(&mut self, op0: Gpd, op1: GpbLo) {
5201        self.emit(SAR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5202    }
5203}
5204
5205impl<'a> SarEmitter<Gpq, GpbLo> for Assembler<'a> {
5206    fn sar(&mut self, op0: Gpq, op1: GpbLo) {
5207        self.emit(SAR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5208    }
5209}
5210
5211/// `SBB`.
5212///
5213/// Supported operand variants:
5214///
5215/// ```text
5216/// +----+--------------+
5217/// | #  | Operands     |
5218/// +----+--------------+
5219/// | 1  | GpbLo, GpbLo |
5220/// | 2  | GpbLo, Imm   |
5221/// | 3  | GpbLo, Mem   |
5222/// | 4  | Gpd, Gpd     |
5223/// | 5  | Gpd, Imm     |
5224/// | 6  | Gpd, Mem     |
5225/// | 7  | Gpq, Gpq     |
5226/// | 8  | Gpq, Imm     |
5227/// | 9  | Gpq, Mem     |
5228/// | 10 | Gpw, Gpw     |
5229/// | 11 | Gpw, Imm     |
5230/// | 12 | Gpw, Mem     |
5231/// | 13 | Mem, GpbLo   |
5232/// | 14 | Mem, Gpd     |
5233/// | 15 | Mem, Gpq     |
5234/// | 16 | Mem, Gpw     |
5235/// | 17 | Mem, Imm     |
5236/// +----+--------------+
5237/// ```
5238pub trait SbbEmitter<A, B> {
5239    fn sbb(&mut self, op0: A, op1: B);
5240}
5241
5242impl<'a> SbbEmitter<GpbLo, GpbLo> for Assembler<'a> {
5243    fn sbb(&mut self, op0: GpbLo, op1: GpbLo) {
5244        self.emit(SBB8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5245    }
5246}
5247
5248impl<'a> SbbEmitter<Mem, GpbLo> for Assembler<'a> {
5249    fn sbb(&mut self, op0: Mem, op1: GpbLo) {
5250        self.emit(SBB8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5251    }
5252}
5253
5254impl<'a> SbbEmitter<Gpw, Gpw> for Assembler<'a> {
5255    fn sbb(&mut self, op0: Gpw, op1: Gpw) {
5256        self.emit(SBB16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5257    }
5258}
5259
5260impl<'a> SbbEmitter<Mem, Gpw> for Assembler<'a> {
5261    fn sbb(&mut self, op0: Mem, op1: Gpw) {
5262        self.emit(SBB16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5263    }
5264}
5265
5266impl<'a> SbbEmitter<Gpd, Gpd> for Assembler<'a> {
5267    fn sbb(&mut self, op0: Gpd, op1: Gpd) {
5268        self.emit(SBB32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5269    }
5270}
5271
5272impl<'a> SbbEmitter<Mem, Gpd> for Assembler<'a> {
5273    fn sbb(&mut self, op0: Mem, op1: Gpd) {
5274        self.emit(SBB32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5275    }
5276}
5277
5278impl<'a> SbbEmitter<Gpq, Gpq> for Assembler<'a> {
5279    fn sbb(&mut self, op0: Gpq, op1: Gpq) {
5280        self.emit(SBB64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5281    }
5282}
5283
5284impl<'a> SbbEmitter<Mem, Gpq> for Assembler<'a> {
5285    fn sbb(&mut self, op0: Mem, op1: Gpq) {
5286        self.emit(SBB64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5287    }
5288}
5289
5290impl<'a> SbbEmitter<GpbLo, Mem> for Assembler<'a> {
5291    fn sbb(&mut self, op0: GpbLo, op1: Mem) {
5292        self.emit(SBB8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5293    }
5294}
5295
5296impl<'a> SbbEmitter<Gpw, Mem> for Assembler<'a> {
5297    fn sbb(&mut self, op0: Gpw, op1: Mem) {
5298        self.emit(SBB16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5299    }
5300}
5301
5302impl<'a> SbbEmitter<Gpd, Mem> for Assembler<'a> {
5303    fn sbb(&mut self, op0: Gpd, op1: Mem) {
5304        self.emit(SBB32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5305    }
5306}
5307
5308impl<'a> SbbEmitter<Gpq, Mem> for Assembler<'a> {
5309    fn sbb(&mut self, op0: Gpq, op1: Mem) {
5310        self.emit(SBB64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5311    }
5312}
5313
5314impl<'a> SbbEmitter<GpbLo, Imm> for Assembler<'a> {
5315    fn sbb(&mut self, op0: GpbLo, op1: Imm) {
5316        self.emit(SBB8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5317    }
5318}
5319
5320impl<'a> SbbEmitter<Gpw, Imm> for Assembler<'a> {
5321    fn sbb(&mut self, op0: Gpw, op1: Imm) {
5322        self.emit(SBB16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5323    }
5324}
5325
5326impl<'a> SbbEmitter<Gpd, Imm> for Assembler<'a> {
5327    fn sbb(&mut self, op0: Gpd, op1: Imm) {
5328        self.emit(SBB32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5329    }
5330}
5331
5332impl<'a> SbbEmitter<Gpq, Imm> for Assembler<'a> {
5333    fn sbb(&mut self, op0: Gpq, op1: Imm) {
5334        self.emit(SBB64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5335    }
5336}
5337
5338impl<'a> SbbEmitter<Mem, Imm> for Assembler<'a> {
5339    fn sbb(&mut self, op0: Mem, op1: Imm) {
5340        self.emit(SBB8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5341    }
5342}
5343
5344/// `SCAS`.
5345///
5346/// Supported operand variants:
5347///
5348/// ```text
5349/// +---+----------+
5350/// | # | Operands |
5351/// +---+----------+
5352/// | 1 | (none)   |
5353/// +---+----------+
5354/// ```
5355pub trait ScasEmitter {
5356    fn scas(&mut self);
5357}
5358
5359impl<'a> ScasEmitter for Assembler<'a> {
5360    fn scas(&mut self) {
5361        self.emit(SCAS8, &NOREG, &NOREG, &NOREG, &NOREG);
5362    }
5363}
5364
5365/// `SETA`.
5366///
5367/// Supported operand variants:
5368///
5369/// ```text
5370/// +---+----------+
5371/// | # | Operands |
5372/// +---+----------+
5373/// | 1 | GpbLo    |
5374/// | 2 | Mem      |
5375/// +---+----------+
5376/// ```
5377pub trait SetaEmitter<A> {
5378    fn seta(&mut self, op0: A);
5379}
5380
5381impl<'a> SetaEmitter<GpbLo> for Assembler<'a> {
5382    fn seta(&mut self, op0: GpbLo) {
5383        self.emit(SETA8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5384    }
5385}
5386
5387impl<'a> SetaEmitter<Mem> for Assembler<'a> {
5388    fn seta(&mut self, op0: Mem) {
5389        self.emit(SETA8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5390    }
5391}
5392
5393/// `SETBE`.
5394///
5395/// Supported operand variants:
5396///
5397/// ```text
5398/// +---+----------+
5399/// | # | Operands |
5400/// +---+----------+
5401/// | 1 | GpbLo    |
5402/// | 2 | Mem      |
5403/// +---+----------+
5404/// ```
5405pub trait SetbeEmitter<A> {
5406    fn setbe(&mut self, op0: A);
5407}
5408
5409impl<'a> SetbeEmitter<GpbLo> for Assembler<'a> {
5410    fn setbe(&mut self, op0: GpbLo) {
5411        self.emit(SETBE8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5412    }
5413}
5414
5415impl<'a> SetbeEmitter<Mem> for Assembler<'a> {
5416    fn setbe(&mut self, op0: Mem) {
5417        self.emit(SETBE8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5418    }
5419}
5420
5421/// `SETC`.
5422///
5423/// Supported operand variants:
5424///
5425/// ```text
5426/// +---+----------+
5427/// | # | Operands |
5428/// +---+----------+
5429/// | 1 | GpbLo    |
5430/// | 2 | Mem      |
5431/// +---+----------+
5432/// ```
5433pub trait SetcEmitter<A> {
5434    fn setc(&mut self, op0: A);
5435}
5436
5437impl<'a> SetcEmitter<GpbLo> for Assembler<'a> {
5438    fn setc(&mut self, op0: GpbLo) {
5439        self.emit(SETC8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5440    }
5441}
5442
5443impl<'a> SetcEmitter<Mem> for Assembler<'a> {
5444    fn setc(&mut self, op0: Mem) {
5445        self.emit(SETC8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5446    }
5447}
5448
5449/// `SETG`.
5450///
5451/// Supported operand variants:
5452///
5453/// ```text
5454/// +---+----------+
5455/// | # | Operands |
5456/// +---+----------+
5457/// | 1 | GpbLo    |
5458/// | 2 | Mem      |
5459/// +---+----------+
5460/// ```
5461pub trait SetgEmitter<A> {
5462    fn setg(&mut self, op0: A);
5463}
5464
5465impl<'a> SetgEmitter<GpbLo> for Assembler<'a> {
5466    fn setg(&mut self, op0: GpbLo) {
5467        self.emit(SETG8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5468    }
5469}
5470
5471impl<'a> SetgEmitter<Mem> for Assembler<'a> {
5472    fn setg(&mut self, op0: Mem) {
5473        self.emit(SETG8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5474    }
5475}
5476
5477/// `SETGE`.
5478///
5479/// Supported operand variants:
5480///
5481/// ```text
5482/// +---+----------+
5483/// | # | Operands |
5484/// +---+----------+
5485/// | 1 | GpbLo    |
5486/// | 2 | Mem      |
5487/// +---+----------+
5488/// ```
5489pub trait SetgeEmitter<A> {
5490    fn setge(&mut self, op0: A);
5491}
5492
5493impl<'a> SetgeEmitter<GpbLo> for Assembler<'a> {
5494    fn setge(&mut self, op0: GpbLo) {
5495        self.emit(SETGE8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5496    }
5497}
5498
5499impl<'a> SetgeEmitter<Mem> for Assembler<'a> {
5500    fn setge(&mut self, op0: Mem) {
5501        self.emit(SETGE8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5502    }
5503}
5504
5505/// `SETL`.
5506///
5507/// Supported operand variants:
5508///
5509/// ```text
5510/// +---+----------+
5511/// | # | Operands |
5512/// +---+----------+
5513/// | 1 | GpbLo    |
5514/// | 2 | Mem      |
5515/// +---+----------+
5516/// ```
5517pub trait SetlEmitter<A> {
5518    fn setl(&mut self, op0: A);
5519}
5520
5521impl<'a> SetlEmitter<GpbLo> for Assembler<'a> {
5522    fn setl(&mut self, op0: GpbLo) {
5523        self.emit(SETL8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5524    }
5525}
5526
5527impl<'a> SetlEmitter<Mem> for Assembler<'a> {
5528    fn setl(&mut self, op0: Mem) {
5529        self.emit(SETL8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5530    }
5531}
5532
5533/// `SETLE`.
5534///
5535/// Supported operand variants:
5536///
5537/// ```text
5538/// +---+----------+
5539/// | # | Operands |
5540/// +---+----------+
5541/// | 1 | GpbLo    |
5542/// | 2 | Mem      |
5543/// +---+----------+
5544/// ```
5545pub trait SetleEmitter<A> {
5546    fn setle(&mut self, op0: A);
5547}
5548
5549impl<'a> SetleEmitter<GpbLo> for Assembler<'a> {
5550    fn setle(&mut self, op0: GpbLo) {
5551        self.emit(SETLE8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5552    }
5553}
5554
5555impl<'a> SetleEmitter<Mem> for Assembler<'a> {
5556    fn setle(&mut self, op0: Mem) {
5557        self.emit(SETLE8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5558    }
5559}
5560
5561/// `SETNC`.
5562///
5563/// Supported operand variants:
5564///
5565/// ```text
5566/// +---+----------+
5567/// | # | Operands |
5568/// +---+----------+
5569/// | 1 | GpbLo    |
5570/// | 2 | Mem      |
5571/// +---+----------+
5572/// ```
5573pub trait SetncEmitter<A> {
5574    fn setnc(&mut self, op0: A);
5575}
5576
5577impl<'a> SetncEmitter<GpbLo> for Assembler<'a> {
5578    fn setnc(&mut self, op0: GpbLo) {
5579        self.emit(SETNC8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5580    }
5581}
5582
5583impl<'a> SetncEmitter<Mem> for Assembler<'a> {
5584    fn setnc(&mut self, op0: Mem) {
5585        self.emit(SETNC8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5586    }
5587}
5588
5589/// `SETNO`.
5590///
5591/// Supported operand variants:
5592///
5593/// ```text
5594/// +---+----------+
5595/// | # | Operands |
5596/// +---+----------+
5597/// | 1 | GpbLo    |
5598/// | 2 | Mem      |
5599/// +---+----------+
5600/// ```
5601pub trait SetnoEmitter<A> {
5602    fn setno(&mut self, op0: A);
5603}
5604
5605impl<'a> SetnoEmitter<GpbLo> for Assembler<'a> {
5606    fn setno(&mut self, op0: GpbLo) {
5607        self.emit(SETNO8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5608    }
5609}
5610
5611impl<'a> SetnoEmitter<Mem> for Assembler<'a> {
5612    fn setno(&mut self, op0: Mem) {
5613        self.emit(SETNO8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5614    }
5615}
5616
5617/// `SETNP`.
5618///
5619/// Supported operand variants:
5620///
5621/// ```text
5622/// +---+----------+
5623/// | # | Operands |
5624/// +---+----------+
5625/// | 1 | GpbLo    |
5626/// | 2 | Mem      |
5627/// +---+----------+
5628/// ```
5629pub trait SetnpEmitter<A> {
5630    fn setnp(&mut self, op0: A);
5631}
5632
5633impl<'a> SetnpEmitter<GpbLo> for Assembler<'a> {
5634    fn setnp(&mut self, op0: GpbLo) {
5635        self.emit(SETNP8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5636    }
5637}
5638
5639impl<'a> SetnpEmitter<Mem> for Assembler<'a> {
5640    fn setnp(&mut self, op0: Mem) {
5641        self.emit(SETNP8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5642    }
5643}
5644
5645/// `SETNS`.
5646///
5647/// Supported operand variants:
5648///
5649/// ```text
5650/// +---+----------+
5651/// | # | Operands |
5652/// +---+----------+
5653/// | 1 | GpbLo    |
5654/// | 2 | Mem      |
5655/// +---+----------+
5656/// ```
5657pub trait SetnsEmitter<A> {
5658    fn setns(&mut self, op0: A);
5659}
5660
5661impl<'a> SetnsEmitter<GpbLo> for Assembler<'a> {
5662    fn setns(&mut self, op0: GpbLo) {
5663        self.emit(SETNS8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5664    }
5665}
5666
5667impl<'a> SetnsEmitter<Mem> for Assembler<'a> {
5668    fn setns(&mut self, op0: Mem) {
5669        self.emit(SETNS8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5670    }
5671}
5672
5673/// `SETNZ`.
5674///
5675/// Supported operand variants:
5676///
5677/// ```text
5678/// +---+----------+
5679/// | # | Operands |
5680/// +---+----------+
5681/// | 1 | GpbLo    |
5682/// | 2 | Mem      |
5683/// +---+----------+
5684/// ```
5685pub trait SetnzEmitter<A> {
5686    fn setnz(&mut self, op0: A);
5687}
5688
5689impl<'a> SetnzEmitter<GpbLo> for Assembler<'a> {
5690    fn setnz(&mut self, op0: GpbLo) {
5691        self.emit(SETNZ8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5692    }
5693}
5694
5695impl<'a> SetnzEmitter<Mem> for Assembler<'a> {
5696    fn setnz(&mut self, op0: Mem) {
5697        self.emit(SETNZ8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5698    }
5699}
5700
5701/// `SETO`.
5702///
5703/// Supported operand variants:
5704///
5705/// ```text
5706/// +---+----------+
5707/// | # | Operands |
5708/// +---+----------+
5709/// | 1 | GpbLo    |
5710/// | 2 | Mem      |
5711/// +---+----------+
5712/// ```
5713pub trait SetoEmitter<A> {
5714    fn seto(&mut self, op0: A);
5715}
5716
5717impl<'a> SetoEmitter<GpbLo> for Assembler<'a> {
5718    fn seto(&mut self, op0: GpbLo) {
5719        self.emit(SETO8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5720    }
5721}
5722
5723impl<'a> SetoEmitter<Mem> for Assembler<'a> {
5724    fn seto(&mut self, op0: Mem) {
5725        self.emit(SETO8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5726    }
5727}
5728
5729/// `SETP`.
5730///
5731/// Supported operand variants:
5732///
5733/// ```text
5734/// +---+----------+
5735/// | # | Operands |
5736/// +---+----------+
5737/// | 1 | GpbLo    |
5738/// | 2 | Mem      |
5739/// +---+----------+
5740/// ```
5741pub trait SetpEmitter<A> {
5742    fn setp(&mut self, op0: A);
5743}
5744
5745impl<'a> SetpEmitter<GpbLo> for Assembler<'a> {
5746    fn setp(&mut self, op0: GpbLo) {
5747        self.emit(SETP8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5748    }
5749}
5750
5751impl<'a> SetpEmitter<Mem> for Assembler<'a> {
5752    fn setp(&mut self, op0: Mem) {
5753        self.emit(SETP8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5754    }
5755}
5756
5757/// `SETS`.
5758///
5759/// Supported operand variants:
5760///
5761/// ```text
5762/// +---+----------+
5763/// | # | Operands |
5764/// +---+----------+
5765/// | 1 | GpbLo    |
5766/// | 2 | Mem      |
5767/// +---+----------+
5768/// ```
5769pub trait SetsEmitter<A> {
5770    fn sets(&mut self, op0: A);
5771}
5772
5773impl<'a> SetsEmitter<GpbLo> for Assembler<'a> {
5774    fn sets(&mut self, op0: GpbLo) {
5775        self.emit(SETS8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5776    }
5777}
5778
5779impl<'a> SetsEmitter<Mem> for Assembler<'a> {
5780    fn sets(&mut self, op0: Mem) {
5781        self.emit(SETS8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5782    }
5783}
5784
5785/// `SETZ`.
5786///
5787/// Supported operand variants:
5788///
5789/// ```text
5790/// +---+----------+
5791/// | # | Operands |
5792/// +---+----------+
5793/// | 1 | GpbLo    |
5794/// | 2 | Mem      |
5795/// +---+----------+
5796/// ```
5797pub trait SetzEmitter<A> {
5798    fn setz(&mut self, op0: A);
5799}
5800
5801impl<'a> SetzEmitter<GpbLo> for Assembler<'a> {
5802    fn setz(&mut self, op0: GpbLo) {
5803        self.emit(SETZ8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5804    }
5805}
5806
5807impl<'a> SetzEmitter<Mem> for Assembler<'a> {
5808    fn setz(&mut self, op0: Mem) {
5809        self.emit(SETZ8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5810    }
5811}
5812
5813/// `SETCC`.
5814///
5815/// Supported operand variants:
5816///
5817/// ```text
5818/// +---+----------+
5819/// | # | Operands |
5820/// +---+----------+
5821/// | 1 | GpbLo    |
5822/// | 2 | Mem      |
5823/// +---+----------+
5824/// ```
5825pub trait SetccEmitter<A> {
5826    fn setcc(&mut self, op0: A);
5827}
5828
5829impl<'a> SetccEmitter<GpbLo> for Assembler<'a> {
5830    fn setcc(&mut self, op0: GpbLo) {
5831        self.emit(SETCC8R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5832    }
5833}
5834
5835impl<'a> SetccEmitter<Mem> for Assembler<'a> {
5836    fn setcc(&mut self, op0: Mem) {
5837        self.emit(SETCC8M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5838    }
5839}
5840
5841/// `SGDT`.
5842///
5843/// Supported operand variants:
5844///
5845/// ```text
5846/// +---+----------+
5847/// | # | Operands |
5848/// +---+----------+
5849/// | 1 | Mem      |
5850/// +---+----------+
5851/// ```
5852pub trait SgdtEmitter<A> {
5853    fn sgdt(&mut self, op0: A);
5854}
5855
5856impl<'a> SgdtEmitter<Mem> for Assembler<'a> {
5857    fn sgdt(&mut self, op0: Mem) {
5858        self.emit(SGDTM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
5859    }
5860}
5861
5862/// `SHL`.
5863///
5864/// Supported operand variants:
5865///
5866/// ```text
5867/// +----+--------------+
5868/// | #  | Operands     |
5869/// +----+--------------+
5870/// | 1  | GpbLo, GpbLo |
5871/// | 2  | GpbLo, Imm   |
5872/// | 3  | Gpd, GpbLo   |
5873/// | 4  | Gpd, Imm     |
5874/// | 5  | Gpq, GpbLo   |
5875/// | 6  | Gpq, Imm     |
5876/// | 7  | Gpw, GpbLo   |
5877/// | 8  | Gpw, Imm     |
5878/// | 9  | Mem, GpbLo   |
5879/// | 10 | Mem, Imm     |
5880/// +----+--------------+
5881/// ```
5882pub trait ShlEmitter<A, B> {
5883    fn shl(&mut self, op0: A, op1: B);
5884}
5885
5886impl<'a> ShlEmitter<GpbLo, Imm> for Assembler<'a> {
5887    fn shl(&mut self, op0: GpbLo, op1: Imm) {
5888        self.emit(SHL8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5889    }
5890}
5891
5892impl<'a> ShlEmitter<Mem, Imm> for Assembler<'a> {
5893    fn shl(&mut self, op0: Mem, op1: Imm) {
5894        self.emit(SHL8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5895    }
5896}
5897
5898impl<'a> ShlEmitter<Gpw, Imm> for Assembler<'a> {
5899    fn shl(&mut self, op0: Gpw, op1: Imm) {
5900        self.emit(SHL16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5901    }
5902}
5903
5904impl<'a> ShlEmitter<Gpd, Imm> for Assembler<'a> {
5905    fn shl(&mut self, op0: Gpd, op1: Imm) {
5906        self.emit(SHL32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5907    }
5908}
5909
5910impl<'a> ShlEmitter<Gpq, Imm> for Assembler<'a> {
5911    fn shl(&mut self, op0: Gpq, op1: Imm) {
5912        self.emit(SHL64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5913    }
5914}
5915
5916impl<'a> ShlEmitter<GpbLo, GpbLo> for Assembler<'a> {
5917    fn shl(&mut self, op0: GpbLo, op1: GpbLo) {
5918        self.emit(SHL8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5919    }
5920}
5921
5922impl<'a> ShlEmitter<Mem, GpbLo> for Assembler<'a> {
5923    fn shl(&mut self, op0: Mem, op1: GpbLo) {
5924        self.emit(SHL8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5925    }
5926}
5927
5928impl<'a> ShlEmitter<Gpw, GpbLo> for Assembler<'a> {
5929    fn shl(&mut self, op0: Gpw, op1: GpbLo) {
5930        self.emit(SHL16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5931    }
5932}
5933
5934impl<'a> ShlEmitter<Gpd, GpbLo> for Assembler<'a> {
5935    fn shl(&mut self, op0: Gpd, op1: GpbLo) {
5936        self.emit(SHL32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5937    }
5938}
5939
5940impl<'a> ShlEmitter<Gpq, GpbLo> for Assembler<'a> {
5941    fn shl(&mut self, op0: Gpq, op1: GpbLo) {
5942        self.emit(SHL64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
5943    }
5944}
5945
5946/// `SHLD`.
5947///
5948/// Supported operand variants:
5949///
5950/// ```text
5951/// +----+-----------------+
5952/// | #  | Operands        |
5953/// +----+-----------------+
5954/// | 1  | Gpd, Gpd, GpbLo |
5955/// | 2  | Gpd, Gpd, Imm   |
5956/// | 3  | Gpq, Gpq, GpbLo |
5957/// | 4  | Gpq, Gpq, Imm   |
5958/// | 5  | Gpw, Gpw, GpbLo |
5959/// | 6  | Gpw, Gpw, Imm   |
5960/// | 7  | Mem, Gpd, GpbLo |
5961/// | 8  | Mem, Gpd, Imm   |
5962/// | 9  | Mem, Gpq, GpbLo |
5963/// | 10 | Mem, Gpq, Imm   |
5964/// | 11 | Mem, Gpw, GpbLo |
5965/// | 12 | Mem, Gpw, Imm   |
5966/// +----+-----------------+
5967/// ```
5968pub trait ShldEmitter<A, B, C> {
5969    fn shld(&mut self, op0: A, op1: B, op2: C);
5970}
5971
5972impl<'a> ShldEmitter<Gpw, Gpw, Imm> for Assembler<'a> {
5973    fn shld(&mut self, op0: Gpw, op1: Gpw, op2: Imm) {
5974        self.emit(
5975            SHLD16RRI,
5976            op0.as_operand(),
5977            op1.as_operand(),
5978            op2.as_operand(),
5979            &NOREG,
5980        );
5981    }
5982}
5983
5984impl<'a> ShldEmitter<Mem, Gpw, Imm> for Assembler<'a> {
5985    fn shld(&mut self, op0: Mem, op1: Gpw, op2: Imm) {
5986        self.emit(
5987            SHLD16MRI,
5988            op0.as_operand(),
5989            op1.as_operand(),
5990            op2.as_operand(),
5991            &NOREG,
5992        );
5993    }
5994}
5995
5996impl<'a> ShldEmitter<Gpd, Gpd, Imm> for Assembler<'a> {
5997    fn shld(&mut self, op0: Gpd, op1: Gpd, op2: Imm) {
5998        self.emit(
5999            SHLD32RRI,
6000            op0.as_operand(),
6001            op1.as_operand(),
6002            op2.as_operand(),
6003            &NOREG,
6004        );
6005    }
6006}
6007
6008impl<'a> ShldEmitter<Mem, Gpd, Imm> for Assembler<'a> {
6009    fn shld(&mut self, op0: Mem, op1: Gpd, op2: Imm) {
6010        self.emit(
6011            SHLD32MRI,
6012            op0.as_operand(),
6013            op1.as_operand(),
6014            op2.as_operand(),
6015            &NOREG,
6016        );
6017    }
6018}
6019
6020impl<'a> ShldEmitter<Gpq, Gpq, Imm> for Assembler<'a> {
6021    fn shld(&mut self, op0: Gpq, op1: Gpq, op2: Imm) {
6022        self.emit(
6023            SHLD64RRI,
6024            op0.as_operand(),
6025            op1.as_operand(),
6026            op2.as_operand(),
6027            &NOREG,
6028        );
6029    }
6030}
6031
6032impl<'a> ShldEmitter<Mem, Gpq, Imm> for Assembler<'a> {
6033    fn shld(&mut self, op0: Mem, op1: Gpq, op2: Imm) {
6034        self.emit(
6035            SHLD64MRI,
6036            op0.as_operand(),
6037            op1.as_operand(),
6038            op2.as_operand(),
6039            &NOREG,
6040        );
6041    }
6042}
6043
6044impl<'a> ShldEmitter<Gpw, Gpw, GpbLo> for Assembler<'a> {
6045    fn shld(&mut self, op0: Gpw, op1: Gpw, op2: GpbLo) {
6046        self.emit(
6047            SHLD16RRR,
6048            op0.as_operand(),
6049            op1.as_operand(),
6050            op2.as_operand(),
6051            &NOREG,
6052        );
6053    }
6054}
6055
6056impl<'a> ShldEmitter<Mem, Gpw, GpbLo> for Assembler<'a> {
6057    fn shld(&mut self, op0: Mem, op1: Gpw, op2: GpbLo) {
6058        self.emit(
6059            SHLD16MRR,
6060            op0.as_operand(),
6061            op1.as_operand(),
6062            op2.as_operand(),
6063            &NOREG,
6064        );
6065    }
6066}
6067
6068impl<'a> ShldEmitter<Gpd, Gpd, GpbLo> for Assembler<'a> {
6069    fn shld(&mut self, op0: Gpd, op1: Gpd, op2: GpbLo) {
6070        self.emit(
6071            SHLD32RRR,
6072            op0.as_operand(),
6073            op1.as_operand(),
6074            op2.as_operand(),
6075            &NOREG,
6076        );
6077    }
6078}
6079
6080impl<'a> ShldEmitter<Mem, Gpd, GpbLo> for Assembler<'a> {
6081    fn shld(&mut self, op0: Mem, op1: Gpd, op2: GpbLo) {
6082        self.emit(
6083            SHLD32MRR,
6084            op0.as_operand(),
6085            op1.as_operand(),
6086            op2.as_operand(),
6087            &NOREG,
6088        );
6089    }
6090}
6091
6092impl<'a> ShldEmitter<Gpq, Gpq, GpbLo> for Assembler<'a> {
6093    fn shld(&mut self, op0: Gpq, op1: Gpq, op2: GpbLo) {
6094        self.emit(
6095            SHLD64RRR,
6096            op0.as_operand(),
6097            op1.as_operand(),
6098            op2.as_operand(),
6099            &NOREG,
6100        );
6101    }
6102}
6103
6104impl<'a> ShldEmitter<Mem, Gpq, GpbLo> for Assembler<'a> {
6105    fn shld(&mut self, op0: Mem, op1: Gpq, op2: GpbLo) {
6106        self.emit(
6107            SHLD64MRR,
6108            op0.as_operand(),
6109            op1.as_operand(),
6110            op2.as_operand(),
6111            &NOREG,
6112        );
6113    }
6114}
6115
6116/// `SHR`.
6117///
6118/// Supported operand variants:
6119///
6120/// ```text
6121/// +----+--------------+
6122/// | #  | Operands     |
6123/// +----+--------------+
6124/// | 1  | GpbLo, GpbLo |
6125/// | 2  | GpbLo, Imm   |
6126/// | 3  | Gpd, GpbLo   |
6127/// | 4  | Gpd, Imm     |
6128/// | 5  | Gpq, GpbLo   |
6129/// | 6  | Gpq, Imm     |
6130/// | 7  | Gpw, GpbLo   |
6131/// | 8  | Gpw, Imm     |
6132/// | 9  | Mem, GpbLo   |
6133/// | 10 | Mem, Imm     |
6134/// +----+--------------+
6135/// ```
6136pub trait ShrEmitter<A, B> {
6137    fn shr(&mut self, op0: A, op1: B);
6138}
6139
6140impl<'a> ShrEmitter<GpbLo, Imm> for Assembler<'a> {
6141    fn shr(&mut self, op0: GpbLo, op1: Imm) {
6142        self.emit(SHR8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6143    }
6144}
6145
6146impl<'a> ShrEmitter<Mem, Imm> for Assembler<'a> {
6147    fn shr(&mut self, op0: Mem, op1: Imm) {
6148        self.emit(SHR8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6149    }
6150}
6151
6152impl<'a> ShrEmitter<Gpw, Imm> for Assembler<'a> {
6153    fn shr(&mut self, op0: Gpw, op1: Imm) {
6154        self.emit(SHR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6155    }
6156}
6157
6158impl<'a> ShrEmitter<Gpd, Imm> for Assembler<'a> {
6159    fn shr(&mut self, op0: Gpd, op1: Imm) {
6160        self.emit(SHR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6161    }
6162}
6163
6164impl<'a> ShrEmitter<Gpq, Imm> for Assembler<'a> {
6165    fn shr(&mut self, op0: Gpq, op1: Imm) {
6166        self.emit(SHR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6167    }
6168}
6169
6170impl<'a> ShrEmitter<GpbLo, GpbLo> for Assembler<'a> {
6171    fn shr(&mut self, op0: GpbLo, op1: GpbLo) {
6172        self.emit(SHR8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6173    }
6174}
6175
6176impl<'a> ShrEmitter<Mem, GpbLo> for Assembler<'a> {
6177    fn shr(&mut self, op0: Mem, op1: GpbLo) {
6178        self.emit(SHR8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6179    }
6180}
6181
6182impl<'a> ShrEmitter<Gpw, GpbLo> for Assembler<'a> {
6183    fn shr(&mut self, op0: Gpw, op1: GpbLo) {
6184        self.emit(SHR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6185    }
6186}
6187
6188impl<'a> ShrEmitter<Gpd, GpbLo> for Assembler<'a> {
6189    fn shr(&mut self, op0: Gpd, op1: GpbLo) {
6190        self.emit(SHR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6191    }
6192}
6193
6194impl<'a> ShrEmitter<Gpq, GpbLo> for Assembler<'a> {
6195    fn shr(&mut self, op0: Gpq, op1: GpbLo) {
6196        self.emit(SHR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6197    }
6198}
6199
6200/// `SHRD`.
6201///
6202/// Supported operand variants:
6203///
6204/// ```text
6205/// +----+-----------------+
6206/// | #  | Operands        |
6207/// +----+-----------------+
6208/// | 1  | Gpd, Gpd, GpbLo |
6209/// | 2  | Gpd, Gpd, Imm   |
6210/// | 3  | Gpq, Gpq, GpbLo |
6211/// | 4  | Gpq, Gpq, Imm   |
6212/// | 5  | Gpw, Gpw, GpbLo |
6213/// | 6  | Gpw, Gpw, Imm   |
6214/// | 7  | Mem, Gpd, GpbLo |
6215/// | 8  | Mem, Gpd, Imm   |
6216/// | 9  | Mem, Gpq, GpbLo |
6217/// | 10 | Mem, Gpq, Imm   |
6218/// | 11 | Mem, Gpw, GpbLo |
6219/// | 12 | Mem, Gpw, Imm   |
6220/// +----+-----------------+
6221/// ```
6222pub trait ShrdEmitter<A, B, C> {
6223    fn shrd(&mut self, op0: A, op1: B, op2: C);
6224}
6225
6226impl<'a> ShrdEmitter<Gpw, Gpw, Imm> for Assembler<'a> {
6227    fn shrd(&mut self, op0: Gpw, op1: Gpw, op2: Imm) {
6228        self.emit(
6229            SHRD16RRI,
6230            op0.as_operand(),
6231            op1.as_operand(),
6232            op2.as_operand(),
6233            &NOREG,
6234        );
6235    }
6236}
6237
6238impl<'a> ShrdEmitter<Mem, Gpw, Imm> for Assembler<'a> {
6239    fn shrd(&mut self, op0: Mem, op1: Gpw, op2: Imm) {
6240        self.emit(
6241            SHRD16MRI,
6242            op0.as_operand(),
6243            op1.as_operand(),
6244            op2.as_operand(),
6245            &NOREG,
6246        );
6247    }
6248}
6249
6250impl<'a> ShrdEmitter<Gpd, Gpd, Imm> for Assembler<'a> {
6251    fn shrd(&mut self, op0: Gpd, op1: Gpd, op2: Imm) {
6252        self.emit(
6253            SHRD32RRI,
6254            op0.as_operand(),
6255            op1.as_operand(),
6256            op2.as_operand(),
6257            &NOREG,
6258        );
6259    }
6260}
6261
6262impl<'a> ShrdEmitter<Mem, Gpd, Imm> for Assembler<'a> {
6263    fn shrd(&mut self, op0: Mem, op1: Gpd, op2: Imm) {
6264        self.emit(
6265            SHRD32MRI,
6266            op0.as_operand(),
6267            op1.as_operand(),
6268            op2.as_operand(),
6269            &NOREG,
6270        );
6271    }
6272}
6273
6274impl<'a> ShrdEmitter<Gpq, Gpq, Imm> for Assembler<'a> {
6275    fn shrd(&mut self, op0: Gpq, op1: Gpq, op2: Imm) {
6276        self.emit(
6277            SHRD64RRI,
6278            op0.as_operand(),
6279            op1.as_operand(),
6280            op2.as_operand(),
6281            &NOREG,
6282        );
6283    }
6284}
6285
6286impl<'a> ShrdEmitter<Mem, Gpq, Imm> for Assembler<'a> {
6287    fn shrd(&mut self, op0: Mem, op1: Gpq, op2: Imm) {
6288        self.emit(
6289            SHRD64MRI,
6290            op0.as_operand(),
6291            op1.as_operand(),
6292            op2.as_operand(),
6293            &NOREG,
6294        );
6295    }
6296}
6297
6298impl<'a> ShrdEmitter<Gpw, Gpw, GpbLo> for Assembler<'a> {
6299    fn shrd(&mut self, op0: Gpw, op1: Gpw, op2: GpbLo) {
6300        self.emit(
6301            SHRD16RRR,
6302            op0.as_operand(),
6303            op1.as_operand(),
6304            op2.as_operand(),
6305            &NOREG,
6306        );
6307    }
6308}
6309
6310impl<'a> ShrdEmitter<Mem, Gpw, GpbLo> for Assembler<'a> {
6311    fn shrd(&mut self, op0: Mem, op1: Gpw, op2: GpbLo) {
6312        self.emit(
6313            SHRD16MRR,
6314            op0.as_operand(),
6315            op1.as_operand(),
6316            op2.as_operand(),
6317            &NOREG,
6318        );
6319    }
6320}
6321
6322impl<'a> ShrdEmitter<Gpd, Gpd, GpbLo> for Assembler<'a> {
6323    fn shrd(&mut self, op0: Gpd, op1: Gpd, op2: GpbLo) {
6324        self.emit(
6325            SHRD32RRR,
6326            op0.as_operand(),
6327            op1.as_operand(),
6328            op2.as_operand(),
6329            &NOREG,
6330        );
6331    }
6332}
6333
6334impl<'a> ShrdEmitter<Mem, Gpd, GpbLo> for Assembler<'a> {
6335    fn shrd(&mut self, op0: Mem, op1: Gpd, op2: GpbLo) {
6336        self.emit(
6337            SHRD32MRR,
6338            op0.as_operand(),
6339            op1.as_operand(),
6340            op2.as_operand(),
6341            &NOREG,
6342        );
6343    }
6344}
6345
6346impl<'a> ShrdEmitter<Gpq, Gpq, GpbLo> for Assembler<'a> {
6347    fn shrd(&mut self, op0: Gpq, op1: Gpq, op2: GpbLo) {
6348        self.emit(
6349            SHRD64RRR,
6350            op0.as_operand(),
6351            op1.as_operand(),
6352            op2.as_operand(),
6353            &NOREG,
6354        );
6355    }
6356}
6357
6358impl<'a> ShrdEmitter<Mem, Gpq, GpbLo> for Assembler<'a> {
6359    fn shrd(&mut self, op0: Mem, op1: Gpq, op2: GpbLo) {
6360        self.emit(
6361            SHRD64MRR,
6362            op0.as_operand(),
6363            op1.as_operand(),
6364            op2.as_operand(),
6365            &NOREG,
6366        );
6367    }
6368}
6369
6370/// `SIDT`.
6371///
6372/// Supported operand variants:
6373///
6374/// ```text
6375/// +---+----------+
6376/// | # | Operands |
6377/// +---+----------+
6378/// | 1 | Mem      |
6379/// +---+----------+
6380/// ```
6381pub trait SidtEmitter<A> {
6382    fn sidt(&mut self, op0: A);
6383}
6384
6385impl<'a> SidtEmitter<Mem> for Assembler<'a> {
6386    fn sidt(&mut self, op0: Mem) {
6387        self.emit(SIDTM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6388    }
6389}
6390
6391/// `SLDT`.
6392///
6393/// Supported operand variants:
6394///
6395/// ```text
6396/// +---+----------+
6397/// | # | Operands |
6398/// +---+----------+
6399/// | 1 | Gpd      |
6400/// | 2 | Mem      |
6401/// +---+----------+
6402/// ```
6403pub trait SldtEmitter<A> {
6404    fn sldt(&mut self, op0: A);
6405}
6406
6407impl<'a> SldtEmitter<Gpd> for Assembler<'a> {
6408    fn sldt(&mut self, op0: Gpd) {
6409        self.emit(SLDTR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6410    }
6411}
6412
6413impl<'a> SldtEmitter<Mem> for Assembler<'a> {
6414    fn sldt(&mut self, op0: Mem) {
6415        self.emit(SLDTM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6416    }
6417}
6418
6419/// `SMSW`.
6420///
6421/// Supported operand variants:
6422///
6423/// ```text
6424/// +---+----------+
6425/// | # | Operands |
6426/// +---+----------+
6427/// | 1 | Gpd      |
6428/// | 2 | Gpq      |
6429/// | 3 | Gpw      |
6430/// | 4 | Mem      |
6431/// +---+----------+
6432/// ```
6433pub trait SmswEmitter<A> {
6434    fn smsw(&mut self, op0: A);
6435}
6436
6437impl<'a> SmswEmitter<Mem> for Assembler<'a> {
6438    fn smsw(&mut self, op0: Mem) {
6439        self.emit(SMSWM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6440    }
6441}
6442
6443impl<'a> SmswEmitter<Gpw> for Assembler<'a> {
6444    fn smsw(&mut self, op0: Gpw) {
6445        self.emit(SMSW16R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6446    }
6447}
6448
6449impl<'a> SmswEmitter<Gpd> for Assembler<'a> {
6450    fn smsw(&mut self, op0: Gpd) {
6451        self.emit(SMSW32R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6452    }
6453}
6454
6455impl<'a> SmswEmitter<Gpq> for Assembler<'a> {
6456    fn smsw(&mut self, op0: Gpq) {
6457        self.emit(SMSW64R, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6458    }
6459}
6460
6461/// `STC`.
6462///
6463/// Supported operand variants:
6464///
6465/// ```text
6466/// +---+----------+
6467/// | # | Operands |
6468/// +---+----------+
6469/// | 1 | (none)   |
6470/// +---+----------+
6471/// ```
6472pub trait StcEmitter {
6473    fn stc(&mut self);
6474}
6475
6476impl<'a> StcEmitter for Assembler<'a> {
6477    fn stc(&mut self) {
6478        self.emit(STC, &NOREG, &NOREG, &NOREG, &NOREG);
6479    }
6480}
6481
6482/// `STD`.
6483///
6484/// Supported operand variants:
6485///
6486/// ```text
6487/// +---+----------+
6488/// | # | Operands |
6489/// +---+----------+
6490/// | 1 | (none)   |
6491/// +---+----------+
6492/// ```
6493pub trait StdEmitter {
6494    fn std(&mut self);
6495}
6496
6497impl<'a> StdEmitter for Assembler<'a> {
6498    fn std(&mut self) {
6499        self.emit(STD, &NOREG, &NOREG, &NOREG, &NOREG);
6500    }
6501}
6502
6503/// `STI`.
6504///
6505/// Supported operand variants:
6506///
6507/// ```text
6508/// +---+----------+
6509/// | # | Operands |
6510/// +---+----------+
6511/// | 1 | (none)   |
6512/// +---+----------+
6513/// ```
6514pub trait StiEmitter {
6515    fn sti(&mut self);
6516}
6517
6518impl<'a> StiEmitter for Assembler<'a> {
6519    fn sti(&mut self) {
6520        self.emit(STI, &NOREG, &NOREG, &NOREG, &NOREG);
6521    }
6522}
6523
6524/// `STOS`.
6525///
6526/// Supported operand variants:
6527///
6528/// ```text
6529/// +---+----------+
6530/// | # | Operands |
6531/// +---+----------+
6532/// | 1 | (none)   |
6533/// +---+----------+
6534/// ```
6535pub trait StosEmitter {
6536    fn stos(&mut self);
6537}
6538
6539impl<'a> StosEmitter for Assembler<'a> {
6540    fn stos(&mut self) {
6541        self.emit(STOS8, &NOREG, &NOREG, &NOREG, &NOREG);
6542    }
6543}
6544
6545/// `STR`.
6546///
6547/// Supported operand variants:
6548///
6549/// ```text
6550/// +---+----------+
6551/// | # | Operands |
6552/// +---+----------+
6553/// | 1 | Gpd      |
6554/// | 2 | Mem      |
6555/// +---+----------+
6556/// ```
6557pub trait StrEmitter<A> {
6558    fn str(&mut self, op0: A);
6559}
6560
6561impl<'a> StrEmitter<Gpd> for Assembler<'a> {
6562    fn str(&mut self, op0: Gpd) {
6563        self.emit(STRR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6564    }
6565}
6566
6567impl<'a> StrEmitter<Mem> for Assembler<'a> {
6568    fn str(&mut self, op0: Mem) {
6569        self.emit(STRM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6570    }
6571}
6572
6573/// `STTILECFG`.
6574///
6575/// Supported operand variants:
6576///
6577/// ```text
6578/// +---+----------+
6579/// | # | Operands |
6580/// +---+----------+
6581/// | 1 | Mem      |
6582/// +---+----------+
6583/// ```
6584pub trait SttilecfgEmitter<A> {
6585    fn sttilecfg(&mut self, op0: A);
6586}
6587
6588impl<'a> SttilecfgEmitter<Mem> for Assembler<'a> {
6589    fn sttilecfg(&mut self, op0: Mem) {
6590        self.emit(STTILECFGM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
6591    }
6592}
6593
6594/// `SUB`.
6595///
6596/// Supported operand variants:
6597///
6598/// ```text
6599/// +----+--------------+
6600/// | #  | Operands     |
6601/// +----+--------------+
6602/// | 1  | GpbLo, GpbLo |
6603/// | 2  | GpbLo, Imm   |
6604/// | 3  | GpbLo, Mem   |
6605/// | 4  | Gpd, Gpd     |
6606/// | 5  | Gpd, Imm     |
6607/// | 6  | Gpd, Mem     |
6608/// | 7  | Gpq, Gpq     |
6609/// | 8  | Gpq, Imm     |
6610/// | 9  | Gpq, Mem     |
6611/// | 10 | Gpw, Gpw     |
6612/// | 11 | Gpw, Imm     |
6613/// | 12 | Gpw, Mem     |
6614/// | 13 | Mem, GpbLo   |
6615/// | 14 | Mem, Gpd     |
6616/// | 15 | Mem, Gpq     |
6617/// | 16 | Mem, Gpw     |
6618/// | 17 | Mem, Imm     |
6619/// +----+--------------+
6620/// ```
6621pub trait SubEmitter<A, B> {
6622    fn sub(&mut self, op0: A, op1: B);
6623}
6624
6625impl<'a> SubEmitter<GpbLo, GpbLo> for Assembler<'a> {
6626    fn sub(&mut self, op0: GpbLo, op1: GpbLo) {
6627        self.emit(SUB8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6628    }
6629}
6630
6631impl<'a> SubEmitter<Mem, GpbLo> for Assembler<'a> {
6632    fn sub(&mut self, op0: Mem, op1: GpbLo) {
6633        self.emit(SUB8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6634    }
6635}
6636
6637impl<'a> SubEmitter<Gpw, Gpw> for Assembler<'a> {
6638    fn sub(&mut self, op0: Gpw, op1: Gpw) {
6639        self.emit(SUB16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6640    }
6641}
6642
6643impl<'a> SubEmitter<Mem, Gpw> for Assembler<'a> {
6644    fn sub(&mut self, op0: Mem, op1: Gpw) {
6645        self.emit(SUB16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6646    }
6647}
6648
6649impl<'a> SubEmitter<Gpd, Gpd> for Assembler<'a> {
6650    fn sub(&mut self, op0: Gpd, op1: Gpd) {
6651        self.emit(SUB32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6652    }
6653}
6654
6655impl<'a> SubEmitter<Mem, Gpd> for Assembler<'a> {
6656    fn sub(&mut self, op0: Mem, op1: Gpd) {
6657        self.emit(SUB32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6658    }
6659}
6660
6661impl<'a> SubEmitter<Gpq, Gpq> for Assembler<'a> {
6662    fn sub(&mut self, op0: Gpq, op1: Gpq) {
6663        self.emit(SUB64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6664    }
6665}
6666
6667impl<'a> SubEmitter<Mem, Gpq> for Assembler<'a> {
6668    fn sub(&mut self, op0: Mem, op1: Gpq) {
6669        self.emit(SUB64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6670    }
6671}
6672
6673impl<'a> SubEmitter<GpbLo, Mem> for Assembler<'a> {
6674    fn sub(&mut self, op0: GpbLo, op1: Mem) {
6675        self.emit(SUB8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6676    }
6677}
6678
6679impl<'a> SubEmitter<Gpw, Mem> for Assembler<'a> {
6680    fn sub(&mut self, op0: Gpw, op1: Mem) {
6681        self.emit(SUB16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6682    }
6683}
6684
6685impl<'a> SubEmitter<Gpd, Mem> for Assembler<'a> {
6686    fn sub(&mut self, op0: Gpd, op1: Mem) {
6687        self.emit(SUB32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6688    }
6689}
6690
6691impl<'a> SubEmitter<Gpq, Mem> for Assembler<'a> {
6692    fn sub(&mut self, op0: Gpq, op1: Mem) {
6693        self.emit(SUB64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6694    }
6695}
6696
6697impl<'a> SubEmitter<GpbLo, Imm> for Assembler<'a> {
6698    fn sub(&mut self, op0: GpbLo, op1: Imm) {
6699        self.emit(SUB8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6700    }
6701}
6702
6703impl<'a> SubEmitter<Gpw, Imm> for Assembler<'a> {
6704    fn sub(&mut self, op0: Gpw, op1: Imm) {
6705        self.emit(SUB16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6706    }
6707}
6708
6709impl<'a> SubEmitter<Gpd, Imm> for Assembler<'a> {
6710    fn sub(&mut self, op0: Gpd, op1: Imm) {
6711        self.emit(SUB32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6712    }
6713}
6714
6715impl<'a> SubEmitter<Gpq, Imm> for Assembler<'a> {
6716    fn sub(&mut self, op0: Gpq, op1: Imm) {
6717        self.emit(SUB64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6718    }
6719}
6720
6721impl<'a> SubEmitter<Mem, Imm> for Assembler<'a> {
6722    fn sub(&mut self, op0: Mem, op1: Imm) {
6723        self.emit(SUB8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
6724    }
6725}
6726
6727/// `SWAPGS`.
6728///
6729/// Supported operand variants:
6730///
6731/// ```text
6732/// +---+----------+
6733/// | # | Operands |
6734/// +---+----------+
6735/// | 1 | (none)   |
6736/// +---+----------+
6737/// ```
6738pub trait SwapgsEmitter {
6739    fn swapgs(&mut self);
6740}
6741
6742impl<'a> SwapgsEmitter for Assembler<'a> {
6743    fn swapgs(&mut self) {
6744        self.emit(SWAPGS, &NOREG, &NOREG, &NOREG, &NOREG);
6745    }
6746}
6747
6748/// `SYSCALL`.
6749///
6750/// Supported operand variants:
6751///
6752/// ```text
6753/// +---+----------+
6754/// | # | Operands |
6755/// +---+----------+
6756/// | 1 | (none)   |
6757/// +---+----------+
6758/// ```
6759pub trait SyscallEmitter {
6760    fn syscall(&mut self);
6761}
6762
6763impl<'a> SyscallEmitter for Assembler<'a> {
6764    fn syscall(&mut self) {
6765        self.emit(SYSCALL, &NOREG, &NOREG, &NOREG, &NOREG);
6766    }
6767}
6768
6769/// `SYSRET`.
6770///
6771/// Supported operand variants:
6772///
6773/// ```text
6774/// +---+----------+
6775/// | # | Operands |
6776/// +---+----------+
6777/// | 1 | (none)   |
6778/// +---+----------+
6779/// ```
6780pub trait SysretEmitter {
6781    fn sysret(&mut self);
6782}
6783
6784impl<'a> SysretEmitter for Assembler<'a> {
6785    fn sysret(&mut self) {
6786        self.emit(SYSRET, &NOREG, &NOREG, &NOREG, &NOREG);
6787    }
6788}
6789
6790/// `TCMMIMFP16PS`.
6791///
6792/// Supported operand variants:
6793///
6794/// ```text
6795/// +---+---------------+
6796/// | # | Operands      |
6797/// +---+---------------+
6798/// | 1 | Tmm, Tmm, Tmm |
6799/// +---+---------------+
6800/// ```
6801pub trait Tcmmimfp16psEmitter<A, B, C> {
6802    fn tcmmimfp16ps(&mut self, op0: A, op1: B, op2: C);
6803}
6804
6805impl<'a> Tcmmimfp16psEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6806    fn tcmmimfp16ps(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6807        self.emit(
6808            TCMMIMFP16PSRRR,
6809            op0.as_operand(),
6810            op1.as_operand(),
6811            op2.as_operand(),
6812            &NOREG,
6813        );
6814    }
6815}
6816
6817/// `TCMMRLFP16PS`.
6818///
6819/// Supported operand variants:
6820///
6821/// ```text
6822/// +---+---------------+
6823/// | # | Operands      |
6824/// +---+---------------+
6825/// | 1 | Tmm, Tmm, Tmm |
6826/// +---+---------------+
6827/// ```
6828pub trait Tcmmrlfp16psEmitter<A, B, C> {
6829    fn tcmmrlfp16ps(&mut self, op0: A, op1: B, op2: C);
6830}
6831
6832impl<'a> Tcmmrlfp16psEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6833    fn tcmmrlfp16ps(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6834        self.emit(
6835            TCMMRLFP16PSRRR,
6836            op0.as_operand(),
6837            op1.as_operand(),
6838            op2.as_operand(),
6839            &NOREG,
6840        );
6841    }
6842}
6843
6844/// `TDPBF16PS`.
6845///
6846/// Supported operand variants:
6847///
6848/// ```text
6849/// +---+---------------+
6850/// | # | Operands      |
6851/// +---+---------------+
6852/// | 1 | Tmm, Tmm, Tmm |
6853/// +---+---------------+
6854/// ```
6855pub trait Tdpbf16psEmitter<A, B, C> {
6856    fn tdpbf16ps(&mut self, op0: A, op1: B, op2: C);
6857}
6858
6859impl<'a> Tdpbf16psEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6860    fn tdpbf16ps(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6861        self.emit(
6862            TDPBF16PSRRR,
6863            op0.as_operand(),
6864            op1.as_operand(),
6865            op2.as_operand(),
6866            &NOREG,
6867        );
6868    }
6869}
6870
6871/// `TDPBSSD`.
6872///
6873/// Supported operand variants:
6874///
6875/// ```text
6876/// +---+---------------+
6877/// | # | Operands      |
6878/// +---+---------------+
6879/// | 1 | Tmm, Tmm, Tmm |
6880/// +---+---------------+
6881/// ```
6882pub trait TdpbssdEmitter<A, B, C> {
6883    fn tdpbssd(&mut self, op0: A, op1: B, op2: C);
6884}
6885
6886impl<'a> TdpbssdEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6887    fn tdpbssd(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6888        self.emit(
6889            TDPBSSDRRR,
6890            op0.as_operand(),
6891            op1.as_operand(),
6892            op2.as_operand(),
6893            &NOREG,
6894        );
6895    }
6896}
6897
6898/// `TDPBSUD`.
6899///
6900/// Supported operand variants:
6901///
6902/// ```text
6903/// +---+---------------+
6904/// | # | Operands      |
6905/// +---+---------------+
6906/// | 1 | Tmm, Tmm, Tmm |
6907/// +---+---------------+
6908/// ```
6909pub trait TdpbsudEmitter<A, B, C> {
6910    fn tdpbsud(&mut self, op0: A, op1: B, op2: C);
6911}
6912
6913impl<'a> TdpbsudEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6914    fn tdpbsud(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6915        self.emit(
6916            TDPBSUDRRR,
6917            op0.as_operand(),
6918            op1.as_operand(),
6919            op2.as_operand(),
6920            &NOREG,
6921        );
6922    }
6923}
6924
6925/// `TDPBUSD`.
6926///
6927/// Supported operand variants:
6928///
6929/// ```text
6930/// +---+---------------+
6931/// | # | Operands      |
6932/// +---+---------------+
6933/// | 1 | Tmm, Tmm, Tmm |
6934/// +---+---------------+
6935/// ```
6936pub trait TdpbusdEmitter<A, B, C> {
6937    fn tdpbusd(&mut self, op0: A, op1: B, op2: C);
6938}
6939
6940impl<'a> TdpbusdEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6941    fn tdpbusd(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6942        self.emit(
6943            TDPBUSDRRR,
6944            op0.as_operand(),
6945            op1.as_operand(),
6946            op2.as_operand(),
6947            &NOREG,
6948        );
6949    }
6950}
6951
6952/// `TDPBUUD`.
6953///
6954/// Supported operand variants:
6955///
6956/// ```text
6957/// +---+---------------+
6958/// | # | Operands      |
6959/// +---+---------------+
6960/// | 1 | Tmm, Tmm, Tmm |
6961/// +---+---------------+
6962/// ```
6963pub trait TdpbuudEmitter<A, B, C> {
6964    fn tdpbuud(&mut self, op0: A, op1: B, op2: C);
6965}
6966
6967impl<'a> TdpbuudEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6968    fn tdpbuud(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6969        self.emit(
6970            TDPBUUDRRR,
6971            op0.as_operand(),
6972            op1.as_operand(),
6973            op2.as_operand(),
6974            &NOREG,
6975        );
6976    }
6977}
6978
6979/// `TDPFP16PS`.
6980///
6981/// Supported operand variants:
6982///
6983/// ```text
6984/// +---+---------------+
6985/// | # | Operands      |
6986/// +---+---------------+
6987/// | 1 | Tmm, Tmm, Tmm |
6988/// +---+---------------+
6989/// ```
6990pub trait Tdpfp16psEmitter<A, B, C> {
6991    fn tdpfp16ps(&mut self, op0: A, op1: B, op2: C);
6992}
6993
6994impl<'a> Tdpfp16psEmitter<Tmm, Tmm, Tmm> for Assembler<'a> {
6995    fn tdpfp16ps(&mut self, op0: Tmm, op1: Tmm, op2: Tmm) {
6996        self.emit(
6997            TDPFP16PSRRR,
6998            op0.as_operand(),
6999            op1.as_operand(),
7000            op2.as_operand(),
7001            &NOREG,
7002        );
7003    }
7004}
7005
7006/// `TEST`.
7007///
7008/// Supported operand variants:
7009///
7010/// ```text
7011/// +----+--------------+
7012/// | #  | Operands     |
7013/// +----+--------------+
7014/// | 1  | GpbLo, GpbLo |
7015/// | 2  | GpbLo, Imm   |
7016/// | 3  | Gpd, Gpd     |
7017/// | 4  | Gpd, Imm     |
7018/// | 5  | Gpq, Gpq     |
7019/// | 6  | Gpq, Imm     |
7020/// | 7  | Gpw, Gpw     |
7021/// | 8  | Gpw, Imm     |
7022/// | 9  | Mem, GpbLo   |
7023/// | 10 | Mem, Gpd     |
7024/// | 11 | Mem, Gpq     |
7025/// | 12 | Mem, Gpw     |
7026/// | 13 | Mem, Imm     |
7027/// +----+--------------+
7028/// ```
7029pub trait TestEmitter<A, B> {
7030    fn test(&mut self, op0: A, op1: B);
7031}
7032
7033impl<'a> TestEmitter<GpbLo, GpbLo> for Assembler<'a> {
7034    fn test(&mut self, op0: GpbLo, op1: GpbLo) {
7035        self.emit(TEST8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7036    }
7037}
7038
7039impl<'a> TestEmitter<Mem, GpbLo> for Assembler<'a> {
7040    fn test(&mut self, op0: Mem, op1: GpbLo) {
7041        self.emit(TEST8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7042    }
7043}
7044
7045impl<'a> TestEmitter<Gpw, Gpw> for Assembler<'a> {
7046    fn test(&mut self, op0: Gpw, op1: Gpw) {
7047        self.emit(TEST16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7048    }
7049}
7050
7051impl<'a> TestEmitter<Mem, Gpw> for Assembler<'a> {
7052    fn test(&mut self, op0: Mem, op1: Gpw) {
7053        self.emit(TEST16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7054    }
7055}
7056
7057impl<'a> TestEmitter<Gpd, Gpd> for Assembler<'a> {
7058    fn test(&mut self, op0: Gpd, op1: Gpd) {
7059        self.emit(TEST32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7060    }
7061}
7062
7063impl<'a> TestEmitter<Mem, Gpd> for Assembler<'a> {
7064    fn test(&mut self, op0: Mem, op1: Gpd) {
7065        self.emit(TEST32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7066    }
7067}
7068
7069impl<'a> TestEmitter<Gpq, Gpq> for Assembler<'a> {
7070    fn test(&mut self, op0: Gpq, op1: Gpq) {
7071        self.emit(TEST64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7072    }
7073}
7074
7075impl<'a> TestEmitter<Mem, Gpq> for Assembler<'a> {
7076    fn test(&mut self, op0: Mem, op1: Gpq) {
7077        self.emit(TEST64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7078    }
7079}
7080
7081impl<'a> TestEmitter<GpbLo, Imm> for Assembler<'a> {
7082    fn test(&mut self, op0: GpbLo, op1: Imm) {
7083        self.emit(TEST8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7084    }
7085}
7086
7087impl<'a> TestEmitter<Gpw, Imm> for Assembler<'a> {
7088    fn test(&mut self, op0: Gpw, op1: Imm) {
7089        self.emit(TEST16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7090    }
7091}
7092
7093impl<'a> TestEmitter<Gpd, Imm> for Assembler<'a> {
7094    fn test(&mut self, op0: Gpd, op1: Imm) {
7095        self.emit(TEST32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7096    }
7097}
7098
7099impl<'a> TestEmitter<Gpq, Imm> for Assembler<'a> {
7100    fn test(&mut self, op0: Gpq, op1: Imm) {
7101        self.emit(TEST64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7102    }
7103}
7104
7105impl<'a> TestEmitter<Mem, Imm> for Assembler<'a> {
7106    fn test(&mut self, op0: Mem, op1: Imm) {
7107        self.emit(TEST8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7108    }
7109}
7110
7111/// `TILELOADD`.
7112///
7113/// Supported operand variants:
7114///
7115/// ```text
7116/// +---+----------+
7117/// | # | Operands |
7118/// +---+----------+
7119/// | 1 | Tmm, Mem |
7120/// +---+----------+
7121/// ```
7122pub trait TileloaddEmitter<A, B> {
7123    fn tileloadd(&mut self, op0: A, op1: B);
7124}
7125
7126impl<'a> TileloaddEmitter<Tmm, Mem> for Assembler<'a> {
7127    fn tileloadd(&mut self, op0: Tmm, op1: Mem) {
7128        self.emit(
7129            TILELOADDRM,
7130            op0.as_operand(),
7131            op1.as_operand(),
7132            &NOREG,
7133            &NOREG,
7134        );
7135    }
7136}
7137
7138/// `TILELOADDT1`.
7139///
7140/// Supported operand variants:
7141///
7142/// ```text
7143/// +---+----------+
7144/// | # | Operands |
7145/// +---+----------+
7146/// | 1 | Tmm, Mem |
7147/// +---+----------+
7148/// ```
7149pub trait Tileloaddt1Emitter<A, B> {
7150    fn tileloaddt1(&mut self, op0: A, op1: B);
7151}
7152
7153impl<'a> Tileloaddt1Emitter<Tmm, Mem> for Assembler<'a> {
7154    fn tileloaddt1(&mut self, op0: Tmm, op1: Mem) {
7155        self.emit(
7156            TILELOADDT1RM,
7157            op0.as_operand(),
7158            op1.as_operand(),
7159            &NOREG,
7160            &NOREG,
7161        );
7162    }
7163}
7164
7165/// `TILERELEASE`.
7166///
7167/// Supported operand variants:
7168///
7169/// ```text
7170/// +---+----------+
7171/// | # | Operands |
7172/// +---+----------+
7173/// | 1 | (none)   |
7174/// +---+----------+
7175/// ```
7176pub trait TilereleaseEmitter {
7177    fn tilerelease(&mut self);
7178}
7179
7180impl<'a> TilereleaseEmitter for Assembler<'a> {
7181    fn tilerelease(&mut self) {
7182        self.emit(TILERELEASE, &NOREG, &NOREG, &NOREG, &NOREG);
7183    }
7184}
7185
7186/// `TILESTORED`.
7187///
7188/// Supported operand variants:
7189///
7190/// ```text
7191/// +---+----------+
7192/// | # | Operands |
7193/// +---+----------+
7194/// | 1 | Mem, Tmm |
7195/// +---+----------+
7196/// ```
7197pub trait TilestoredEmitter<A, B> {
7198    fn tilestored(&mut self, op0: A, op1: B);
7199}
7200
7201impl<'a> TilestoredEmitter<Mem, Tmm> for Assembler<'a> {
7202    fn tilestored(&mut self, op0: Mem, op1: Tmm) {
7203        self.emit(
7204            TILESTOREDMR,
7205            op0.as_operand(),
7206            op1.as_operand(),
7207            &NOREG,
7208            &NOREG,
7209        );
7210    }
7211}
7212
7213/// `TILEZERO`.
7214///
7215/// Supported operand variants:
7216///
7217/// ```text
7218/// +---+----------+
7219/// | # | Operands |
7220/// +---+----------+
7221/// | 1 | Tmm      |
7222/// +---+----------+
7223/// ```
7224pub trait TilezeroEmitter<A> {
7225    fn tilezero(&mut self, op0: A);
7226}
7227
7228impl<'a> TilezeroEmitter<Tmm> for Assembler<'a> {
7229    fn tilezero(&mut self, op0: Tmm) {
7230        self.emit(TILEZEROR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
7231    }
7232}
7233
7234/// `UD0`.
7235///
7236/// Supported operand variants:
7237///
7238/// ```text
7239/// +---+----------+
7240/// | # | Operands |
7241/// +---+----------+
7242/// | 1 | Gpd, Gpd |
7243/// | 2 | Gpd, Mem |
7244/// | 3 | Gpq, Gpq |
7245/// | 4 | Gpq, Mem |
7246/// | 5 | Gpw, Gpw |
7247/// | 6 | Gpw, Mem |
7248/// +---+----------+
7249/// ```
7250pub trait Ud0Emitter<A, B> {
7251    fn ud0(&mut self, op0: A, op1: B);
7252}
7253
7254impl<'a> Ud0Emitter<Gpw, Gpw> for Assembler<'a> {
7255    fn ud0(&mut self, op0: Gpw, op1: Gpw) {
7256        self.emit(UD0_16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7257    }
7258}
7259
7260impl<'a> Ud0Emitter<Gpw, Mem> for Assembler<'a> {
7261    fn ud0(&mut self, op0: Gpw, op1: Mem) {
7262        self.emit(UD0_16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7263    }
7264}
7265
7266impl<'a> Ud0Emitter<Gpd, Gpd> for Assembler<'a> {
7267    fn ud0(&mut self, op0: Gpd, op1: Gpd) {
7268        self.emit(UD0_32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7269    }
7270}
7271
7272impl<'a> Ud0Emitter<Gpd, Mem> for Assembler<'a> {
7273    fn ud0(&mut self, op0: Gpd, op1: Mem) {
7274        self.emit(UD0_32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7275    }
7276}
7277
7278impl<'a> Ud0Emitter<Gpq, Gpq> for Assembler<'a> {
7279    fn ud0(&mut self, op0: Gpq, op1: Gpq) {
7280        self.emit(UD0_64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7281    }
7282}
7283
7284impl<'a> Ud0Emitter<Gpq, Mem> for Assembler<'a> {
7285    fn ud0(&mut self, op0: Gpq, op1: Mem) {
7286        self.emit(UD0_64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7287    }
7288}
7289
7290/// `UD1`.
7291///
7292/// Supported operand variants:
7293///
7294/// ```text
7295/// +---+----------+
7296/// | # | Operands |
7297/// +---+----------+
7298/// | 1 | Gpd, Gpd |
7299/// | 2 | Gpd, Mem |
7300/// | 3 | Gpq, Gpq |
7301/// | 4 | Gpq, Mem |
7302/// | 5 | Gpw, Gpw |
7303/// | 6 | Gpw, Mem |
7304/// +---+----------+
7305/// ```
7306pub trait Ud1Emitter<A, B> {
7307    fn ud1(&mut self, op0: A, op1: B);
7308}
7309
7310impl<'a> Ud1Emitter<Gpw, Gpw> for Assembler<'a> {
7311    fn ud1(&mut self, op0: Gpw, op1: Gpw) {
7312        self.emit(UD1_16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7313    }
7314}
7315
7316impl<'a> Ud1Emitter<Gpw, Mem> for Assembler<'a> {
7317    fn ud1(&mut self, op0: Gpw, op1: Mem) {
7318        self.emit(UD1_16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7319    }
7320}
7321
7322impl<'a> Ud1Emitter<Gpd, Gpd> for Assembler<'a> {
7323    fn ud1(&mut self, op0: Gpd, op1: Gpd) {
7324        self.emit(UD1_32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7325    }
7326}
7327
7328impl<'a> Ud1Emitter<Gpd, Mem> for Assembler<'a> {
7329    fn ud1(&mut self, op0: Gpd, op1: Mem) {
7330        self.emit(UD1_32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7331    }
7332}
7333
7334impl<'a> Ud1Emitter<Gpq, Gpq> for Assembler<'a> {
7335    fn ud1(&mut self, op0: Gpq, op1: Gpq) {
7336        self.emit(UD1_64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7337    }
7338}
7339
7340impl<'a> Ud1Emitter<Gpq, Mem> for Assembler<'a> {
7341    fn ud1(&mut self, op0: Gpq, op1: Mem) {
7342        self.emit(UD1_64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
7343    }
7344}
7345
7346/// `UD2`.
7347///
7348/// Supported operand variants:
7349///
7350/// ```text
7351/// +---+----------+
7352/// | # | Operands |
7353/// +---+----------+
7354/// | 1 | (none)   |
7355/// +---+----------+
7356/// ```
7357pub trait Ud2Emitter {
7358    fn ud2(&mut self);
7359}
7360
7361impl<'a> Ud2Emitter for Assembler<'a> {
7362    fn ud2(&mut self) {
7363        self.emit(UD2, &NOREG, &NOREG, &NOREG, &NOREG);
7364    }
7365}
7366
7367/// `VADDPH`.
7368///
7369/// Supported operand variants:
7370///
7371/// ```text
7372/// +---+---------------+
7373/// | # | Operands      |
7374/// +---+---------------+
7375/// | 1 | Xmm, Xmm, Mem |
7376/// | 2 | Xmm, Xmm, Xmm |
7377/// | 3 | Ymm, Ymm, Mem |
7378/// | 4 | Ymm, Ymm, Ymm |
7379/// | 5 | Zmm, Zmm, Mem |
7380/// | 6 | Zmm, Zmm, Zmm |
7381/// +---+---------------+
7382/// ```
7383pub trait VaddphEmitter<A, B, C> {
7384    fn vaddph(&mut self, op0: A, op1: B, op2: C);
7385}
7386
7387impl<'a> VaddphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7388    fn vaddph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7389        self.emit(
7390            VADDPH128RRR,
7391            op0.as_operand(),
7392            op1.as_operand(),
7393            op2.as_operand(),
7394            &NOREG,
7395        );
7396    }
7397}
7398
7399impl<'a> VaddphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7400    fn vaddph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7401        self.emit(
7402            VADDPH128RRM,
7403            op0.as_operand(),
7404            op1.as_operand(),
7405            op2.as_operand(),
7406            &NOREG,
7407        );
7408    }
7409}
7410
7411impl<'a> VaddphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
7412    fn vaddph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
7413        self.emit(
7414            VADDPH256RRR,
7415            op0.as_operand(),
7416            op1.as_operand(),
7417            op2.as_operand(),
7418            &NOREG,
7419        );
7420    }
7421}
7422
7423impl<'a> VaddphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
7424    fn vaddph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
7425        self.emit(
7426            VADDPH256RRM,
7427            op0.as_operand(),
7428            op1.as_operand(),
7429            op2.as_operand(),
7430            &NOREG,
7431        );
7432    }
7433}
7434
7435impl<'a> VaddphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7436    fn vaddph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7437        self.emit(
7438            VADDPH512RRR,
7439            op0.as_operand(),
7440            op1.as_operand(),
7441            op2.as_operand(),
7442            &NOREG,
7443        );
7444    }
7445}
7446
7447impl<'a> VaddphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
7448    fn vaddph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
7449        self.emit(
7450            VADDPH512RRM,
7451            op0.as_operand(),
7452            op1.as_operand(),
7453            op2.as_operand(),
7454            &NOREG,
7455        );
7456    }
7457}
7458
7459/// `VADDPH_ER`.
7460///
7461/// Supported operand variants:
7462///
7463/// ```text
7464/// +---+---------------+
7465/// | # | Operands      |
7466/// +---+---------------+
7467/// | 1 | Zmm, Zmm, Zmm |
7468/// +---+---------------+
7469/// ```
7470pub trait VaddphErEmitter<A, B, C> {
7471    fn vaddph_er(&mut self, op0: A, op1: B, op2: C);
7472}
7473
7474impl<'a> VaddphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7475    fn vaddph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7476        self.emit(
7477            VADDPH512RRR_ER,
7478            op0.as_operand(),
7479            op1.as_operand(),
7480            op2.as_operand(),
7481            &NOREG,
7482        );
7483    }
7484}
7485
7486/// `VADDPH_MASK`.
7487///
7488/// Supported operand variants:
7489///
7490/// ```text
7491/// +---+---------------+
7492/// | # | Operands      |
7493/// +---+---------------+
7494/// | 1 | Xmm, Xmm, Mem |
7495/// | 2 | Xmm, Xmm, Xmm |
7496/// | 3 | Ymm, Ymm, Mem |
7497/// | 4 | Ymm, Ymm, Ymm |
7498/// | 5 | Zmm, Zmm, Mem |
7499/// | 6 | Zmm, Zmm, Zmm |
7500/// +---+---------------+
7501/// ```
7502pub trait VaddphMaskEmitter<A, B, C> {
7503    fn vaddph_mask(&mut self, op0: A, op1: B, op2: C);
7504}
7505
7506impl<'a> VaddphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7507    fn vaddph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7508        self.emit(
7509            VADDPH128RRR_MASK,
7510            op0.as_operand(),
7511            op1.as_operand(),
7512            op2.as_operand(),
7513            &NOREG,
7514        );
7515    }
7516}
7517
7518impl<'a> VaddphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7519    fn vaddph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7520        self.emit(
7521            VADDPH128RRM_MASK,
7522            op0.as_operand(),
7523            op1.as_operand(),
7524            op2.as_operand(),
7525            &NOREG,
7526        );
7527    }
7528}
7529
7530impl<'a> VaddphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
7531    fn vaddph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
7532        self.emit(
7533            VADDPH256RRR_MASK,
7534            op0.as_operand(),
7535            op1.as_operand(),
7536            op2.as_operand(),
7537            &NOREG,
7538        );
7539    }
7540}
7541
7542impl<'a> VaddphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
7543    fn vaddph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
7544        self.emit(
7545            VADDPH256RRM_MASK,
7546            op0.as_operand(),
7547            op1.as_operand(),
7548            op2.as_operand(),
7549            &NOREG,
7550        );
7551    }
7552}
7553
7554impl<'a> VaddphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7555    fn vaddph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7556        self.emit(
7557            VADDPH512RRR_MASK,
7558            op0.as_operand(),
7559            op1.as_operand(),
7560            op2.as_operand(),
7561            &NOREG,
7562        );
7563    }
7564}
7565
7566impl<'a> VaddphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
7567    fn vaddph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
7568        self.emit(
7569            VADDPH512RRM_MASK,
7570            op0.as_operand(),
7571            op1.as_operand(),
7572            op2.as_operand(),
7573            &NOREG,
7574        );
7575    }
7576}
7577
7578/// `VADDPH_MASK_ER`.
7579///
7580/// Supported operand variants:
7581///
7582/// ```text
7583/// +---+---------------+
7584/// | # | Operands      |
7585/// +---+---------------+
7586/// | 1 | Zmm, Zmm, Zmm |
7587/// +---+---------------+
7588/// ```
7589pub trait VaddphMaskErEmitter<A, B, C> {
7590    fn vaddph_mask_er(&mut self, op0: A, op1: B, op2: C);
7591}
7592
7593impl<'a> VaddphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7594    fn vaddph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7595        self.emit(
7596            VADDPH512RRR_MASK_ER,
7597            op0.as_operand(),
7598            op1.as_operand(),
7599            op2.as_operand(),
7600            &NOREG,
7601        );
7602    }
7603}
7604
7605/// `VADDPH_MASKZ`.
7606///
7607/// Supported operand variants:
7608///
7609/// ```text
7610/// +---+---------------+
7611/// | # | Operands      |
7612/// +---+---------------+
7613/// | 1 | Xmm, Xmm, Mem |
7614/// | 2 | Xmm, Xmm, Xmm |
7615/// | 3 | Ymm, Ymm, Mem |
7616/// | 4 | Ymm, Ymm, Ymm |
7617/// | 5 | Zmm, Zmm, Mem |
7618/// | 6 | Zmm, Zmm, Zmm |
7619/// +---+---------------+
7620/// ```
7621pub trait VaddphMaskzEmitter<A, B, C> {
7622    fn vaddph_maskz(&mut self, op0: A, op1: B, op2: C);
7623}
7624
7625impl<'a> VaddphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7626    fn vaddph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7627        self.emit(
7628            VADDPH128RRR_MASKZ,
7629            op0.as_operand(),
7630            op1.as_operand(),
7631            op2.as_operand(),
7632            &NOREG,
7633        );
7634    }
7635}
7636
7637impl<'a> VaddphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7638    fn vaddph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7639        self.emit(
7640            VADDPH128RRM_MASKZ,
7641            op0.as_operand(),
7642            op1.as_operand(),
7643            op2.as_operand(),
7644            &NOREG,
7645        );
7646    }
7647}
7648
7649impl<'a> VaddphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
7650    fn vaddph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
7651        self.emit(
7652            VADDPH256RRR_MASKZ,
7653            op0.as_operand(),
7654            op1.as_operand(),
7655            op2.as_operand(),
7656            &NOREG,
7657        );
7658    }
7659}
7660
7661impl<'a> VaddphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
7662    fn vaddph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
7663        self.emit(
7664            VADDPH256RRM_MASKZ,
7665            op0.as_operand(),
7666            op1.as_operand(),
7667            op2.as_operand(),
7668            &NOREG,
7669        );
7670    }
7671}
7672
7673impl<'a> VaddphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7674    fn vaddph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7675        self.emit(
7676            VADDPH512RRR_MASKZ,
7677            op0.as_operand(),
7678            op1.as_operand(),
7679            op2.as_operand(),
7680            &NOREG,
7681        );
7682    }
7683}
7684
7685impl<'a> VaddphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
7686    fn vaddph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
7687        self.emit(
7688            VADDPH512RRM_MASKZ,
7689            op0.as_operand(),
7690            op1.as_operand(),
7691            op2.as_operand(),
7692            &NOREG,
7693        );
7694    }
7695}
7696
7697/// `VADDPH_MASKZ_ER`.
7698///
7699/// Supported operand variants:
7700///
7701/// ```text
7702/// +---+---------------+
7703/// | # | Operands      |
7704/// +---+---------------+
7705/// | 1 | Zmm, Zmm, Zmm |
7706/// +---+---------------+
7707/// ```
7708pub trait VaddphMaskzErEmitter<A, B, C> {
7709    fn vaddph_maskz_er(&mut self, op0: A, op1: B, op2: C);
7710}
7711
7712impl<'a> VaddphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7713    fn vaddph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7714        self.emit(
7715            VADDPH512RRR_MASKZ_ER,
7716            op0.as_operand(),
7717            op1.as_operand(),
7718            op2.as_operand(),
7719            &NOREG,
7720        );
7721    }
7722}
7723
7724/// `VADDSH`.
7725///
7726/// Supported operand variants:
7727///
7728/// ```text
7729/// +---+---------------+
7730/// | # | Operands      |
7731/// +---+---------------+
7732/// | 1 | Xmm, Xmm, Mem |
7733/// | 2 | Xmm, Xmm, Xmm |
7734/// +---+---------------+
7735/// ```
7736pub trait VaddshEmitter<A, B, C> {
7737    fn vaddsh(&mut self, op0: A, op1: B, op2: C);
7738}
7739
7740impl<'a> VaddshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7741    fn vaddsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7742        self.emit(
7743            VADDSHRRR,
7744            op0.as_operand(),
7745            op1.as_operand(),
7746            op2.as_operand(),
7747            &NOREG,
7748        );
7749    }
7750}
7751
7752impl<'a> VaddshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7753    fn vaddsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7754        self.emit(
7755            VADDSHRRM,
7756            op0.as_operand(),
7757            op1.as_operand(),
7758            op2.as_operand(),
7759            &NOREG,
7760        );
7761    }
7762}
7763
7764/// `VADDSH_ER`.
7765///
7766/// Supported operand variants:
7767///
7768/// ```text
7769/// +---+---------------+
7770/// | # | Operands      |
7771/// +---+---------------+
7772/// | 1 | Xmm, Xmm, Xmm |
7773/// +---+---------------+
7774/// ```
7775pub trait VaddshErEmitter<A, B, C> {
7776    fn vaddsh_er(&mut self, op0: A, op1: B, op2: C);
7777}
7778
7779impl<'a> VaddshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7780    fn vaddsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7781        self.emit(
7782            VADDSHRRR_ER,
7783            op0.as_operand(),
7784            op1.as_operand(),
7785            op2.as_operand(),
7786            &NOREG,
7787        );
7788    }
7789}
7790
7791/// `VADDSH_MASK`.
7792///
7793/// Supported operand variants:
7794///
7795/// ```text
7796/// +---+---------------+
7797/// | # | Operands      |
7798/// +---+---------------+
7799/// | 1 | Xmm, Xmm, Mem |
7800/// | 2 | Xmm, Xmm, Xmm |
7801/// +---+---------------+
7802/// ```
7803pub trait VaddshMaskEmitter<A, B, C> {
7804    fn vaddsh_mask(&mut self, op0: A, op1: B, op2: C);
7805}
7806
7807impl<'a> VaddshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7808    fn vaddsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7809        self.emit(
7810            VADDSHRRR_MASK,
7811            op0.as_operand(),
7812            op1.as_operand(),
7813            op2.as_operand(),
7814            &NOREG,
7815        );
7816    }
7817}
7818
7819impl<'a> VaddshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7820    fn vaddsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7821        self.emit(
7822            VADDSHRRM_MASK,
7823            op0.as_operand(),
7824            op1.as_operand(),
7825            op2.as_operand(),
7826            &NOREG,
7827        );
7828    }
7829}
7830
7831/// `VADDSH_MASK_ER`.
7832///
7833/// Supported operand variants:
7834///
7835/// ```text
7836/// +---+---------------+
7837/// | # | Operands      |
7838/// +---+---------------+
7839/// | 1 | Xmm, Xmm, Xmm |
7840/// +---+---------------+
7841/// ```
7842pub trait VaddshMaskErEmitter<A, B, C> {
7843    fn vaddsh_mask_er(&mut self, op0: A, op1: B, op2: C);
7844}
7845
7846impl<'a> VaddshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7847    fn vaddsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7848        self.emit(
7849            VADDSHRRR_MASK_ER,
7850            op0.as_operand(),
7851            op1.as_operand(),
7852            op2.as_operand(),
7853            &NOREG,
7854        );
7855    }
7856}
7857
7858/// `VADDSH_MASKZ`.
7859///
7860/// Supported operand variants:
7861///
7862/// ```text
7863/// +---+---------------+
7864/// | # | Operands      |
7865/// +---+---------------+
7866/// | 1 | Xmm, Xmm, Mem |
7867/// | 2 | Xmm, Xmm, Xmm |
7868/// +---+---------------+
7869/// ```
7870pub trait VaddshMaskzEmitter<A, B, C> {
7871    fn vaddsh_maskz(&mut self, op0: A, op1: B, op2: C);
7872}
7873
7874impl<'a> VaddshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7875    fn vaddsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7876        self.emit(
7877            VADDSHRRR_MASKZ,
7878            op0.as_operand(),
7879            op1.as_operand(),
7880            op2.as_operand(),
7881            &NOREG,
7882        );
7883    }
7884}
7885
7886impl<'a> VaddshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7887    fn vaddsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7888        self.emit(
7889            VADDSHRRM_MASKZ,
7890            op0.as_operand(),
7891            op1.as_operand(),
7892            op2.as_operand(),
7893            &NOREG,
7894        );
7895    }
7896}
7897
7898/// `VADDSH_MASKZ_ER`.
7899///
7900/// Supported operand variants:
7901///
7902/// ```text
7903/// +---+---------------+
7904/// | # | Operands      |
7905/// +---+---------------+
7906/// | 1 | Xmm, Xmm, Xmm |
7907/// +---+---------------+
7908/// ```
7909pub trait VaddshMaskzErEmitter<A, B, C> {
7910    fn vaddsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
7911}
7912
7913impl<'a> VaddshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7914    fn vaddsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7915        self.emit(
7916            VADDSHRRR_MASKZ_ER,
7917            op0.as_operand(),
7918            op1.as_operand(),
7919            op2.as_operand(),
7920            &NOREG,
7921        );
7922    }
7923}
7924
7925/// `VAESDEC`.
7926///
7927/// Supported operand variants:
7928///
7929/// ```text
7930/// +---+---------------+
7931/// | # | Operands      |
7932/// +---+---------------+
7933/// | 1 | Xmm, Xmm, Mem |
7934/// | 2 | Xmm, Xmm, Xmm |
7935/// | 3 | Ymm, Ymm, Mem |
7936/// | 4 | Ymm, Ymm, Ymm |
7937/// | 5 | Zmm, Zmm, Mem |
7938/// | 6 | Zmm, Zmm, Zmm |
7939/// +---+---------------+
7940/// ```
7941pub trait VaesdecEmitter<A, B, C> {
7942    fn vaesdec(&mut self, op0: A, op1: B, op2: C);
7943}
7944
7945impl<'a> VaesdecEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
7946    fn vaesdec(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
7947        self.emit(
7948            VAESDEC128RRR,
7949            op0.as_operand(),
7950            op1.as_operand(),
7951            op2.as_operand(),
7952            &NOREG,
7953        );
7954    }
7955}
7956
7957impl<'a> VaesdecEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
7958    fn vaesdec(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
7959        self.emit(
7960            VAESDEC128RRM,
7961            op0.as_operand(),
7962            op1.as_operand(),
7963            op2.as_operand(),
7964            &NOREG,
7965        );
7966    }
7967}
7968
7969impl<'a> VaesdecEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
7970    fn vaesdec(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
7971        self.emit(
7972            VAESDEC256RRR,
7973            op0.as_operand(),
7974            op1.as_operand(),
7975            op2.as_operand(),
7976            &NOREG,
7977        );
7978    }
7979}
7980
7981impl<'a> VaesdecEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
7982    fn vaesdec(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
7983        self.emit(
7984            VAESDEC256RRM,
7985            op0.as_operand(),
7986            op1.as_operand(),
7987            op2.as_operand(),
7988            &NOREG,
7989        );
7990    }
7991}
7992
7993impl<'a> VaesdecEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
7994    fn vaesdec(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
7995        self.emit(
7996            VAESDEC512RRR,
7997            op0.as_operand(),
7998            op1.as_operand(),
7999            op2.as_operand(),
8000            &NOREG,
8001        );
8002    }
8003}
8004
8005impl<'a> VaesdecEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
8006    fn vaesdec(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
8007        self.emit(
8008            VAESDEC512RRM,
8009            op0.as_operand(),
8010            op1.as_operand(),
8011            op2.as_operand(),
8012            &NOREG,
8013        );
8014    }
8015}
8016
8017/// `VAESDECLAST`.
8018///
8019/// Supported operand variants:
8020///
8021/// ```text
8022/// +---+---------------+
8023/// | # | Operands      |
8024/// +---+---------------+
8025/// | 1 | Xmm, Xmm, Mem |
8026/// | 2 | Xmm, Xmm, Xmm |
8027/// | 3 | Ymm, Ymm, Mem |
8028/// | 4 | Ymm, Ymm, Ymm |
8029/// | 5 | Zmm, Zmm, Mem |
8030/// | 6 | Zmm, Zmm, Zmm |
8031/// +---+---------------+
8032/// ```
8033pub trait VaesdeclastEmitter<A, B, C> {
8034    fn vaesdeclast(&mut self, op0: A, op1: B, op2: C);
8035}
8036
8037impl<'a> VaesdeclastEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
8038    fn vaesdeclast(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
8039        self.emit(
8040            VAESDECLAST128RRR,
8041            op0.as_operand(),
8042            op1.as_operand(),
8043            op2.as_operand(),
8044            &NOREG,
8045        );
8046    }
8047}
8048
8049impl<'a> VaesdeclastEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
8050    fn vaesdeclast(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
8051        self.emit(
8052            VAESDECLAST128RRM,
8053            op0.as_operand(),
8054            op1.as_operand(),
8055            op2.as_operand(),
8056            &NOREG,
8057        );
8058    }
8059}
8060
8061impl<'a> VaesdeclastEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
8062    fn vaesdeclast(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
8063        self.emit(
8064            VAESDECLAST256RRR,
8065            op0.as_operand(),
8066            op1.as_operand(),
8067            op2.as_operand(),
8068            &NOREG,
8069        );
8070    }
8071}
8072
8073impl<'a> VaesdeclastEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
8074    fn vaesdeclast(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
8075        self.emit(
8076            VAESDECLAST256RRM,
8077            op0.as_operand(),
8078            op1.as_operand(),
8079            op2.as_operand(),
8080            &NOREG,
8081        );
8082    }
8083}
8084
8085impl<'a> VaesdeclastEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
8086    fn vaesdeclast(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
8087        self.emit(
8088            VAESDECLAST512RRR,
8089            op0.as_operand(),
8090            op1.as_operand(),
8091            op2.as_operand(),
8092            &NOREG,
8093        );
8094    }
8095}
8096
8097impl<'a> VaesdeclastEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
8098    fn vaesdeclast(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
8099        self.emit(
8100            VAESDECLAST512RRM,
8101            op0.as_operand(),
8102            op1.as_operand(),
8103            op2.as_operand(),
8104            &NOREG,
8105        );
8106    }
8107}
8108
8109/// `VAESENC`.
8110///
8111/// Supported operand variants:
8112///
8113/// ```text
8114/// +---+---------------+
8115/// | # | Operands      |
8116/// +---+---------------+
8117/// | 1 | Xmm, Xmm, Mem |
8118/// | 2 | Xmm, Xmm, Xmm |
8119/// | 3 | Ymm, Ymm, Mem |
8120/// | 4 | Ymm, Ymm, Ymm |
8121/// | 5 | Zmm, Zmm, Mem |
8122/// | 6 | Zmm, Zmm, Zmm |
8123/// +---+---------------+
8124/// ```
8125pub trait VaesencEmitter<A, B, C> {
8126    fn vaesenc(&mut self, op0: A, op1: B, op2: C);
8127}
8128
8129impl<'a> VaesencEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
8130    fn vaesenc(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
8131        self.emit(
8132            VAESENC128RRR,
8133            op0.as_operand(),
8134            op1.as_operand(),
8135            op2.as_operand(),
8136            &NOREG,
8137        );
8138    }
8139}
8140
8141impl<'a> VaesencEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
8142    fn vaesenc(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
8143        self.emit(
8144            VAESENC128RRM,
8145            op0.as_operand(),
8146            op1.as_operand(),
8147            op2.as_operand(),
8148            &NOREG,
8149        );
8150    }
8151}
8152
8153impl<'a> VaesencEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
8154    fn vaesenc(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
8155        self.emit(
8156            VAESENC256RRR,
8157            op0.as_operand(),
8158            op1.as_operand(),
8159            op2.as_operand(),
8160            &NOREG,
8161        );
8162    }
8163}
8164
8165impl<'a> VaesencEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
8166    fn vaesenc(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
8167        self.emit(
8168            VAESENC256RRM,
8169            op0.as_operand(),
8170            op1.as_operand(),
8171            op2.as_operand(),
8172            &NOREG,
8173        );
8174    }
8175}
8176
8177impl<'a> VaesencEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
8178    fn vaesenc(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
8179        self.emit(
8180            VAESENC512RRR,
8181            op0.as_operand(),
8182            op1.as_operand(),
8183            op2.as_operand(),
8184            &NOREG,
8185        );
8186    }
8187}
8188
8189impl<'a> VaesencEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
8190    fn vaesenc(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
8191        self.emit(
8192            VAESENC512RRM,
8193            op0.as_operand(),
8194            op1.as_operand(),
8195            op2.as_operand(),
8196            &NOREG,
8197        );
8198    }
8199}
8200
8201/// `VAESENCLAST`.
8202///
8203/// Supported operand variants:
8204///
8205/// ```text
8206/// +---+---------------+
8207/// | # | Operands      |
8208/// +---+---------------+
8209/// | 1 | Xmm, Xmm, Mem |
8210/// | 2 | Xmm, Xmm, Xmm |
8211/// | 3 | Ymm, Ymm, Mem |
8212/// | 4 | Ymm, Ymm, Ymm |
8213/// | 5 | Zmm, Zmm, Mem |
8214/// | 6 | Zmm, Zmm, Zmm |
8215/// +---+---------------+
8216/// ```
8217pub trait VaesenclastEmitter<A, B, C> {
8218    fn vaesenclast(&mut self, op0: A, op1: B, op2: C);
8219}
8220
8221impl<'a> VaesenclastEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
8222    fn vaesenclast(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
8223        self.emit(
8224            VAESENCLAST128RRR,
8225            op0.as_operand(),
8226            op1.as_operand(),
8227            op2.as_operand(),
8228            &NOREG,
8229        );
8230    }
8231}
8232
8233impl<'a> VaesenclastEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
8234    fn vaesenclast(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
8235        self.emit(
8236            VAESENCLAST128RRM,
8237            op0.as_operand(),
8238            op1.as_operand(),
8239            op2.as_operand(),
8240            &NOREG,
8241        );
8242    }
8243}
8244
8245impl<'a> VaesenclastEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
8246    fn vaesenclast(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
8247        self.emit(
8248            VAESENCLAST256RRR,
8249            op0.as_operand(),
8250            op1.as_operand(),
8251            op2.as_operand(),
8252            &NOREG,
8253        );
8254    }
8255}
8256
8257impl<'a> VaesenclastEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
8258    fn vaesenclast(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
8259        self.emit(
8260            VAESENCLAST256RRM,
8261            op0.as_operand(),
8262            op1.as_operand(),
8263            op2.as_operand(),
8264            &NOREG,
8265        );
8266    }
8267}
8268
8269impl<'a> VaesenclastEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
8270    fn vaesenclast(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
8271        self.emit(
8272            VAESENCLAST512RRR,
8273            op0.as_operand(),
8274            op1.as_operand(),
8275            op2.as_operand(),
8276            &NOREG,
8277        );
8278    }
8279}
8280
8281impl<'a> VaesenclastEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
8282    fn vaesenclast(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
8283        self.emit(
8284            VAESENCLAST512RRM,
8285            op0.as_operand(),
8286            op1.as_operand(),
8287            op2.as_operand(),
8288            &NOREG,
8289        );
8290    }
8291}
8292
8293/// `VAESIMC`.
8294///
8295/// Supported operand variants:
8296///
8297/// ```text
8298/// +---+----------+
8299/// | # | Operands |
8300/// +---+----------+
8301/// | 1 | Xmm, Mem |
8302/// | 2 | Xmm, Xmm |
8303/// +---+----------+
8304/// ```
8305pub trait VaesimcEmitter<A, B> {
8306    fn vaesimc(&mut self, op0: A, op1: B);
8307}
8308
8309impl<'a> VaesimcEmitter<Xmm, Xmm> for Assembler<'a> {
8310    fn vaesimc(&mut self, op0: Xmm, op1: Xmm) {
8311        self.emit(
8312            VAESIMCRR,
8313            op0.as_operand(),
8314            op1.as_operand(),
8315            &NOREG,
8316            &NOREG,
8317        );
8318    }
8319}
8320
8321impl<'a> VaesimcEmitter<Xmm, Mem> for Assembler<'a> {
8322    fn vaesimc(&mut self, op0: Xmm, op1: Mem) {
8323        self.emit(
8324            VAESIMCRM,
8325            op0.as_operand(),
8326            op1.as_operand(),
8327            &NOREG,
8328            &NOREG,
8329        );
8330    }
8331}
8332
8333/// `VAESKEYGENASSIST`.
8334///
8335/// Supported operand variants:
8336///
8337/// ```text
8338/// +---+---------------+
8339/// | # | Operands      |
8340/// +---+---------------+
8341/// | 1 | Xmm, Mem, Imm |
8342/// | 2 | Xmm, Xmm, Imm |
8343/// +---+---------------+
8344/// ```
8345pub trait VaeskeygenassistEmitter<A, B, C> {
8346    fn vaeskeygenassist(&mut self, op0: A, op1: B, op2: C);
8347}
8348
8349impl<'a> VaeskeygenassistEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
8350    fn vaeskeygenassist(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
8351        self.emit(
8352            VAESKEYGENASSISTRRI,
8353            op0.as_operand(),
8354            op1.as_operand(),
8355            op2.as_operand(),
8356            &NOREG,
8357        );
8358    }
8359}
8360
8361impl<'a> VaeskeygenassistEmitter<Xmm, Mem, Imm> for Assembler<'a> {
8362    fn vaeskeygenassist(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
8363        self.emit(
8364            VAESKEYGENASSISTRMI,
8365            op0.as_operand(),
8366            op1.as_operand(),
8367            op2.as_operand(),
8368            &NOREG,
8369        );
8370    }
8371}
8372
8373/// `VBCSTNEBF162PS`.
8374///
8375/// Supported operand variants:
8376///
8377/// ```text
8378/// +---+----------+
8379/// | # | Operands |
8380/// +---+----------+
8381/// | 1 | Xmm, Mem |
8382/// | 2 | Ymm, Mem |
8383/// +---+----------+
8384/// ```
8385pub trait Vbcstnebf162psEmitter<A, B> {
8386    fn vbcstnebf162ps(&mut self, op0: A, op1: B);
8387}
8388
8389impl<'a> Vbcstnebf162psEmitter<Xmm, Mem> for Assembler<'a> {
8390    fn vbcstnebf162ps(&mut self, op0: Xmm, op1: Mem) {
8391        self.emit(
8392            VBCSTNEBF162PS128RM,
8393            op0.as_operand(),
8394            op1.as_operand(),
8395            &NOREG,
8396            &NOREG,
8397        );
8398    }
8399}
8400
8401impl<'a> Vbcstnebf162psEmitter<Ymm, Mem> for Assembler<'a> {
8402    fn vbcstnebf162ps(&mut self, op0: Ymm, op1: Mem) {
8403        self.emit(
8404            VBCSTNEBF162PS256RM,
8405            op0.as_operand(),
8406            op1.as_operand(),
8407            &NOREG,
8408            &NOREG,
8409        );
8410    }
8411}
8412
8413/// `VBCSTNESH2PS`.
8414///
8415/// Supported operand variants:
8416///
8417/// ```text
8418/// +---+----------+
8419/// | # | Operands |
8420/// +---+----------+
8421/// | 1 | Xmm, Mem |
8422/// | 2 | Ymm, Mem |
8423/// +---+----------+
8424/// ```
8425pub trait Vbcstnesh2psEmitter<A, B> {
8426    fn vbcstnesh2ps(&mut self, op0: A, op1: B);
8427}
8428
8429impl<'a> Vbcstnesh2psEmitter<Xmm, Mem> for Assembler<'a> {
8430    fn vbcstnesh2ps(&mut self, op0: Xmm, op1: Mem) {
8431        self.emit(
8432            VBCSTNESH2PS128RM,
8433            op0.as_operand(),
8434            op1.as_operand(),
8435            &NOREG,
8436            &NOREG,
8437        );
8438    }
8439}
8440
8441impl<'a> Vbcstnesh2psEmitter<Ymm, Mem> for Assembler<'a> {
8442    fn vbcstnesh2ps(&mut self, op0: Ymm, op1: Mem) {
8443        self.emit(
8444            VBCSTNESH2PS256RM,
8445            op0.as_operand(),
8446            op1.as_operand(),
8447            &NOREG,
8448            &NOREG,
8449        );
8450    }
8451}
8452
8453/// `VCMPPH`.
8454///
8455/// Supported operand variants:
8456///
8457/// ```text
8458/// +---+---------------------+
8459/// | # | Operands            |
8460/// +---+---------------------+
8461/// | 1 | KReg, Xmm, Mem, Imm |
8462/// | 2 | KReg, Xmm, Xmm, Imm |
8463/// | 3 | KReg, Ymm, Mem, Imm |
8464/// | 4 | KReg, Ymm, Ymm, Imm |
8465/// | 5 | KReg, Zmm, Mem, Imm |
8466/// | 6 | KReg, Zmm, Zmm, Imm |
8467/// +---+---------------------+
8468/// ```
8469pub trait VcmpphEmitter<A, B, C, D> {
8470    fn vcmpph(&mut self, op0: A, op1: B, op2: C, op3: D);
8471}
8472
8473impl<'a> VcmpphEmitter<KReg, Xmm, Xmm, Imm> for Assembler<'a> {
8474    fn vcmpph(&mut self, op0: KReg, op1: Xmm, op2: Xmm, op3: Imm) {
8475        self.emit(
8476            VCMPPH128KRRI,
8477            op0.as_operand(),
8478            op1.as_operand(),
8479            op2.as_operand(),
8480            op3.as_operand(),
8481        );
8482    }
8483}
8484
8485impl<'a> VcmpphEmitter<KReg, Xmm, Mem, Imm> for Assembler<'a> {
8486    fn vcmpph(&mut self, op0: KReg, op1: Xmm, op2: Mem, op3: Imm) {
8487        self.emit(
8488            VCMPPH128KRMI,
8489            op0.as_operand(),
8490            op1.as_operand(),
8491            op2.as_operand(),
8492            op3.as_operand(),
8493        );
8494    }
8495}
8496
8497impl<'a> VcmpphEmitter<KReg, Ymm, Ymm, Imm> for Assembler<'a> {
8498    fn vcmpph(&mut self, op0: KReg, op1: Ymm, op2: Ymm, op3: Imm) {
8499        self.emit(
8500            VCMPPH256KRRI,
8501            op0.as_operand(),
8502            op1.as_operand(),
8503            op2.as_operand(),
8504            op3.as_operand(),
8505        );
8506    }
8507}
8508
8509impl<'a> VcmpphEmitter<KReg, Ymm, Mem, Imm> for Assembler<'a> {
8510    fn vcmpph(&mut self, op0: KReg, op1: Ymm, op2: Mem, op3: Imm) {
8511        self.emit(
8512            VCMPPH256KRMI,
8513            op0.as_operand(),
8514            op1.as_operand(),
8515            op2.as_operand(),
8516            op3.as_operand(),
8517        );
8518    }
8519}
8520
8521impl<'a> VcmpphEmitter<KReg, Zmm, Zmm, Imm> for Assembler<'a> {
8522    fn vcmpph(&mut self, op0: KReg, op1: Zmm, op2: Zmm, op3: Imm) {
8523        self.emit(
8524            VCMPPH512KRRI,
8525            op0.as_operand(),
8526            op1.as_operand(),
8527            op2.as_operand(),
8528            op3.as_operand(),
8529        );
8530    }
8531}
8532
8533impl<'a> VcmpphEmitter<KReg, Zmm, Mem, Imm> for Assembler<'a> {
8534    fn vcmpph(&mut self, op0: KReg, op1: Zmm, op2: Mem, op3: Imm) {
8535        self.emit(
8536            VCMPPH512KRMI,
8537            op0.as_operand(),
8538            op1.as_operand(),
8539            op2.as_operand(),
8540            op3.as_operand(),
8541        );
8542    }
8543}
8544
8545/// `VCMPPH_MASK`.
8546///
8547/// Supported operand variants:
8548///
8549/// ```text
8550/// +---+---------------------+
8551/// | # | Operands            |
8552/// +---+---------------------+
8553/// | 1 | KReg, Xmm, Mem, Imm |
8554/// | 2 | KReg, Xmm, Xmm, Imm |
8555/// | 3 | KReg, Ymm, Mem, Imm |
8556/// | 4 | KReg, Ymm, Ymm, Imm |
8557/// | 5 | KReg, Zmm, Mem, Imm |
8558/// | 6 | KReg, Zmm, Zmm, Imm |
8559/// +---+---------------------+
8560/// ```
8561pub trait VcmpphMaskEmitter<A, B, C, D> {
8562    fn vcmpph_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
8563}
8564
8565impl<'a> VcmpphMaskEmitter<KReg, Xmm, Xmm, Imm> for Assembler<'a> {
8566    fn vcmpph_mask(&mut self, op0: KReg, op1: Xmm, op2: Xmm, op3: Imm) {
8567        self.emit(
8568            VCMPPH128KRRI_MASK,
8569            op0.as_operand(),
8570            op1.as_operand(),
8571            op2.as_operand(),
8572            op3.as_operand(),
8573        );
8574    }
8575}
8576
8577impl<'a> VcmpphMaskEmitter<KReg, Xmm, Mem, Imm> for Assembler<'a> {
8578    fn vcmpph_mask(&mut self, op0: KReg, op1: Xmm, op2: Mem, op3: Imm) {
8579        self.emit(
8580            VCMPPH128KRMI_MASK,
8581            op0.as_operand(),
8582            op1.as_operand(),
8583            op2.as_operand(),
8584            op3.as_operand(),
8585        );
8586    }
8587}
8588
8589impl<'a> VcmpphMaskEmitter<KReg, Ymm, Ymm, Imm> for Assembler<'a> {
8590    fn vcmpph_mask(&mut self, op0: KReg, op1: Ymm, op2: Ymm, op3: Imm) {
8591        self.emit(
8592            VCMPPH256KRRI_MASK,
8593            op0.as_operand(),
8594            op1.as_operand(),
8595            op2.as_operand(),
8596            op3.as_operand(),
8597        );
8598    }
8599}
8600
8601impl<'a> VcmpphMaskEmitter<KReg, Ymm, Mem, Imm> for Assembler<'a> {
8602    fn vcmpph_mask(&mut self, op0: KReg, op1: Ymm, op2: Mem, op3: Imm) {
8603        self.emit(
8604            VCMPPH256KRMI_MASK,
8605            op0.as_operand(),
8606            op1.as_operand(),
8607            op2.as_operand(),
8608            op3.as_operand(),
8609        );
8610    }
8611}
8612
8613impl<'a> VcmpphMaskEmitter<KReg, Zmm, Zmm, Imm> for Assembler<'a> {
8614    fn vcmpph_mask(&mut self, op0: KReg, op1: Zmm, op2: Zmm, op3: Imm) {
8615        self.emit(
8616            VCMPPH512KRRI_MASK,
8617            op0.as_operand(),
8618            op1.as_operand(),
8619            op2.as_operand(),
8620            op3.as_operand(),
8621        );
8622    }
8623}
8624
8625impl<'a> VcmpphMaskEmitter<KReg, Zmm, Mem, Imm> for Assembler<'a> {
8626    fn vcmpph_mask(&mut self, op0: KReg, op1: Zmm, op2: Mem, op3: Imm) {
8627        self.emit(
8628            VCMPPH512KRMI_MASK,
8629            op0.as_operand(),
8630            op1.as_operand(),
8631            op2.as_operand(),
8632            op3.as_operand(),
8633        );
8634    }
8635}
8636
8637/// `VCMPPH_MASK_SAE`.
8638///
8639/// Supported operand variants:
8640///
8641/// ```text
8642/// +---+---------------------+
8643/// | # | Operands            |
8644/// +---+---------------------+
8645/// | 1 | KReg, Zmm, Zmm, Imm |
8646/// +---+---------------------+
8647/// ```
8648pub trait VcmpphMaskSaeEmitter<A, B, C, D> {
8649    fn vcmpph_mask_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
8650}
8651
8652impl<'a> VcmpphMaskSaeEmitter<KReg, Zmm, Zmm, Imm> for Assembler<'a> {
8653    fn vcmpph_mask_sae(&mut self, op0: KReg, op1: Zmm, op2: Zmm, op3: Imm) {
8654        self.emit(
8655            VCMPPH512KRRI_MASK_SAE,
8656            op0.as_operand(),
8657            op1.as_operand(),
8658            op2.as_operand(),
8659            op3.as_operand(),
8660        );
8661    }
8662}
8663
8664/// `VCMPPH_SAE`.
8665///
8666/// Supported operand variants:
8667///
8668/// ```text
8669/// +---+---------------------+
8670/// | # | Operands            |
8671/// +---+---------------------+
8672/// | 1 | KReg, Zmm, Zmm, Imm |
8673/// +---+---------------------+
8674/// ```
8675pub trait VcmpphSaeEmitter<A, B, C, D> {
8676    fn vcmpph_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
8677}
8678
8679impl<'a> VcmpphSaeEmitter<KReg, Zmm, Zmm, Imm> for Assembler<'a> {
8680    fn vcmpph_sae(&mut self, op0: KReg, op1: Zmm, op2: Zmm, op3: Imm) {
8681        self.emit(
8682            VCMPPH512KRRI_SAE,
8683            op0.as_operand(),
8684            op1.as_operand(),
8685            op2.as_operand(),
8686            op3.as_operand(),
8687        );
8688    }
8689}
8690
8691/// `VCMPSH`.
8692///
8693/// Supported operand variants:
8694///
8695/// ```text
8696/// +---+---------------------+
8697/// | # | Operands            |
8698/// +---+---------------------+
8699/// | 1 | KReg, Xmm, Mem, Imm |
8700/// | 2 | KReg, Xmm, Xmm, Imm |
8701/// +---+---------------------+
8702/// ```
8703pub trait VcmpshEmitter<A, B, C, D> {
8704    fn vcmpsh(&mut self, op0: A, op1: B, op2: C, op3: D);
8705}
8706
8707impl<'a> VcmpshEmitter<KReg, Xmm, Xmm, Imm> for Assembler<'a> {
8708    fn vcmpsh(&mut self, op0: KReg, op1: Xmm, op2: Xmm, op3: Imm) {
8709        self.emit(
8710            VCMPSHKRRI,
8711            op0.as_operand(),
8712            op1.as_operand(),
8713            op2.as_operand(),
8714            op3.as_operand(),
8715        );
8716    }
8717}
8718
8719impl<'a> VcmpshEmitter<KReg, Xmm, Mem, Imm> for Assembler<'a> {
8720    fn vcmpsh(&mut self, op0: KReg, op1: Xmm, op2: Mem, op3: Imm) {
8721        self.emit(
8722            VCMPSHKRMI,
8723            op0.as_operand(),
8724            op1.as_operand(),
8725            op2.as_operand(),
8726            op3.as_operand(),
8727        );
8728    }
8729}
8730
8731/// `VCMPSH_MASK`.
8732///
8733/// Supported operand variants:
8734///
8735/// ```text
8736/// +---+---------------------+
8737/// | # | Operands            |
8738/// +---+---------------------+
8739/// | 1 | KReg, Xmm, Mem, Imm |
8740/// | 2 | KReg, Xmm, Xmm, Imm |
8741/// +---+---------------------+
8742/// ```
8743pub trait VcmpshMaskEmitter<A, B, C, D> {
8744    fn vcmpsh_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
8745}
8746
8747impl<'a> VcmpshMaskEmitter<KReg, Xmm, Xmm, Imm> for Assembler<'a> {
8748    fn vcmpsh_mask(&mut self, op0: KReg, op1: Xmm, op2: Xmm, op3: Imm) {
8749        self.emit(
8750            VCMPSHKRRI_MASK,
8751            op0.as_operand(),
8752            op1.as_operand(),
8753            op2.as_operand(),
8754            op3.as_operand(),
8755        );
8756    }
8757}
8758
8759impl<'a> VcmpshMaskEmitter<KReg, Xmm, Mem, Imm> for Assembler<'a> {
8760    fn vcmpsh_mask(&mut self, op0: KReg, op1: Xmm, op2: Mem, op3: Imm) {
8761        self.emit(
8762            VCMPSHKRMI_MASK,
8763            op0.as_operand(),
8764            op1.as_operand(),
8765            op2.as_operand(),
8766            op3.as_operand(),
8767        );
8768    }
8769}
8770
8771/// `VCMPSH_MASK_SAE`.
8772///
8773/// Supported operand variants:
8774///
8775/// ```text
8776/// +---+---------------------+
8777/// | # | Operands            |
8778/// +---+---------------------+
8779/// | 1 | KReg, Xmm, Xmm, Imm |
8780/// +---+---------------------+
8781/// ```
8782pub trait VcmpshMaskSaeEmitter<A, B, C, D> {
8783    fn vcmpsh_mask_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
8784}
8785
8786impl<'a> VcmpshMaskSaeEmitter<KReg, Xmm, Xmm, Imm> for Assembler<'a> {
8787    fn vcmpsh_mask_sae(&mut self, op0: KReg, op1: Xmm, op2: Xmm, op3: Imm) {
8788        self.emit(
8789            VCMPSHKRRI_MASK_SAE,
8790            op0.as_operand(),
8791            op1.as_operand(),
8792            op2.as_operand(),
8793            op3.as_operand(),
8794        );
8795    }
8796}
8797
8798/// `VCMPSH_SAE`.
8799///
8800/// Supported operand variants:
8801///
8802/// ```text
8803/// +---+---------------------+
8804/// | # | Operands            |
8805/// +---+---------------------+
8806/// | 1 | KReg, Xmm, Xmm, Imm |
8807/// +---+---------------------+
8808/// ```
8809pub trait VcmpshSaeEmitter<A, B, C, D> {
8810    fn vcmpsh_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
8811}
8812
8813impl<'a> VcmpshSaeEmitter<KReg, Xmm, Xmm, Imm> for Assembler<'a> {
8814    fn vcmpsh_sae(&mut self, op0: KReg, op1: Xmm, op2: Xmm, op3: Imm) {
8815        self.emit(
8816            VCMPSHKRRI_SAE,
8817            op0.as_operand(),
8818            op1.as_operand(),
8819            op2.as_operand(),
8820            op3.as_operand(),
8821        );
8822    }
8823}
8824
8825/// `VCOMISH`.
8826///
8827/// Supported operand variants:
8828///
8829/// ```text
8830/// +---+----------+
8831/// | # | Operands |
8832/// +---+----------+
8833/// | 1 | Xmm, Mem |
8834/// | 2 | Xmm, Xmm |
8835/// +---+----------+
8836/// ```
8837pub trait VcomishEmitter<A, B> {
8838    fn vcomish(&mut self, op0: A, op1: B);
8839}
8840
8841impl<'a> VcomishEmitter<Xmm, Xmm> for Assembler<'a> {
8842    fn vcomish(&mut self, op0: Xmm, op1: Xmm) {
8843        self.emit(
8844            VCOMISHRR,
8845            op0.as_operand(),
8846            op1.as_operand(),
8847            &NOREG,
8848            &NOREG,
8849        );
8850    }
8851}
8852
8853impl<'a> VcomishEmitter<Xmm, Mem> for Assembler<'a> {
8854    fn vcomish(&mut self, op0: Xmm, op1: Mem) {
8855        self.emit(
8856            VCOMISHRM,
8857            op0.as_operand(),
8858            op1.as_operand(),
8859            &NOREG,
8860            &NOREG,
8861        );
8862    }
8863}
8864
8865/// `VCOMISH_SAE`.
8866///
8867/// Supported operand variants:
8868///
8869/// ```text
8870/// +---+----------+
8871/// | # | Operands |
8872/// +---+----------+
8873/// | 1 | Xmm, Xmm |
8874/// +---+----------+
8875/// ```
8876pub trait VcomishSaeEmitter<A, B> {
8877    fn vcomish_sae(&mut self, op0: A, op1: B);
8878}
8879
8880impl<'a> VcomishSaeEmitter<Xmm, Xmm> for Assembler<'a> {
8881    fn vcomish_sae(&mut self, op0: Xmm, op1: Xmm) {
8882        self.emit(
8883            VCOMISHRR_SAE,
8884            op0.as_operand(),
8885            op1.as_operand(),
8886            &NOREG,
8887            &NOREG,
8888        );
8889    }
8890}
8891
8892/// `VCVTDQ2PH`.
8893///
8894/// Supported operand variants:
8895///
8896/// ```text
8897/// +---+----------+
8898/// | # | Operands |
8899/// +---+----------+
8900/// | 1 | Xmm, Mem |
8901/// | 2 | Xmm, Xmm |
8902/// | 3 | Xmm, Ymm |
8903/// | 4 | Ymm, Mem |
8904/// | 5 | Ymm, Zmm |
8905/// +---+----------+
8906/// ```
8907pub trait Vcvtdq2phEmitter<A, B> {
8908    fn vcvtdq2ph(&mut self, op0: A, op1: B);
8909}
8910
8911impl<'a> Vcvtdq2phEmitter<Xmm, Xmm> for Assembler<'a> {
8912    fn vcvtdq2ph(&mut self, op0: Xmm, op1: Xmm) {
8913        self.emit(
8914            VCVTDQ2PH128RR,
8915            op0.as_operand(),
8916            op1.as_operand(),
8917            &NOREG,
8918            &NOREG,
8919        );
8920    }
8921}
8922
8923impl<'a> Vcvtdq2phEmitter<Xmm, Mem> for Assembler<'a> {
8924    fn vcvtdq2ph(&mut self, op0: Xmm, op1: Mem) {
8925        self.emit(
8926            VCVTDQ2PH128RM,
8927            op0.as_operand(),
8928            op1.as_operand(),
8929            &NOREG,
8930            &NOREG,
8931        );
8932    }
8933}
8934
8935impl<'a> Vcvtdq2phEmitter<Xmm, Ymm> for Assembler<'a> {
8936    fn vcvtdq2ph(&mut self, op0: Xmm, op1: Ymm) {
8937        self.emit(
8938            VCVTDQ2PH256RR,
8939            op0.as_operand(),
8940            op1.as_operand(),
8941            &NOREG,
8942            &NOREG,
8943        );
8944    }
8945}
8946
8947impl<'a> Vcvtdq2phEmitter<Ymm, Zmm> for Assembler<'a> {
8948    fn vcvtdq2ph(&mut self, op0: Ymm, op1: Zmm) {
8949        self.emit(
8950            VCVTDQ2PH512RR,
8951            op0.as_operand(),
8952            op1.as_operand(),
8953            &NOREG,
8954            &NOREG,
8955        );
8956    }
8957}
8958
8959impl<'a> Vcvtdq2phEmitter<Ymm, Mem> for Assembler<'a> {
8960    fn vcvtdq2ph(&mut self, op0: Ymm, op1: Mem) {
8961        self.emit(
8962            VCVTDQ2PH512RM,
8963            op0.as_operand(),
8964            op1.as_operand(),
8965            &NOREG,
8966            &NOREG,
8967        );
8968    }
8969}
8970
8971/// `VCVTDQ2PH_ER`.
8972///
8973/// Supported operand variants:
8974///
8975/// ```text
8976/// +---+----------+
8977/// | # | Operands |
8978/// +---+----------+
8979/// | 1 | Ymm, Zmm |
8980/// +---+----------+
8981/// ```
8982pub trait Vcvtdq2phErEmitter<A, B> {
8983    fn vcvtdq2ph_er(&mut self, op0: A, op1: B);
8984}
8985
8986impl<'a> Vcvtdq2phErEmitter<Ymm, Zmm> for Assembler<'a> {
8987    fn vcvtdq2ph_er(&mut self, op0: Ymm, op1: Zmm) {
8988        self.emit(
8989            VCVTDQ2PH512RR_ER,
8990            op0.as_operand(),
8991            op1.as_operand(),
8992            &NOREG,
8993            &NOREG,
8994        );
8995    }
8996}
8997
8998/// `VCVTDQ2PH_MASK`.
8999///
9000/// Supported operand variants:
9001///
9002/// ```text
9003/// +---+----------+
9004/// | # | Operands |
9005/// +---+----------+
9006/// | 1 | Xmm, Mem |
9007/// | 2 | Xmm, Xmm |
9008/// | 3 | Xmm, Ymm |
9009/// | 4 | Ymm, Mem |
9010/// | 5 | Ymm, Zmm |
9011/// +---+----------+
9012/// ```
9013pub trait Vcvtdq2phMaskEmitter<A, B> {
9014    fn vcvtdq2ph_mask(&mut self, op0: A, op1: B);
9015}
9016
9017impl<'a> Vcvtdq2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
9018    fn vcvtdq2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
9019        self.emit(
9020            VCVTDQ2PH128RR_MASK,
9021            op0.as_operand(),
9022            op1.as_operand(),
9023            &NOREG,
9024            &NOREG,
9025        );
9026    }
9027}
9028
9029impl<'a> Vcvtdq2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
9030    fn vcvtdq2ph_mask(&mut self, op0: Xmm, op1: Mem) {
9031        self.emit(
9032            VCVTDQ2PH128RM_MASK,
9033            op0.as_operand(),
9034            op1.as_operand(),
9035            &NOREG,
9036            &NOREG,
9037        );
9038    }
9039}
9040
9041impl<'a> Vcvtdq2phMaskEmitter<Xmm, Ymm> for Assembler<'a> {
9042    fn vcvtdq2ph_mask(&mut self, op0: Xmm, op1: Ymm) {
9043        self.emit(
9044            VCVTDQ2PH256RR_MASK,
9045            op0.as_operand(),
9046            op1.as_operand(),
9047            &NOREG,
9048            &NOREG,
9049        );
9050    }
9051}
9052
9053impl<'a> Vcvtdq2phMaskEmitter<Ymm, Zmm> for Assembler<'a> {
9054    fn vcvtdq2ph_mask(&mut self, op0: Ymm, op1: Zmm) {
9055        self.emit(
9056            VCVTDQ2PH512RR_MASK,
9057            op0.as_operand(),
9058            op1.as_operand(),
9059            &NOREG,
9060            &NOREG,
9061        );
9062    }
9063}
9064
9065impl<'a> Vcvtdq2phMaskEmitter<Ymm, Mem> for Assembler<'a> {
9066    fn vcvtdq2ph_mask(&mut self, op0: Ymm, op1: Mem) {
9067        self.emit(
9068            VCVTDQ2PH512RM_MASK,
9069            op0.as_operand(),
9070            op1.as_operand(),
9071            &NOREG,
9072            &NOREG,
9073        );
9074    }
9075}
9076
9077/// `VCVTDQ2PH_MASK_ER`.
9078///
9079/// Supported operand variants:
9080///
9081/// ```text
9082/// +---+----------+
9083/// | # | Operands |
9084/// +---+----------+
9085/// | 1 | Ymm, Zmm |
9086/// +---+----------+
9087/// ```
9088pub trait Vcvtdq2phMaskErEmitter<A, B> {
9089    fn vcvtdq2ph_mask_er(&mut self, op0: A, op1: B);
9090}
9091
9092impl<'a> Vcvtdq2phMaskErEmitter<Ymm, Zmm> for Assembler<'a> {
9093    fn vcvtdq2ph_mask_er(&mut self, op0: Ymm, op1: Zmm) {
9094        self.emit(
9095            VCVTDQ2PH512RR_MASK_ER,
9096            op0.as_operand(),
9097            op1.as_operand(),
9098            &NOREG,
9099            &NOREG,
9100        );
9101    }
9102}
9103
9104/// `VCVTDQ2PH_MASKZ`.
9105///
9106/// Supported operand variants:
9107///
9108/// ```text
9109/// +---+----------+
9110/// | # | Operands |
9111/// +---+----------+
9112/// | 1 | Xmm, Mem |
9113/// | 2 | Xmm, Xmm |
9114/// | 3 | Xmm, Ymm |
9115/// | 4 | Ymm, Mem |
9116/// | 5 | Ymm, Zmm |
9117/// +---+----------+
9118/// ```
9119pub trait Vcvtdq2phMaskzEmitter<A, B> {
9120    fn vcvtdq2ph_maskz(&mut self, op0: A, op1: B);
9121}
9122
9123impl<'a> Vcvtdq2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
9124    fn vcvtdq2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
9125        self.emit(
9126            VCVTDQ2PH128RR_MASKZ,
9127            op0.as_operand(),
9128            op1.as_operand(),
9129            &NOREG,
9130            &NOREG,
9131        );
9132    }
9133}
9134
9135impl<'a> Vcvtdq2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
9136    fn vcvtdq2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
9137        self.emit(
9138            VCVTDQ2PH128RM_MASKZ,
9139            op0.as_operand(),
9140            op1.as_operand(),
9141            &NOREG,
9142            &NOREG,
9143        );
9144    }
9145}
9146
9147impl<'a> Vcvtdq2phMaskzEmitter<Xmm, Ymm> for Assembler<'a> {
9148    fn vcvtdq2ph_maskz(&mut self, op0: Xmm, op1: Ymm) {
9149        self.emit(
9150            VCVTDQ2PH256RR_MASKZ,
9151            op0.as_operand(),
9152            op1.as_operand(),
9153            &NOREG,
9154            &NOREG,
9155        );
9156    }
9157}
9158
9159impl<'a> Vcvtdq2phMaskzEmitter<Ymm, Zmm> for Assembler<'a> {
9160    fn vcvtdq2ph_maskz(&mut self, op0: Ymm, op1: Zmm) {
9161        self.emit(
9162            VCVTDQ2PH512RR_MASKZ,
9163            op0.as_operand(),
9164            op1.as_operand(),
9165            &NOREG,
9166            &NOREG,
9167        );
9168    }
9169}
9170
9171impl<'a> Vcvtdq2phMaskzEmitter<Ymm, Mem> for Assembler<'a> {
9172    fn vcvtdq2ph_maskz(&mut self, op0: Ymm, op1: Mem) {
9173        self.emit(
9174            VCVTDQ2PH512RM_MASKZ,
9175            op0.as_operand(),
9176            op1.as_operand(),
9177            &NOREG,
9178            &NOREG,
9179        );
9180    }
9181}
9182
9183/// `VCVTDQ2PH_MASKZ_ER`.
9184///
9185/// Supported operand variants:
9186///
9187/// ```text
9188/// +---+----------+
9189/// | # | Operands |
9190/// +---+----------+
9191/// | 1 | Ymm, Zmm |
9192/// +---+----------+
9193/// ```
9194pub trait Vcvtdq2phMaskzErEmitter<A, B> {
9195    fn vcvtdq2ph_maskz_er(&mut self, op0: A, op1: B);
9196}
9197
9198impl<'a> Vcvtdq2phMaskzErEmitter<Ymm, Zmm> for Assembler<'a> {
9199    fn vcvtdq2ph_maskz_er(&mut self, op0: Ymm, op1: Zmm) {
9200        self.emit(
9201            VCVTDQ2PH512RR_MASKZ_ER,
9202            op0.as_operand(),
9203            op1.as_operand(),
9204            &NOREG,
9205            &NOREG,
9206        );
9207    }
9208}
9209
9210/// `VCVTNEEBF162PS`.
9211///
9212/// Supported operand variants:
9213///
9214/// ```text
9215/// +---+----------+
9216/// | # | Operands |
9217/// +---+----------+
9218/// | 1 | Xmm, Mem |
9219/// | 2 | Ymm, Mem |
9220/// +---+----------+
9221/// ```
9222pub trait Vcvtneebf162psEmitter<A, B> {
9223    fn vcvtneebf162ps(&mut self, op0: A, op1: B);
9224}
9225
9226impl<'a> Vcvtneebf162psEmitter<Xmm, Mem> for Assembler<'a> {
9227    fn vcvtneebf162ps(&mut self, op0: Xmm, op1: Mem) {
9228        self.emit(
9229            VCVTNEEBF162PS128RM,
9230            op0.as_operand(),
9231            op1.as_operand(),
9232            &NOREG,
9233            &NOREG,
9234        );
9235    }
9236}
9237
9238impl<'a> Vcvtneebf162psEmitter<Ymm, Mem> for Assembler<'a> {
9239    fn vcvtneebf162ps(&mut self, op0: Ymm, op1: Mem) {
9240        self.emit(
9241            VCVTNEEBF162PS256RM,
9242            op0.as_operand(),
9243            op1.as_operand(),
9244            &NOREG,
9245            &NOREG,
9246        );
9247    }
9248}
9249
9250/// `VCVTNEEPH2PS`.
9251///
9252/// Supported operand variants:
9253///
9254/// ```text
9255/// +---+----------+
9256/// | # | Operands |
9257/// +---+----------+
9258/// | 1 | Xmm, Mem |
9259/// | 2 | Ymm, Mem |
9260/// +---+----------+
9261/// ```
9262pub trait Vcvtneeph2psEmitter<A, B> {
9263    fn vcvtneeph2ps(&mut self, op0: A, op1: B);
9264}
9265
9266impl<'a> Vcvtneeph2psEmitter<Xmm, Mem> for Assembler<'a> {
9267    fn vcvtneeph2ps(&mut self, op0: Xmm, op1: Mem) {
9268        self.emit(
9269            VCVTNEEPH2PS128RM,
9270            op0.as_operand(),
9271            op1.as_operand(),
9272            &NOREG,
9273            &NOREG,
9274        );
9275    }
9276}
9277
9278impl<'a> Vcvtneeph2psEmitter<Ymm, Mem> for Assembler<'a> {
9279    fn vcvtneeph2ps(&mut self, op0: Ymm, op1: Mem) {
9280        self.emit(
9281            VCVTNEEPH2PS256RM,
9282            op0.as_operand(),
9283            op1.as_operand(),
9284            &NOREG,
9285            &NOREG,
9286        );
9287    }
9288}
9289
9290/// `VCVTNEOBF162PS`.
9291///
9292/// Supported operand variants:
9293///
9294/// ```text
9295/// +---+----------+
9296/// | # | Operands |
9297/// +---+----------+
9298/// | 1 | Xmm, Mem |
9299/// | 2 | Ymm, Mem |
9300/// +---+----------+
9301/// ```
9302pub trait Vcvtneobf162psEmitter<A, B> {
9303    fn vcvtneobf162ps(&mut self, op0: A, op1: B);
9304}
9305
9306impl<'a> Vcvtneobf162psEmitter<Xmm, Mem> for Assembler<'a> {
9307    fn vcvtneobf162ps(&mut self, op0: Xmm, op1: Mem) {
9308        self.emit(
9309            VCVTNEOBF162PS128RM,
9310            op0.as_operand(),
9311            op1.as_operand(),
9312            &NOREG,
9313            &NOREG,
9314        );
9315    }
9316}
9317
9318impl<'a> Vcvtneobf162psEmitter<Ymm, Mem> for Assembler<'a> {
9319    fn vcvtneobf162ps(&mut self, op0: Ymm, op1: Mem) {
9320        self.emit(
9321            VCVTNEOBF162PS256RM,
9322            op0.as_operand(),
9323            op1.as_operand(),
9324            &NOREG,
9325            &NOREG,
9326        );
9327    }
9328}
9329
9330/// `VCVTNEOPH2PS`.
9331///
9332/// Supported operand variants:
9333///
9334/// ```text
9335/// +---+----------+
9336/// | # | Operands |
9337/// +---+----------+
9338/// | 1 | Xmm, Mem |
9339/// | 2 | Ymm, Mem |
9340/// +---+----------+
9341/// ```
9342pub trait Vcvtneoph2psEmitter<A, B> {
9343    fn vcvtneoph2ps(&mut self, op0: A, op1: B);
9344}
9345
9346impl<'a> Vcvtneoph2psEmitter<Xmm, Mem> for Assembler<'a> {
9347    fn vcvtneoph2ps(&mut self, op0: Xmm, op1: Mem) {
9348        self.emit(
9349            VCVTNEOPH2PS128RM,
9350            op0.as_operand(),
9351            op1.as_operand(),
9352            &NOREG,
9353            &NOREG,
9354        );
9355    }
9356}
9357
9358impl<'a> Vcvtneoph2psEmitter<Ymm, Mem> for Assembler<'a> {
9359    fn vcvtneoph2ps(&mut self, op0: Ymm, op1: Mem) {
9360        self.emit(
9361            VCVTNEOPH2PS256RM,
9362            op0.as_operand(),
9363            op1.as_operand(),
9364            &NOREG,
9365            &NOREG,
9366        );
9367    }
9368}
9369
9370/// `VCVTPD2PH`.
9371///
9372/// Supported operand variants:
9373///
9374/// ```text
9375/// +---+----------+
9376/// | # | Operands |
9377/// +---+----------+
9378/// | 1 | Xmm, Mem |
9379/// | 2 | Xmm, Xmm |
9380/// | 3 | Xmm, Ymm |
9381/// | 4 | Xmm, Zmm |
9382/// +---+----------+
9383/// ```
9384pub trait Vcvtpd2phEmitter<A, B> {
9385    fn vcvtpd2ph(&mut self, op0: A, op1: B);
9386}
9387
9388impl<'a> Vcvtpd2phEmitter<Xmm, Xmm> for Assembler<'a> {
9389    fn vcvtpd2ph(&mut self, op0: Xmm, op1: Xmm) {
9390        self.emit(
9391            VCVTPD2PH128RR,
9392            op0.as_operand(),
9393            op1.as_operand(),
9394            &NOREG,
9395            &NOREG,
9396        );
9397    }
9398}
9399
9400impl<'a> Vcvtpd2phEmitter<Xmm, Mem> for Assembler<'a> {
9401    fn vcvtpd2ph(&mut self, op0: Xmm, op1: Mem) {
9402        self.emit(
9403            VCVTPD2PH128RM,
9404            op0.as_operand(),
9405            op1.as_operand(),
9406            &NOREG,
9407            &NOREG,
9408        );
9409    }
9410}
9411
9412impl<'a> Vcvtpd2phEmitter<Xmm, Ymm> for Assembler<'a> {
9413    fn vcvtpd2ph(&mut self, op0: Xmm, op1: Ymm) {
9414        self.emit(
9415            VCVTPD2PH256RR,
9416            op0.as_operand(),
9417            op1.as_operand(),
9418            &NOREG,
9419            &NOREG,
9420        );
9421    }
9422}
9423
9424impl<'a> Vcvtpd2phEmitter<Xmm, Zmm> for Assembler<'a> {
9425    fn vcvtpd2ph(&mut self, op0: Xmm, op1: Zmm) {
9426        self.emit(
9427            VCVTPD2PH512RR,
9428            op0.as_operand(),
9429            op1.as_operand(),
9430            &NOREG,
9431            &NOREG,
9432        );
9433    }
9434}
9435
9436/// `VCVTPD2PH_ER`.
9437///
9438/// Supported operand variants:
9439///
9440/// ```text
9441/// +---+----------+
9442/// | # | Operands |
9443/// +---+----------+
9444/// | 1 | Xmm, Zmm |
9445/// +---+----------+
9446/// ```
9447pub trait Vcvtpd2phErEmitter<A, B> {
9448    fn vcvtpd2ph_er(&mut self, op0: A, op1: B);
9449}
9450
9451impl<'a> Vcvtpd2phErEmitter<Xmm, Zmm> for Assembler<'a> {
9452    fn vcvtpd2ph_er(&mut self, op0: Xmm, op1: Zmm) {
9453        self.emit(
9454            VCVTPD2PH512RR_ER,
9455            op0.as_operand(),
9456            op1.as_operand(),
9457            &NOREG,
9458            &NOREG,
9459        );
9460    }
9461}
9462
9463/// `VCVTPD2PH_MASK`.
9464///
9465/// Supported operand variants:
9466///
9467/// ```text
9468/// +---+----------+
9469/// | # | Operands |
9470/// +---+----------+
9471/// | 1 | Xmm, Mem |
9472/// | 2 | Xmm, Xmm |
9473/// | 3 | Xmm, Ymm |
9474/// | 4 | Xmm, Zmm |
9475/// +---+----------+
9476/// ```
9477pub trait Vcvtpd2phMaskEmitter<A, B> {
9478    fn vcvtpd2ph_mask(&mut self, op0: A, op1: B);
9479}
9480
9481impl<'a> Vcvtpd2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
9482    fn vcvtpd2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
9483        self.emit(
9484            VCVTPD2PH128RR_MASK,
9485            op0.as_operand(),
9486            op1.as_operand(),
9487            &NOREG,
9488            &NOREG,
9489        );
9490    }
9491}
9492
9493impl<'a> Vcvtpd2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
9494    fn vcvtpd2ph_mask(&mut self, op0: Xmm, op1: Mem) {
9495        self.emit(
9496            VCVTPD2PH128RM_MASK,
9497            op0.as_operand(),
9498            op1.as_operand(),
9499            &NOREG,
9500            &NOREG,
9501        );
9502    }
9503}
9504
9505impl<'a> Vcvtpd2phMaskEmitter<Xmm, Ymm> for Assembler<'a> {
9506    fn vcvtpd2ph_mask(&mut self, op0: Xmm, op1: Ymm) {
9507        self.emit(
9508            VCVTPD2PH256RR_MASK,
9509            op0.as_operand(),
9510            op1.as_operand(),
9511            &NOREG,
9512            &NOREG,
9513        );
9514    }
9515}
9516
9517impl<'a> Vcvtpd2phMaskEmitter<Xmm, Zmm> for Assembler<'a> {
9518    fn vcvtpd2ph_mask(&mut self, op0: Xmm, op1: Zmm) {
9519        self.emit(
9520            VCVTPD2PH512RR_MASK,
9521            op0.as_operand(),
9522            op1.as_operand(),
9523            &NOREG,
9524            &NOREG,
9525        );
9526    }
9527}
9528
9529/// `VCVTPD2PH_MASK_ER`.
9530///
9531/// Supported operand variants:
9532///
9533/// ```text
9534/// +---+----------+
9535/// | # | Operands |
9536/// +---+----------+
9537/// | 1 | Xmm, Zmm |
9538/// +---+----------+
9539/// ```
9540pub trait Vcvtpd2phMaskErEmitter<A, B> {
9541    fn vcvtpd2ph_mask_er(&mut self, op0: A, op1: B);
9542}
9543
9544impl<'a> Vcvtpd2phMaskErEmitter<Xmm, Zmm> for Assembler<'a> {
9545    fn vcvtpd2ph_mask_er(&mut self, op0: Xmm, op1: Zmm) {
9546        self.emit(
9547            VCVTPD2PH512RR_MASK_ER,
9548            op0.as_operand(),
9549            op1.as_operand(),
9550            &NOREG,
9551            &NOREG,
9552        );
9553    }
9554}
9555
9556/// `VCVTPD2PH_MASKZ`.
9557///
9558/// Supported operand variants:
9559///
9560/// ```text
9561/// +---+----------+
9562/// | # | Operands |
9563/// +---+----------+
9564/// | 1 | Xmm, Mem |
9565/// | 2 | Xmm, Xmm |
9566/// | 3 | Xmm, Ymm |
9567/// | 4 | Xmm, Zmm |
9568/// +---+----------+
9569/// ```
9570pub trait Vcvtpd2phMaskzEmitter<A, B> {
9571    fn vcvtpd2ph_maskz(&mut self, op0: A, op1: B);
9572}
9573
9574impl<'a> Vcvtpd2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
9575    fn vcvtpd2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
9576        self.emit(
9577            VCVTPD2PH128RR_MASKZ,
9578            op0.as_operand(),
9579            op1.as_operand(),
9580            &NOREG,
9581            &NOREG,
9582        );
9583    }
9584}
9585
9586impl<'a> Vcvtpd2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
9587    fn vcvtpd2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
9588        self.emit(
9589            VCVTPD2PH128RM_MASKZ,
9590            op0.as_operand(),
9591            op1.as_operand(),
9592            &NOREG,
9593            &NOREG,
9594        );
9595    }
9596}
9597
9598impl<'a> Vcvtpd2phMaskzEmitter<Xmm, Ymm> for Assembler<'a> {
9599    fn vcvtpd2ph_maskz(&mut self, op0: Xmm, op1: Ymm) {
9600        self.emit(
9601            VCVTPD2PH256RR_MASKZ,
9602            op0.as_operand(),
9603            op1.as_operand(),
9604            &NOREG,
9605            &NOREG,
9606        );
9607    }
9608}
9609
9610impl<'a> Vcvtpd2phMaskzEmitter<Xmm, Zmm> for Assembler<'a> {
9611    fn vcvtpd2ph_maskz(&mut self, op0: Xmm, op1: Zmm) {
9612        self.emit(
9613            VCVTPD2PH512RR_MASKZ,
9614            op0.as_operand(),
9615            op1.as_operand(),
9616            &NOREG,
9617            &NOREG,
9618        );
9619    }
9620}
9621
9622/// `VCVTPD2PH_MASKZ_ER`.
9623///
9624/// Supported operand variants:
9625///
9626/// ```text
9627/// +---+----------+
9628/// | # | Operands |
9629/// +---+----------+
9630/// | 1 | Xmm, Zmm |
9631/// +---+----------+
9632/// ```
9633pub trait Vcvtpd2phMaskzErEmitter<A, B> {
9634    fn vcvtpd2ph_maskz_er(&mut self, op0: A, op1: B);
9635}
9636
9637impl<'a> Vcvtpd2phMaskzErEmitter<Xmm, Zmm> for Assembler<'a> {
9638    fn vcvtpd2ph_maskz_er(&mut self, op0: Xmm, op1: Zmm) {
9639        self.emit(
9640            VCVTPD2PH512RR_MASKZ_ER,
9641            op0.as_operand(),
9642            op1.as_operand(),
9643            &NOREG,
9644            &NOREG,
9645        );
9646    }
9647}
9648
9649/// `VCVTPH2DQ`.
9650///
9651/// Supported operand variants:
9652///
9653/// ```text
9654/// +---+----------+
9655/// | # | Operands |
9656/// +---+----------+
9657/// | 1 | Xmm, Mem |
9658/// | 2 | Xmm, Xmm |
9659/// | 3 | Ymm, Mem |
9660/// | 4 | Ymm, Xmm |
9661/// | 5 | Zmm, Mem |
9662/// | 6 | Zmm, Ymm |
9663/// +---+----------+
9664/// ```
9665pub trait Vcvtph2dqEmitter<A, B> {
9666    fn vcvtph2dq(&mut self, op0: A, op1: B);
9667}
9668
9669impl<'a> Vcvtph2dqEmitter<Xmm, Xmm> for Assembler<'a> {
9670    fn vcvtph2dq(&mut self, op0: Xmm, op1: Xmm) {
9671        self.emit(
9672            VCVTPH2DQ128RR,
9673            op0.as_operand(),
9674            op1.as_operand(),
9675            &NOREG,
9676            &NOREG,
9677        );
9678    }
9679}
9680
9681impl<'a> Vcvtph2dqEmitter<Xmm, Mem> for Assembler<'a> {
9682    fn vcvtph2dq(&mut self, op0: Xmm, op1: Mem) {
9683        self.emit(
9684            VCVTPH2DQ128RM,
9685            op0.as_operand(),
9686            op1.as_operand(),
9687            &NOREG,
9688            &NOREG,
9689        );
9690    }
9691}
9692
9693impl<'a> Vcvtph2dqEmitter<Ymm, Xmm> for Assembler<'a> {
9694    fn vcvtph2dq(&mut self, op0: Ymm, op1: Xmm) {
9695        self.emit(
9696            VCVTPH2DQ256RR,
9697            op0.as_operand(),
9698            op1.as_operand(),
9699            &NOREG,
9700            &NOREG,
9701        );
9702    }
9703}
9704
9705impl<'a> Vcvtph2dqEmitter<Ymm, Mem> for Assembler<'a> {
9706    fn vcvtph2dq(&mut self, op0: Ymm, op1: Mem) {
9707        self.emit(
9708            VCVTPH2DQ256RM,
9709            op0.as_operand(),
9710            op1.as_operand(),
9711            &NOREG,
9712            &NOREG,
9713        );
9714    }
9715}
9716
9717impl<'a> Vcvtph2dqEmitter<Zmm, Ymm> for Assembler<'a> {
9718    fn vcvtph2dq(&mut self, op0: Zmm, op1: Ymm) {
9719        self.emit(
9720            VCVTPH2DQ512RR,
9721            op0.as_operand(),
9722            op1.as_operand(),
9723            &NOREG,
9724            &NOREG,
9725        );
9726    }
9727}
9728
9729impl<'a> Vcvtph2dqEmitter<Zmm, Mem> for Assembler<'a> {
9730    fn vcvtph2dq(&mut self, op0: Zmm, op1: Mem) {
9731        self.emit(
9732            VCVTPH2DQ512RM,
9733            op0.as_operand(),
9734            op1.as_operand(),
9735            &NOREG,
9736            &NOREG,
9737        );
9738    }
9739}
9740
9741/// `VCVTPH2DQ_ER`.
9742///
9743/// Supported operand variants:
9744///
9745/// ```text
9746/// +---+----------+
9747/// | # | Operands |
9748/// +---+----------+
9749/// | 1 | Zmm, Ymm |
9750/// +---+----------+
9751/// ```
9752pub trait Vcvtph2dqErEmitter<A, B> {
9753    fn vcvtph2dq_er(&mut self, op0: A, op1: B);
9754}
9755
9756impl<'a> Vcvtph2dqErEmitter<Zmm, Ymm> for Assembler<'a> {
9757    fn vcvtph2dq_er(&mut self, op0: Zmm, op1: Ymm) {
9758        self.emit(
9759            VCVTPH2DQ512RR_ER,
9760            op0.as_operand(),
9761            op1.as_operand(),
9762            &NOREG,
9763            &NOREG,
9764        );
9765    }
9766}
9767
9768/// `VCVTPH2DQ_MASK`.
9769///
9770/// Supported operand variants:
9771///
9772/// ```text
9773/// +---+----------+
9774/// | # | Operands |
9775/// +---+----------+
9776/// | 1 | Xmm, Mem |
9777/// | 2 | Xmm, Xmm |
9778/// | 3 | Ymm, Mem |
9779/// | 4 | Ymm, Xmm |
9780/// | 5 | Zmm, Mem |
9781/// | 6 | Zmm, Ymm |
9782/// +---+----------+
9783/// ```
9784pub trait Vcvtph2dqMaskEmitter<A, B> {
9785    fn vcvtph2dq_mask(&mut self, op0: A, op1: B);
9786}
9787
9788impl<'a> Vcvtph2dqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
9789    fn vcvtph2dq_mask(&mut self, op0: Xmm, op1: Xmm) {
9790        self.emit(
9791            VCVTPH2DQ128RR_MASK,
9792            op0.as_operand(),
9793            op1.as_operand(),
9794            &NOREG,
9795            &NOREG,
9796        );
9797    }
9798}
9799
9800impl<'a> Vcvtph2dqMaskEmitter<Xmm, Mem> for Assembler<'a> {
9801    fn vcvtph2dq_mask(&mut self, op0: Xmm, op1: Mem) {
9802        self.emit(
9803            VCVTPH2DQ128RM_MASK,
9804            op0.as_operand(),
9805            op1.as_operand(),
9806            &NOREG,
9807            &NOREG,
9808        );
9809    }
9810}
9811
9812impl<'a> Vcvtph2dqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
9813    fn vcvtph2dq_mask(&mut self, op0: Ymm, op1: Xmm) {
9814        self.emit(
9815            VCVTPH2DQ256RR_MASK,
9816            op0.as_operand(),
9817            op1.as_operand(),
9818            &NOREG,
9819            &NOREG,
9820        );
9821    }
9822}
9823
9824impl<'a> Vcvtph2dqMaskEmitter<Ymm, Mem> for Assembler<'a> {
9825    fn vcvtph2dq_mask(&mut self, op0: Ymm, op1: Mem) {
9826        self.emit(
9827            VCVTPH2DQ256RM_MASK,
9828            op0.as_operand(),
9829            op1.as_operand(),
9830            &NOREG,
9831            &NOREG,
9832        );
9833    }
9834}
9835
9836impl<'a> Vcvtph2dqMaskEmitter<Zmm, Ymm> for Assembler<'a> {
9837    fn vcvtph2dq_mask(&mut self, op0: Zmm, op1: Ymm) {
9838        self.emit(
9839            VCVTPH2DQ512RR_MASK,
9840            op0.as_operand(),
9841            op1.as_operand(),
9842            &NOREG,
9843            &NOREG,
9844        );
9845    }
9846}
9847
9848impl<'a> Vcvtph2dqMaskEmitter<Zmm, Mem> for Assembler<'a> {
9849    fn vcvtph2dq_mask(&mut self, op0: Zmm, op1: Mem) {
9850        self.emit(
9851            VCVTPH2DQ512RM_MASK,
9852            op0.as_operand(),
9853            op1.as_operand(),
9854            &NOREG,
9855            &NOREG,
9856        );
9857    }
9858}
9859
9860/// `VCVTPH2DQ_MASK_ER`.
9861///
9862/// Supported operand variants:
9863///
9864/// ```text
9865/// +---+----------+
9866/// | # | Operands |
9867/// +---+----------+
9868/// | 1 | Zmm, Ymm |
9869/// +---+----------+
9870/// ```
9871pub trait Vcvtph2dqMaskErEmitter<A, B> {
9872    fn vcvtph2dq_mask_er(&mut self, op0: A, op1: B);
9873}
9874
9875impl<'a> Vcvtph2dqMaskErEmitter<Zmm, Ymm> for Assembler<'a> {
9876    fn vcvtph2dq_mask_er(&mut self, op0: Zmm, op1: Ymm) {
9877        self.emit(
9878            VCVTPH2DQ512RR_MASK_ER,
9879            op0.as_operand(),
9880            op1.as_operand(),
9881            &NOREG,
9882            &NOREG,
9883        );
9884    }
9885}
9886
9887/// `VCVTPH2DQ_MASKZ`.
9888///
9889/// Supported operand variants:
9890///
9891/// ```text
9892/// +---+----------+
9893/// | # | Operands |
9894/// +---+----------+
9895/// | 1 | Xmm, Mem |
9896/// | 2 | Xmm, Xmm |
9897/// | 3 | Ymm, Mem |
9898/// | 4 | Ymm, Xmm |
9899/// | 5 | Zmm, Mem |
9900/// | 6 | Zmm, Ymm |
9901/// +---+----------+
9902/// ```
9903pub trait Vcvtph2dqMaskzEmitter<A, B> {
9904    fn vcvtph2dq_maskz(&mut self, op0: A, op1: B);
9905}
9906
9907impl<'a> Vcvtph2dqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
9908    fn vcvtph2dq_maskz(&mut self, op0: Xmm, op1: Xmm) {
9909        self.emit(
9910            VCVTPH2DQ128RR_MASKZ,
9911            op0.as_operand(),
9912            op1.as_operand(),
9913            &NOREG,
9914            &NOREG,
9915        );
9916    }
9917}
9918
9919impl<'a> Vcvtph2dqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
9920    fn vcvtph2dq_maskz(&mut self, op0: Xmm, op1: Mem) {
9921        self.emit(
9922            VCVTPH2DQ128RM_MASKZ,
9923            op0.as_operand(),
9924            op1.as_operand(),
9925            &NOREG,
9926            &NOREG,
9927        );
9928    }
9929}
9930
9931impl<'a> Vcvtph2dqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
9932    fn vcvtph2dq_maskz(&mut self, op0: Ymm, op1: Xmm) {
9933        self.emit(
9934            VCVTPH2DQ256RR_MASKZ,
9935            op0.as_operand(),
9936            op1.as_operand(),
9937            &NOREG,
9938            &NOREG,
9939        );
9940    }
9941}
9942
9943impl<'a> Vcvtph2dqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
9944    fn vcvtph2dq_maskz(&mut self, op0: Ymm, op1: Mem) {
9945        self.emit(
9946            VCVTPH2DQ256RM_MASKZ,
9947            op0.as_operand(),
9948            op1.as_operand(),
9949            &NOREG,
9950            &NOREG,
9951        );
9952    }
9953}
9954
9955impl<'a> Vcvtph2dqMaskzEmitter<Zmm, Ymm> for Assembler<'a> {
9956    fn vcvtph2dq_maskz(&mut self, op0: Zmm, op1: Ymm) {
9957        self.emit(
9958            VCVTPH2DQ512RR_MASKZ,
9959            op0.as_operand(),
9960            op1.as_operand(),
9961            &NOREG,
9962            &NOREG,
9963        );
9964    }
9965}
9966
9967impl<'a> Vcvtph2dqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
9968    fn vcvtph2dq_maskz(&mut self, op0: Zmm, op1: Mem) {
9969        self.emit(
9970            VCVTPH2DQ512RM_MASKZ,
9971            op0.as_operand(),
9972            op1.as_operand(),
9973            &NOREG,
9974            &NOREG,
9975        );
9976    }
9977}
9978
9979/// `VCVTPH2DQ_MASKZ_ER`.
9980///
9981/// Supported operand variants:
9982///
9983/// ```text
9984/// +---+----------+
9985/// | # | Operands |
9986/// +---+----------+
9987/// | 1 | Zmm, Ymm |
9988/// +---+----------+
9989/// ```
9990pub trait Vcvtph2dqMaskzErEmitter<A, B> {
9991    fn vcvtph2dq_maskz_er(&mut self, op0: A, op1: B);
9992}
9993
9994impl<'a> Vcvtph2dqMaskzErEmitter<Zmm, Ymm> for Assembler<'a> {
9995    fn vcvtph2dq_maskz_er(&mut self, op0: Zmm, op1: Ymm) {
9996        self.emit(
9997            VCVTPH2DQ512RR_MASKZ_ER,
9998            op0.as_operand(),
9999            op1.as_operand(),
10000            &NOREG,
10001            &NOREG,
10002        );
10003    }
10004}
10005
10006/// `VCVTPH2PD`.
10007///
10008/// Supported operand variants:
10009///
10010/// ```text
10011/// +---+----------+
10012/// | # | Operands |
10013/// +---+----------+
10014/// | 1 | Xmm, Mem |
10015/// | 2 | Xmm, Xmm |
10016/// | 3 | Ymm, Mem |
10017/// | 4 | Ymm, Xmm |
10018/// | 5 | Zmm, Mem |
10019/// | 6 | Zmm, Xmm |
10020/// +---+----------+
10021/// ```
10022pub trait Vcvtph2pdEmitter<A, B> {
10023    fn vcvtph2pd(&mut self, op0: A, op1: B);
10024}
10025
10026impl<'a> Vcvtph2pdEmitter<Xmm, Xmm> for Assembler<'a> {
10027    fn vcvtph2pd(&mut self, op0: Xmm, op1: Xmm) {
10028        self.emit(
10029            VCVTPH2PD128RR,
10030            op0.as_operand(),
10031            op1.as_operand(),
10032            &NOREG,
10033            &NOREG,
10034        );
10035    }
10036}
10037
10038impl<'a> Vcvtph2pdEmitter<Xmm, Mem> for Assembler<'a> {
10039    fn vcvtph2pd(&mut self, op0: Xmm, op1: Mem) {
10040        self.emit(
10041            VCVTPH2PD128RM,
10042            op0.as_operand(),
10043            op1.as_operand(),
10044            &NOREG,
10045            &NOREG,
10046        );
10047    }
10048}
10049
10050impl<'a> Vcvtph2pdEmitter<Ymm, Xmm> for Assembler<'a> {
10051    fn vcvtph2pd(&mut self, op0: Ymm, op1: Xmm) {
10052        self.emit(
10053            VCVTPH2PD256RR,
10054            op0.as_operand(),
10055            op1.as_operand(),
10056            &NOREG,
10057            &NOREG,
10058        );
10059    }
10060}
10061
10062impl<'a> Vcvtph2pdEmitter<Ymm, Mem> for Assembler<'a> {
10063    fn vcvtph2pd(&mut self, op0: Ymm, op1: Mem) {
10064        self.emit(
10065            VCVTPH2PD256RM,
10066            op0.as_operand(),
10067            op1.as_operand(),
10068            &NOREG,
10069            &NOREG,
10070        );
10071    }
10072}
10073
10074impl<'a> Vcvtph2pdEmitter<Zmm, Xmm> for Assembler<'a> {
10075    fn vcvtph2pd(&mut self, op0: Zmm, op1: Xmm) {
10076        self.emit(
10077            VCVTPH2PD512RR,
10078            op0.as_operand(),
10079            op1.as_operand(),
10080            &NOREG,
10081            &NOREG,
10082        );
10083    }
10084}
10085
10086impl<'a> Vcvtph2pdEmitter<Zmm, Mem> for Assembler<'a> {
10087    fn vcvtph2pd(&mut self, op0: Zmm, op1: Mem) {
10088        self.emit(
10089            VCVTPH2PD512RM,
10090            op0.as_operand(),
10091            op1.as_operand(),
10092            &NOREG,
10093            &NOREG,
10094        );
10095    }
10096}
10097
10098/// `VCVTPH2PD_MASK`.
10099///
10100/// Supported operand variants:
10101///
10102/// ```text
10103/// +---+----------+
10104/// | # | Operands |
10105/// +---+----------+
10106/// | 1 | Xmm, Mem |
10107/// | 2 | Xmm, Xmm |
10108/// | 3 | Ymm, Mem |
10109/// | 4 | Ymm, Xmm |
10110/// | 5 | Zmm, Mem |
10111/// | 6 | Zmm, Xmm |
10112/// +---+----------+
10113/// ```
10114pub trait Vcvtph2pdMaskEmitter<A, B> {
10115    fn vcvtph2pd_mask(&mut self, op0: A, op1: B);
10116}
10117
10118impl<'a> Vcvtph2pdMaskEmitter<Xmm, Xmm> for Assembler<'a> {
10119    fn vcvtph2pd_mask(&mut self, op0: Xmm, op1: Xmm) {
10120        self.emit(
10121            VCVTPH2PD128RR_MASK,
10122            op0.as_operand(),
10123            op1.as_operand(),
10124            &NOREG,
10125            &NOREG,
10126        );
10127    }
10128}
10129
10130impl<'a> Vcvtph2pdMaskEmitter<Xmm, Mem> for Assembler<'a> {
10131    fn vcvtph2pd_mask(&mut self, op0: Xmm, op1: Mem) {
10132        self.emit(
10133            VCVTPH2PD128RM_MASK,
10134            op0.as_operand(),
10135            op1.as_operand(),
10136            &NOREG,
10137            &NOREG,
10138        );
10139    }
10140}
10141
10142impl<'a> Vcvtph2pdMaskEmitter<Ymm, Xmm> for Assembler<'a> {
10143    fn vcvtph2pd_mask(&mut self, op0: Ymm, op1: Xmm) {
10144        self.emit(
10145            VCVTPH2PD256RR_MASK,
10146            op0.as_operand(),
10147            op1.as_operand(),
10148            &NOREG,
10149            &NOREG,
10150        );
10151    }
10152}
10153
10154impl<'a> Vcvtph2pdMaskEmitter<Ymm, Mem> for Assembler<'a> {
10155    fn vcvtph2pd_mask(&mut self, op0: Ymm, op1: Mem) {
10156        self.emit(
10157            VCVTPH2PD256RM_MASK,
10158            op0.as_operand(),
10159            op1.as_operand(),
10160            &NOREG,
10161            &NOREG,
10162        );
10163    }
10164}
10165
10166impl<'a> Vcvtph2pdMaskEmitter<Zmm, Xmm> for Assembler<'a> {
10167    fn vcvtph2pd_mask(&mut self, op0: Zmm, op1: Xmm) {
10168        self.emit(
10169            VCVTPH2PD512RR_MASK,
10170            op0.as_operand(),
10171            op1.as_operand(),
10172            &NOREG,
10173            &NOREG,
10174        );
10175    }
10176}
10177
10178impl<'a> Vcvtph2pdMaskEmitter<Zmm, Mem> for Assembler<'a> {
10179    fn vcvtph2pd_mask(&mut self, op0: Zmm, op1: Mem) {
10180        self.emit(
10181            VCVTPH2PD512RM_MASK,
10182            op0.as_operand(),
10183            op1.as_operand(),
10184            &NOREG,
10185            &NOREG,
10186        );
10187    }
10188}
10189
10190/// `VCVTPH2PD_MASK_SAE`.
10191///
10192/// Supported operand variants:
10193///
10194/// ```text
10195/// +---+----------+
10196/// | # | Operands |
10197/// +---+----------+
10198/// | 1 | Zmm, Xmm |
10199/// +---+----------+
10200/// ```
10201pub trait Vcvtph2pdMaskSaeEmitter<A, B> {
10202    fn vcvtph2pd_mask_sae(&mut self, op0: A, op1: B);
10203}
10204
10205impl<'a> Vcvtph2pdMaskSaeEmitter<Zmm, Xmm> for Assembler<'a> {
10206    fn vcvtph2pd_mask_sae(&mut self, op0: Zmm, op1: Xmm) {
10207        self.emit(
10208            VCVTPH2PD512RR_MASK_SAE,
10209            op0.as_operand(),
10210            op1.as_operand(),
10211            &NOREG,
10212            &NOREG,
10213        );
10214    }
10215}
10216
10217/// `VCVTPH2PD_MASKZ`.
10218///
10219/// Supported operand variants:
10220///
10221/// ```text
10222/// +---+----------+
10223/// | # | Operands |
10224/// +---+----------+
10225/// | 1 | Xmm, Mem |
10226/// | 2 | Xmm, Xmm |
10227/// | 3 | Ymm, Mem |
10228/// | 4 | Ymm, Xmm |
10229/// | 5 | Zmm, Mem |
10230/// | 6 | Zmm, Xmm |
10231/// +---+----------+
10232/// ```
10233pub trait Vcvtph2pdMaskzEmitter<A, B> {
10234    fn vcvtph2pd_maskz(&mut self, op0: A, op1: B);
10235}
10236
10237impl<'a> Vcvtph2pdMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
10238    fn vcvtph2pd_maskz(&mut self, op0: Xmm, op1: Xmm) {
10239        self.emit(
10240            VCVTPH2PD128RR_MASKZ,
10241            op0.as_operand(),
10242            op1.as_operand(),
10243            &NOREG,
10244            &NOREG,
10245        );
10246    }
10247}
10248
10249impl<'a> Vcvtph2pdMaskzEmitter<Xmm, Mem> for Assembler<'a> {
10250    fn vcvtph2pd_maskz(&mut self, op0: Xmm, op1: Mem) {
10251        self.emit(
10252            VCVTPH2PD128RM_MASKZ,
10253            op0.as_operand(),
10254            op1.as_operand(),
10255            &NOREG,
10256            &NOREG,
10257        );
10258    }
10259}
10260
10261impl<'a> Vcvtph2pdMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
10262    fn vcvtph2pd_maskz(&mut self, op0: Ymm, op1: Xmm) {
10263        self.emit(
10264            VCVTPH2PD256RR_MASKZ,
10265            op0.as_operand(),
10266            op1.as_operand(),
10267            &NOREG,
10268            &NOREG,
10269        );
10270    }
10271}
10272
10273impl<'a> Vcvtph2pdMaskzEmitter<Ymm, Mem> for Assembler<'a> {
10274    fn vcvtph2pd_maskz(&mut self, op0: Ymm, op1: Mem) {
10275        self.emit(
10276            VCVTPH2PD256RM_MASKZ,
10277            op0.as_operand(),
10278            op1.as_operand(),
10279            &NOREG,
10280            &NOREG,
10281        );
10282    }
10283}
10284
10285impl<'a> Vcvtph2pdMaskzEmitter<Zmm, Xmm> for Assembler<'a> {
10286    fn vcvtph2pd_maskz(&mut self, op0: Zmm, op1: Xmm) {
10287        self.emit(
10288            VCVTPH2PD512RR_MASKZ,
10289            op0.as_operand(),
10290            op1.as_operand(),
10291            &NOREG,
10292            &NOREG,
10293        );
10294    }
10295}
10296
10297impl<'a> Vcvtph2pdMaskzEmitter<Zmm, Mem> for Assembler<'a> {
10298    fn vcvtph2pd_maskz(&mut self, op0: Zmm, op1: Mem) {
10299        self.emit(
10300            VCVTPH2PD512RM_MASKZ,
10301            op0.as_operand(),
10302            op1.as_operand(),
10303            &NOREG,
10304            &NOREG,
10305        );
10306    }
10307}
10308
10309/// `VCVTPH2PD_MASKZ_SAE`.
10310///
10311/// Supported operand variants:
10312///
10313/// ```text
10314/// +---+----------+
10315/// | # | Operands |
10316/// +---+----------+
10317/// | 1 | Zmm, Xmm |
10318/// +---+----------+
10319/// ```
10320pub trait Vcvtph2pdMaskzSaeEmitter<A, B> {
10321    fn vcvtph2pd_maskz_sae(&mut self, op0: A, op1: B);
10322}
10323
10324impl<'a> Vcvtph2pdMaskzSaeEmitter<Zmm, Xmm> for Assembler<'a> {
10325    fn vcvtph2pd_maskz_sae(&mut self, op0: Zmm, op1: Xmm) {
10326        self.emit(
10327            VCVTPH2PD512RR_MASKZ_SAE,
10328            op0.as_operand(),
10329            op1.as_operand(),
10330            &NOREG,
10331            &NOREG,
10332        );
10333    }
10334}
10335
10336/// `VCVTPH2PD_SAE`.
10337///
10338/// Supported operand variants:
10339///
10340/// ```text
10341/// +---+----------+
10342/// | # | Operands |
10343/// +---+----------+
10344/// | 1 | Zmm, Xmm |
10345/// +---+----------+
10346/// ```
10347pub trait Vcvtph2pdSaeEmitter<A, B> {
10348    fn vcvtph2pd_sae(&mut self, op0: A, op1: B);
10349}
10350
10351impl<'a> Vcvtph2pdSaeEmitter<Zmm, Xmm> for Assembler<'a> {
10352    fn vcvtph2pd_sae(&mut self, op0: Zmm, op1: Xmm) {
10353        self.emit(
10354            VCVTPH2PD512RR_SAE,
10355            op0.as_operand(),
10356            op1.as_operand(),
10357            &NOREG,
10358            &NOREG,
10359        );
10360    }
10361}
10362
10363/// `VCVTPH2PSX`.
10364///
10365/// Supported operand variants:
10366///
10367/// ```text
10368/// +---+----------+
10369/// | # | Operands |
10370/// +---+----------+
10371/// | 1 | Xmm, Mem |
10372/// | 2 | Xmm, Xmm |
10373/// | 3 | Ymm, Mem |
10374/// | 4 | Ymm, Xmm |
10375/// | 5 | Zmm, Mem |
10376/// | 6 | Zmm, Ymm |
10377/// +---+----------+
10378/// ```
10379pub trait Vcvtph2psxEmitter<A, B> {
10380    fn vcvtph2psx(&mut self, op0: A, op1: B);
10381}
10382
10383impl<'a> Vcvtph2psxEmitter<Xmm, Xmm> for Assembler<'a> {
10384    fn vcvtph2psx(&mut self, op0: Xmm, op1: Xmm) {
10385        self.emit(
10386            VCVTPH2PSX128RR,
10387            op0.as_operand(),
10388            op1.as_operand(),
10389            &NOREG,
10390            &NOREG,
10391        );
10392    }
10393}
10394
10395impl<'a> Vcvtph2psxEmitter<Xmm, Mem> for Assembler<'a> {
10396    fn vcvtph2psx(&mut self, op0: Xmm, op1: Mem) {
10397        self.emit(
10398            VCVTPH2PSX128RM,
10399            op0.as_operand(),
10400            op1.as_operand(),
10401            &NOREG,
10402            &NOREG,
10403        );
10404    }
10405}
10406
10407impl<'a> Vcvtph2psxEmitter<Ymm, Xmm> for Assembler<'a> {
10408    fn vcvtph2psx(&mut self, op0: Ymm, op1: Xmm) {
10409        self.emit(
10410            VCVTPH2PSX256RR,
10411            op0.as_operand(),
10412            op1.as_operand(),
10413            &NOREG,
10414            &NOREG,
10415        );
10416    }
10417}
10418
10419impl<'a> Vcvtph2psxEmitter<Ymm, Mem> for Assembler<'a> {
10420    fn vcvtph2psx(&mut self, op0: Ymm, op1: Mem) {
10421        self.emit(
10422            VCVTPH2PSX256RM,
10423            op0.as_operand(),
10424            op1.as_operand(),
10425            &NOREG,
10426            &NOREG,
10427        );
10428    }
10429}
10430
10431impl<'a> Vcvtph2psxEmitter<Zmm, Ymm> for Assembler<'a> {
10432    fn vcvtph2psx(&mut self, op0: Zmm, op1: Ymm) {
10433        self.emit(
10434            VCVTPH2PSX512RR,
10435            op0.as_operand(),
10436            op1.as_operand(),
10437            &NOREG,
10438            &NOREG,
10439        );
10440    }
10441}
10442
10443impl<'a> Vcvtph2psxEmitter<Zmm, Mem> for Assembler<'a> {
10444    fn vcvtph2psx(&mut self, op0: Zmm, op1: Mem) {
10445        self.emit(
10446            VCVTPH2PSX512RM,
10447            op0.as_operand(),
10448            op1.as_operand(),
10449            &NOREG,
10450            &NOREG,
10451        );
10452    }
10453}
10454
10455/// `VCVTPH2PSX_MASK`.
10456///
10457/// Supported operand variants:
10458///
10459/// ```text
10460/// +---+----------+
10461/// | # | Operands |
10462/// +---+----------+
10463/// | 1 | Xmm, Mem |
10464/// | 2 | Xmm, Xmm |
10465/// | 3 | Ymm, Mem |
10466/// | 4 | Ymm, Xmm |
10467/// | 5 | Zmm, Mem |
10468/// | 6 | Zmm, Ymm |
10469/// +---+----------+
10470/// ```
10471pub trait Vcvtph2psxMaskEmitter<A, B> {
10472    fn vcvtph2psx_mask(&mut self, op0: A, op1: B);
10473}
10474
10475impl<'a> Vcvtph2psxMaskEmitter<Xmm, Xmm> for Assembler<'a> {
10476    fn vcvtph2psx_mask(&mut self, op0: Xmm, op1: Xmm) {
10477        self.emit(
10478            VCVTPH2PSX128RR_MASK,
10479            op0.as_operand(),
10480            op1.as_operand(),
10481            &NOREG,
10482            &NOREG,
10483        );
10484    }
10485}
10486
10487impl<'a> Vcvtph2psxMaskEmitter<Xmm, Mem> for Assembler<'a> {
10488    fn vcvtph2psx_mask(&mut self, op0: Xmm, op1: Mem) {
10489        self.emit(
10490            VCVTPH2PSX128RM_MASK,
10491            op0.as_operand(),
10492            op1.as_operand(),
10493            &NOREG,
10494            &NOREG,
10495        );
10496    }
10497}
10498
10499impl<'a> Vcvtph2psxMaskEmitter<Ymm, Xmm> for Assembler<'a> {
10500    fn vcvtph2psx_mask(&mut self, op0: Ymm, op1: Xmm) {
10501        self.emit(
10502            VCVTPH2PSX256RR_MASK,
10503            op0.as_operand(),
10504            op1.as_operand(),
10505            &NOREG,
10506            &NOREG,
10507        );
10508    }
10509}
10510
10511impl<'a> Vcvtph2psxMaskEmitter<Ymm, Mem> for Assembler<'a> {
10512    fn vcvtph2psx_mask(&mut self, op0: Ymm, op1: Mem) {
10513        self.emit(
10514            VCVTPH2PSX256RM_MASK,
10515            op0.as_operand(),
10516            op1.as_operand(),
10517            &NOREG,
10518            &NOREG,
10519        );
10520    }
10521}
10522
10523impl<'a> Vcvtph2psxMaskEmitter<Zmm, Ymm> for Assembler<'a> {
10524    fn vcvtph2psx_mask(&mut self, op0: Zmm, op1: Ymm) {
10525        self.emit(
10526            VCVTPH2PSX512RR_MASK,
10527            op0.as_operand(),
10528            op1.as_operand(),
10529            &NOREG,
10530            &NOREG,
10531        );
10532    }
10533}
10534
10535impl<'a> Vcvtph2psxMaskEmitter<Zmm, Mem> for Assembler<'a> {
10536    fn vcvtph2psx_mask(&mut self, op0: Zmm, op1: Mem) {
10537        self.emit(
10538            VCVTPH2PSX512RM_MASK,
10539            op0.as_operand(),
10540            op1.as_operand(),
10541            &NOREG,
10542            &NOREG,
10543        );
10544    }
10545}
10546
10547/// `VCVTPH2PSX_MASK_SAE`.
10548///
10549/// Supported operand variants:
10550///
10551/// ```text
10552/// +---+----------+
10553/// | # | Operands |
10554/// +---+----------+
10555/// | 1 | Zmm, Ymm |
10556/// +---+----------+
10557/// ```
10558pub trait Vcvtph2psxMaskSaeEmitter<A, B> {
10559    fn vcvtph2psx_mask_sae(&mut self, op0: A, op1: B);
10560}
10561
10562impl<'a> Vcvtph2psxMaskSaeEmitter<Zmm, Ymm> for Assembler<'a> {
10563    fn vcvtph2psx_mask_sae(&mut self, op0: Zmm, op1: Ymm) {
10564        self.emit(
10565            VCVTPH2PSX512RR_MASK_SAE,
10566            op0.as_operand(),
10567            op1.as_operand(),
10568            &NOREG,
10569            &NOREG,
10570        );
10571    }
10572}
10573
10574/// `VCVTPH2PSX_MASKZ`.
10575///
10576/// Supported operand variants:
10577///
10578/// ```text
10579/// +---+----------+
10580/// | # | Operands |
10581/// +---+----------+
10582/// | 1 | Xmm, Mem |
10583/// | 2 | Xmm, Xmm |
10584/// | 3 | Ymm, Mem |
10585/// | 4 | Ymm, Xmm |
10586/// | 5 | Zmm, Mem |
10587/// | 6 | Zmm, Ymm |
10588/// +---+----------+
10589/// ```
10590pub trait Vcvtph2psxMaskzEmitter<A, B> {
10591    fn vcvtph2psx_maskz(&mut self, op0: A, op1: B);
10592}
10593
10594impl<'a> Vcvtph2psxMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
10595    fn vcvtph2psx_maskz(&mut self, op0: Xmm, op1: Xmm) {
10596        self.emit(
10597            VCVTPH2PSX128RR_MASKZ,
10598            op0.as_operand(),
10599            op1.as_operand(),
10600            &NOREG,
10601            &NOREG,
10602        );
10603    }
10604}
10605
10606impl<'a> Vcvtph2psxMaskzEmitter<Xmm, Mem> for Assembler<'a> {
10607    fn vcvtph2psx_maskz(&mut self, op0: Xmm, op1: Mem) {
10608        self.emit(
10609            VCVTPH2PSX128RM_MASKZ,
10610            op0.as_operand(),
10611            op1.as_operand(),
10612            &NOREG,
10613            &NOREG,
10614        );
10615    }
10616}
10617
10618impl<'a> Vcvtph2psxMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
10619    fn vcvtph2psx_maskz(&mut self, op0: Ymm, op1: Xmm) {
10620        self.emit(
10621            VCVTPH2PSX256RR_MASKZ,
10622            op0.as_operand(),
10623            op1.as_operand(),
10624            &NOREG,
10625            &NOREG,
10626        );
10627    }
10628}
10629
10630impl<'a> Vcvtph2psxMaskzEmitter<Ymm, Mem> for Assembler<'a> {
10631    fn vcvtph2psx_maskz(&mut self, op0: Ymm, op1: Mem) {
10632        self.emit(
10633            VCVTPH2PSX256RM_MASKZ,
10634            op0.as_operand(),
10635            op1.as_operand(),
10636            &NOREG,
10637            &NOREG,
10638        );
10639    }
10640}
10641
10642impl<'a> Vcvtph2psxMaskzEmitter<Zmm, Ymm> for Assembler<'a> {
10643    fn vcvtph2psx_maskz(&mut self, op0: Zmm, op1: Ymm) {
10644        self.emit(
10645            VCVTPH2PSX512RR_MASKZ,
10646            op0.as_operand(),
10647            op1.as_operand(),
10648            &NOREG,
10649            &NOREG,
10650        );
10651    }
10652}
10653
10654impl<'a> Vcvtph2psxMaskzEmitter<Zmm, Mem> for Assembler<'a> {
10655    fn vcvtph2psx_maskz(&mut self, op0: Zmm, op1: Mem) {
10656        self.emit(
10657            VCVTPH2PSX512RM_MASKZ,
10658            op0.as_operand(),
10659            op1.as_operand(),
10660            &NOREG,
10661            &NOREG,
10662        );
10663    }
10664}
10665
10666/// `VCVTPH2PSX_MASKZ_SAE`.
10667///
10668/// Supported operand variants:
10669///
10670/// ```text
10671/// +---+----------+
10672/// | # | Operands |
10673/// +---+----------+
10674/// | 1 | Zmm, Ymm |
10675/// +---+----------+
10676/// ```
10677pub trait Vcvtph2psxMaskzSaeEmitter<A, B> {
10678    fn vcvtph2psx_maskz_sae(&mut self, op0: A, op1: B);
10679}
10680
10681impl<'a> Vcvtph2psxMaskzSaeEmitter<Zmm, Ymm> for Assembler<'a> {
10682    fn vcvtph2psx_maskz_sae(&mut self, op0: Zmm, op1: Ymm) {
10683        self.emit(
10684            VCVTPH2PSX512RR_MASKZ_SAE,
10685            op0.as_operand(),
10686            op1.as_operand(),
10687            &NOREG,
10688            &NOREG,
10689        );
10690    }
10691}
10692
10693/// `VCVTPH2PSX_SAE`.
10694///
10695/// Supported operand variants:
10696///
10697/// ```text
10698/// +---+----------+
10699/// | # | Operands |
10700/// +---+----------+
10701/// | 1 | Zmm, Ymm |
10702/// +---+----------+
10703/// ```
10704pub trait Vcvtph2psxSaeEmitter<A, B> {
10705    fn vcvtph2psx_sae(&mut self, op0: A, op1: B);
10706}
10707
10708impl<'a> Vcvtph2psxSaeEmitter<Zmm, Ymm> for Assembler<'a> {
10709    fn vcvtph2psx_sae(&mut self, op0: Zmm, op1: Ymm) {
10710        self.emit(
10711            VCVTPH2PSX512RR_SAE,
10712            op0.as_operand(),
10713            op1.as_operand(),
10714            &NOREG,
10715            &NOREG,
10716        );
10717    }
10718}
10719
10720/// `VCVTPH2QQ`.
10721///
10722/// Supported operand variants:
10723///
10724/// ```text
10725/// +---+----------+
10726/// | # | Operands |
10727/// +---+----------+
10728/// | 1 | Xmm, Mem |
10729/// | 2 | Xmm, Xmm |
10730/// | 3 | Ymm, Mem |
10731/// | 4 | Ymm, Xmm |
10732/// | 5 | Zmm, Mem |
10733/// | 6 | Zmm, Xmm |
10734/// +---+----------+
10735/// ```
10736pub trait Vcvtph2qqEmitter<A, B> {
10737    fn vcvtph2qq(&mut self, op0: A, op1: B);
10738}
10739
10740impl<'a> Vcvtph2qqEmitter<Xmm, Xmm> for Assembler<'a> {
10741    fn vcvtph2qq(&mut self, op0: Xmm, op1: Xmm) {
10742        self.emit(
10743            VCVTPH2QQ128RR,
10744            op0.as_operand(),
10745            op1.as_operand(),
10746            &NOREG,
10747            &NOREG,
10748        );
10749    }
10750}
10751
10752impl<'a> Vcvtph2qqEmitter<Xmm, Mem> for Assembler<'a> {
10753    fn vcvtph2qq(&mut self, op0: Xmm, op1: Mem) {
10754        self.emit(
10755            VCVTPH2QQ128RM,
10756            op0.as_operand(),
10757            op1.as_operand(),
10758            &NOREG,
10759            &NOREG,
10760        );
10761    }
10762}
10763
10764impl<'a> Vcvtph2qqEmitter<Ymm, Xmm> for Assembler<'a> {
10765    fn vcvtph2qq(&mut self, op0: Ymm, op1: Xmm) {
10766        self.emit(
10767            VCVTPH2QQ256RR,
10768            op0.as_operand(),
10769            op1.as_operand(),
10770            &NOREG,
10771            &NOREG,
10772        );
10773    }
10774}
10775
10776impl<'a> Vcvtph2qqEmitter<Ymm, Mem> for Assembler<'a> {
10777    fn vcvtph2qq(&mut self, op0: Ymm, op1: Mem) {
10778        self.emit(
10779            VCVTPH2QQ256RM,
10780            op0.as_operand(),
10781            op1.as_operand(),
10782            &NOREG,
10783            &NOREG,
10784        );
10785    }
10786}
10787
10788impl<'a> Vcvtph2qqEmitter<Zmm, Xmm> for Assembler<'a> {
10789    fn vcvtph2qq(&mut self, op0: Zmm, op1: Xmm) {
10790        self.emit(
10791            VCVTPH2QQ512RR,
10792            op0.as_operand(),
10793            op1.as_operand(),
10794            &NOREG,
10795            &NOREG,
10796        );
10797    }
10798}
10799
10800impl<'a> Vcvtph2qqEmitter<Zmm, Mem> for Assembler<'a> {
10801    fn vcvtph2qq(&mut self, op0: Zmm, op1: Mem) {
10802        self.emit(
10803            VCVTPH2QQ512RM,
10804            op0.as_operand(),
10805            op1.as_operand(),
10806            &NOREG,
10807            &NOREG,
10808        );
10809    }
10810}
10811
10812/// `VCVTPH2QQ_ER`.
10813///
10814/// Supported operand variants:
10815///
10816/// ```text
10817/// +---+----------+
10818/// | # | Operands |
10819/// +---+----------+
10820/// | 1 | Zmm, Xmm |
10821/// +---+----------+
10822/// ```
10823pub trait Vcvtph2qqErEmitter<A, B> {
10824    fn vcvtph2qq_er(&mut self, op0: A, op1: B);
10825}
10826
10827impl<'a> Vcvtph2qqErEmitter<Zmm, Xmm> for Assembler<'a> {
10828    fn vcvtph2qq_er(&mut self, op0: Zmm, op1: Xmm) {
10829        self.emit(
10830            VCVTPH2QQ512RR_ER,
10831            op0.as_operand(),
10832            op1.as_operand(),
10833            &NOREG,
10834            &NOREG,
10835        );
10836    }
10837}
10838
10839/// `VCVTPH2QQ_MASK`.
10840///
10841/// Supported operand variants:
10842///
10843/// ```text
10844/// +---+----------+
10845/// | # | Operands |
10846/// +---+----------+
10847/// | 1 | Xmm, Mem |
10848/// | 2 | Xmm, Xmm |
10849/// | 3 | Ymm, Mem |
10850/// | 4 | Ymm, Xmm |
10851/// | 5 | Zmm, Mem |
10852/// | 6 | Zmm, Xmm |
10853/// +---+----------+
10854/// ```
10855pub trait Vcvtph2qqMaskEmitter<A, B> {
10856    fn vcvtph2qq_mask(&mut self, op0: A, op1: B);
10857}
10858
10859impl<'a> Vcvtph2qqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
10860    fn vcvtph2qq_mask(&mut self, op0: Xmm, op1: Xmm) {
10861        self.emit(
10862            VCVTPH2QQ128RR_MASK,
10863            op0.as_operand(),
10864            op1.as_operand(),
10865            &NOREG,
10866            &NOREG,
10867        );
10868    }
10869}
10870
10871impl<'a> Vcvtph2qqMaskEmitter<Xmm, Mem> for Assembler<'a> {
10872    fn vcvtph2qq_mask(&mut self, op0: Xmm, op1: Mem) {
10873        self.emit(
10874            VCVTPH2QQ128RM_MASK,
10875            op0.as_operand(),
10876            op1.as_operand(),
10877            &NOREG,
10878            &NOREG,
10879        );
10880    }
10881}
10882
10883impl<'a> Vcvtph2qqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
10884    fn vcvtph2qq_mask(&mut self, op0: Ymm, op1: Xmm) {
10885        self.emit(
10886            VCVTPH2QQ256RR_MASK,
10887            op0.as_operand(),
10888            op1.as_operand(),
10889            &NOREG,
10890            &NOREG,
10891        );
10892    }
10893}
10894
10895impl<'a> Vcvtph2qqMaskEmitter<Ymm, Mem> for Assembler<'a> {
10896    fn vcvtph2qq_mask(&mut self, op0: Ymm, op1: Mem) {
10897        self.emit(
10898            VCVTPH2QQ256RM_MASK,
10899            op0.as_operand(),
10900            op1.as_operand(),
10901            &NOREG,
10902            &NOREG,
10903        );
10904    }
10905}
10906
10907impl<'a> Vcvtph2qqMaskEmitter<Zmm, Xmm> for Assembler<'a> {
10908    fn vcvtph2qq_mask(&mut self, op0: Zmm, op1: Xmm) {
10909        self.emit(
10910            VCVTPH2QQ512RR_MASK,
10911            op0.as_operand(),
10912            op1.as_operand(),
10913            &NOREG,
10914            &NOREG,
10915        );
10916    }
10917}
10918
10919impl<'a> Vcvtph2qqMaskEmitter<Zmm, Mem> for Assembler<'a> {
10920    fn vcvtph2qq_mask(&mut self, op0: Zmm, op1: Mem) {
10921        self.emit(
10922            VCVTPH2QQ512RM_MASK,
10923            op0.as_operand(),
10924            op1.as_operand(),
10925            &NOREG,
10926            &NOREG,
10927        );
10928    }
10929}
10930
10931/// `VCVTPH2QQ_MASK_ER`.
10932///
10933/// Supported operand variants:
10934///
10935/// ```text
10936/// +---+----------+
10937/// | # | Operands |
10938/// +---+----------+
10939/// | 1 | Zmm, Xmm |
10940/// +---+----------+
10941/// ```
10942pub trait Vcvtph2qqMaskErEmitter<A, B> {
10943    fn vcvtph2qq_mask_er(&mut self, op0: A, op1: B);
10944}
10945
10946impl<'a> Vcvtph2qqMaskErEmitter<Zmm, Xmm> for Assembler<'a> {
10947    fn vcvtph2qq_mask_er(&mut self, op0: Zmm, op1: Xmm) {
10948        self.emit(
10949            VCVTPH2QQ512RR_MASK_ER,
10950            op0.as_operand(),
10951            op1.as_operand(),
10952            &NOREG,
10953            &NOREG,
10954        );
10955    }
10956}
10957
10958/// `VCVTPH2QQ_MASKZ`.
10959///
10960/// Supported operand variants:
10961///
10962/// ```text
10963/// +---+----------+
10964/// | # | Operands |
10965/// +---+----------+
10966/// | 1 | Xmm, Mem |
10967/// | 2 | Xmm, Xmm |
10968/// | 3 | Ymm, Mem |
10969/// | 4 | Ymm, Xmm |
10970/// | 5 | Zmm, Mem |
10971/// | 6 | Zmm, Xmm |
10972/// +---+----------+
10973/// ```
10974pub trait Vcvtph2qqMaskzEmitter<A, B> {
10975    fn vcvtph2qq_maskz(&mut self, op0: A, op1: B);
10976}
10977
10978impl<'a> Vcvtph2qqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
10979    fn vcvtph2qq_maskz(&mut self, op0: Xmm, op1: Xmm) {
10980        self.emit(
10981            VCVTPH2QQ128RR_MASKZ,
10982            op0.as_operand(),
10983            op1.as_operand(),
10984            &NOREG,
10985            &NOREG,
10986        );
10987    }
10988}
10989
10990impl<'a> Vcvtph2qqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
10991    fn vcvtph2qq_maskz(&mut self, op0: Xmm, op1: Mem) {
10992        self.emit(
10993            VCVTPH2QQ128RM_MASKZ,
10994            op0.as_operand(),
10995            op1.as_operand(),
10996            &NOREG,
10997            &NOREG,
10998        );
10999    }
11000}
11001
11002impl<'a> Vcvtph2qqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
11003    fn vcvtph2qq_maskz(&mut self, op0: Ymm, op1: Xmm) {
11004        self.emit(
11005            VCVTPH2QQ256RR_MASKZ,
11006            op0.as_operand(),
11007            op1.as_operand(),
11008            &NOREG,
11009            &NOREG,
11010        );
11011    }
11012}
11013
11014impl<'a> Vcvtph2qqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
11015    fn vcvtph2qq_maskz(&mut self, op0: Ymm, op1: Mem) {
11016        self.emit(
11017            VCVTPH2QQ256RM_MASKZ,
11018            op0.as_operand(),
11019            op1.as_operand(),
11020            &NOREG,
11021            &NOREG,
11022        );
11023    }
11024}
11025
11026impl<'a> Vcvtph2qqMaskzEmitter<Zmm, Xmm> for Assembler<'a> {
11027    fn vcvtph2qq_maskz(&mut self, op0: Zmm, op1: Xmm) {
11028        self.emit(
11029            VCVTPH2QQ512RR_MASKZ,
11030            op0.as_operand(),
11031            op1.as_operand(),
11032            &NOREG,
11033            &NOREG,
11034        );
11035    }
11036}
11037
11038impl<'a> Vcvtph2qqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
11039    fn vcvtph2qq_maskz(&mut self, op0: Zmm, op1: Mem) {
11040        self.emit(
11041            VCVTPH2QQ512RM_MASKZ,
11042            op0.as_operand(),
11043            op1.as_operand(),
11044            &NOREG,
11045            &NOREG,
11046        );
11047    }
11048}
11049
11050/// `VCVTPH2QQ_MASKZ_ER`.
11051///
11052/// Supported operand variants:
11053///
11054/// ```text
11055/// +---+----------+
11056/// | # | Operands |
11057/// +---+----------+
11058/// | 1 | Zmm, Xmm |
11059/// +---+----------+
11060/// ```
11061pub trait Vcvtph2qqMaskzErEmitter<A, B> {
11062    fn vcvtph2qq_maskz_er(&mut self, op0: A, op1: B);
11063}
11064
11065impl<'a> Vcvtph2qqMaskzErEmitter<Zmm, Xmm> for Assembler<'a> {
11066    fn vcvtph2qq_maskz_er(&mut self, op0: Zmm, op1: Xmm) {
11067        self.emit(
11068            VCVTPH2QQ512RR_MASKZ_ER,
11069            op0.as_operand(),
11070            op1.as_operand(),
11071            &NOREG,
11072            &NOREG,
11073        );
11074    }
11075}
11076
11077/// `VCVTPH2UDQ`.
11078///
11079/// Supported operand variants:
11080///
11081/// ```text
11082/// +---+----------+
11083/// | # | Operands |
11084/// +---+----------+
11085/// | 1 | Xmm, Mem |
11086/// | 2 | Xmm, Xmm |
11087/// | 3 | Ymm, Mem |
11088/// | 4 | Ymm, Xmm |
11089/// | 5 | Zmm, Mem |
11090/// | 6 | Zmm, Ymm |
11091/// +---+----------+
11092/// ```
11093pub trait Vcvtph2udqEmitter<A, B> {
11094    fn vcvtph2udq(&mut self, op0: A, op1: B);
11095}
11096
11097impl<'a> Vcvtph2udqEmitter<Xmm, Xmm> for Assembler<'a> {
11098    fn vcvtph2udq(&mut self, op0: Xmm, op1: Xmm) {
11099        self.emit(
11100            VCVTPH2UDQ128RR,
11101            op0.as_operand(),
11102            op1.as_operand(),
11103            &NOREG,
11104            &NOREG,
11105        );
11106    }
11107}
11108
11109impl<'a> Vcvtph2udqEmitter<Xmm, Mem> for Assembler<'a> {
11110    fn vcvtph2udq(&mut self, op0: Xmm, op1: Mem) {
11111        self.emit(
11112            VCVTPH2UDQ128RM,
11113            op0.as_operand(),
11114            op1.as_operand(),
11115            &NOREG,
11116            &NOREG,
11117        );
11118    }
11119}
11120
11121impl<'a> Vcvtph2udqEmitter<Ymm, Xmm> for Assembler<'a> {
11122    fn vcvtph2udq(&mut self, op0: Ymm, op1: Xmm) {
11123        self.emit(
11124            VCVTPH2UDQ256RR,
11125            op0.as_operand(),
11126            op1.as_operand(),
11127            &NOREG,
11128            &NOREG,
11129        );
11130    }
11131}
11132
11133impl<'a> Vcvtph2udqEmitter<Ymm, Mem> for Assembler<'a> {
11134    fn vcvtph2udq(&mut self, op0: Ymm, op1: Mem) {
11135        self.emit(
11136            VCVTPH2UDQ256RM,
11137            op0.as_operand(),
11138            op1.as_operand(),
11139            &NOREG,
11140            &NOREG,
11141        );
11142    }
11143}
11144
11145impl<'a> Vcvtph2udqEmitter<Zmm, Ymm> for Assembler<'a> {
11146    fn vcvtph2udq(&mut self, op0: Zmm, op1: Ymm) {
11147        self.emit(
11148            VCVTPH2UDQ512RR,
11149            op0.as_operand(),
11150            op1.as_operand(),
11151            &NOREG,
11152            &NOREG,
11153        );
11154    }
11155}
11156
11157impl<'a> Vcvtph2udqEmitter<Zmm, Mem> for Assembler<'a> {
11158    fn vcvtph2udq(&mut self, op0: Zmm, op1: Mem) {
11159        self.emit(
11160            VCVTPH2UDQ512RM,
11161            op0.as_operand(),
11162            op1.as_operand(),
11163            &NOREG,
11164            &NOREG,
11165        );
11166    }
11167}
11168
11169/// `VCVTPH2UDQ_ER`.
11170///
11171/// Supported operand variants:
11172///
11173/// ```text
11174/// +---+----------+
11175/// | # | Operands |
11176/// +---+----------+
11177/// | 1 | Zmm, Ymm |
11178/// +---+----------+
11179/// ```
11180pub trait Vcvtph2udqErEmitter<A, B> {
11181    fn vcvtph2udq_er(&mut self, op0: A, op1: B);
11182}
11183
11184impl<'a> Vcvtph2udqErEmitter<Zmm, Ymm> for Assembler<'a> {
11185    fn vcvtph2udq_er(&mut self, op0: Zmm, op1: Ymm) {
11186        self.emit(
11187            VCVTPH2UDQ512RR_ER,
11188            op0.as_operand(),
11189            op1.as_operand(),
11190            &NOREG,
11191            &NOREG,
11192        );
11193    }
11194}
11195
11196/// `VCVTPH2UDQ_MASK`.
11197///
11198/// Supported operand variants:
11199///
11200/// ```text
11201/// +---+----------+
11202/// | # | Operands |
11203/// +---+----------+
11204/// | 1 | Xmm, Mem |
11205/// | 2 | Xmm, Xmm |
11206/// | 3 | Ymm, Mem |
11207/// | 4 | Ymm, Xmm |
11208/// | 5 | Zmm, Mem |
11209/// | 6 | Zmm, Ymm |
11210/// +---+----------+
11211/// ```
11212pub trait Vcvtph2udqMaskEmitter<A, B> {
11213    fn vcvtph2udq_mask(&mut self, op0: A, op1: B);
11214}
11215
11216impl<'a> Vcvtph2udqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
11217    fn vcvtph2udq_mask(&mut self, op0: Xmm, op1: Xmm) {
11218        self.emit(
11219            VCVTPH2UDQ128RR_MASK,
11220            op0.as_operand(),
11221            op1.as_operand(),
11222            &NOREG,
11223            &NOREG,
11224        );
11225    }
11226}
11227
11228impl<'a> Vcvtph2udqMaskEmitter<Xmm, Mem> for Assembler<'a> {
11229    fn vcvtph2udq_mask(&mut self, op0: Xmm, op1: Mem) {
11230        self.emit(
11231            VCVTPH2UDQ128RM_MASK,
11232            op0.as_operand(),
11233            op1.as_operand(),
11234            &NOREG,
11235            &NOREG,
11236        );
11237    }
11238}
11239
11240impl<'a> Vcvtph2udqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
11241    fn vcvtph2udq_mask(&mut self, op0: Ymm, op1: Xmm) {
11242        self.emit(
11243            VCVTPH2UDQ256RR_MASK,
11244            op0.as_operand(),
11245            op1.as_operand(),
11246            &NOREG,
11247            &NOREG,
11248        );
11249    }
11250}
11251
11252impl<'a> Vcvtph2udqMaskEmitter<Ymm, Mem> for Assembler<'a> {
11253    fn vcvtph2udq_mask(&mut self, op0: Ymm, op1: Mem) {
11254        self.emit(
11255            VCVTPH2UDQ256RM_MASK,
11256            op0.as_operand(),
11257            op1.as_operand(),
11258            &NOREG,
11259            &NOREG,
11260        );
11261    }
11262}
11263
11264impl<'a> Vcvtph2udqMaskEmitter<Zmm, Ymm> for Assembler<'a> {
11265    fn vcvtph2udq_mask(&mut self, op0: Zmm, op1: Ymm) {
11266        self.emit(
11267            VCVTPH2UDQ512RR_MASK,
11268            op0.as_operand(),
11269            op1.as_operand(),
11270            &NOREG,
11271            &NOREG,
11272        );
11273    }
11274}
11275
11276impl<'a> Vcvtph2udqMaskEmitter<Zmm, Mem> for Assembler<'a> {
11277    fn vcvtph2udq_mask(&mut self, op0: Zmm, op1: Mem) {
11278        self.emit(
11279            VCVTPH2UDQ512RM_MASK,
11280            op0.as_operand(),
11281            op1.as_operand(),
11282            &NOREG,
11283            &NOREG,
11284        );
11285    }
11286}
11287
11288/// `VCVTPH2UDQ_MASK_ER`.
11289///
11290/// Supported operand variants:
11291///
11292/// ```text
11293/// +---+----------+
11294/// | # | Operands |
11295/// +---+----------+
11296/// | 1 | Zmm, Ymm |
11297/// +---+----------+
11298/// ```
11299pub trait Vcvtph2udqMaskErEmitter<A, B> {
11300    fn vcvtph2udq_mask_er(&mut self, op0: A, op1: B);
11301}
11302
11303impl<'a> Vcvtph2udqMaskErEmitter<Zmm, Ymm> for Assembler<'a> {
11304    fn vcvtph2udq_mask_er(&mut self, op0: Zmm, op1: Ymm) {
11305        self.emit(
11306            VCVTPH2UDQ512RR_MASK_ER,
11307            op0.as_operand(),
11308            op1.as_operand(),
11309            &NOREG,
11310            &NOREG,
11311        );
11312    }
11313}
11314
11315/// `VCVTPH2UDQ_MASKZ`.
11316///
11317/// Supported operand variants:
11318///
11319/// ```text
11320/// +---+----------+
11321/// | # | Operands |
11322/// +---+----------+
11323/// | 1 | Xmm, Mem |
11324/// | 2 | Xmm, Xmm |
11325/// | 3 | Ymm, Mem |
11326/// | 4 | Ymm, Xmm |
11327/// | 5 | Zmm, Mem |
11328/// | 6 | Zmm, Ymm |
11329/// +---+----------+
11330/// ```
11331pub trait Vcvtph2udqMaskzEmitter<A, B> {
11332    fn vcvtph2udq_maskz(&mut self, op0: A, op1: B);
11333}
11334
11335impl<'a> Vcvtph2udqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
11336    fn vcvtph2udq_maskz(&mut self, op0: Xmm, op1: Xmm) {
11337        self.emit(
11338            VCVTPH2UDQ128RR_MASKZ,
11339            op0.as_operand(),
11340            op1.as_operand(),
11341            &NOREG,
11342            &NOREG,
11343        );
11344    }
11345}
11346
11347impl<'a> Vcvtph2udqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
11348    fn vcvtph2udq_maskz(&mut self, op0: Xmm, op1: Mem) {
11349        self.emit(
11350            VCVTPH2UDQ128RM_MASKZ,
11351            op0.as_operand(),
11352            op1.as_operand(),
11353            &NOREG,
11354            &NOREG,
11355        );
11356    }
11357}
11358
11359impl<'a> Vcvtph2udqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
11360    fn vcvtph2udq_maskz(&mut self, op0: Ymm, op1: Xmm) {
11361        self.emit(
11362            VCVTPH2UDQ256RR_MASKZ,
11363            op0.as_operand(),
11364            op1.as_operand(),
11365            &NOREG,
11366            &NOREG,
11367        );
11368    }
11369}
11370
11371impl<'a> Vcvtph2udqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
11372    fn vcvtph2udq_maskz(&mut self, op0: Ymm, op1: Mem) {
11373        self.emit(
11374            VCVTPH2UDQ256RM_MASKZ,
11375            op0.as_operand(),
11376            op1.as_operand(),
11377            &NOREG,
11378            &NOREG,
11379        );
11380    }
11381}
11382
11383impl<'a> Vcvtph2udqMaskzEmitter<Zmm, Ymm> for Assembler<'a> {
11384    fn vcvtph2udq_maskz(&mut self, op0: Zmm, op1: Ymm) {
11385        self.emit(
11386            VCVTPH2UDQ512RR_MASKZ,
11387            op0.as_operand(),
11388            op1.as_operand(),
11389            &NOREG,
11390            &NOREG,
11391        );
11392    }
11393}
11394
11395impl<'a> Vcvtph2udqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
11396    fn vcvtph2udq_maskz(&mut self, op0: Zmm, op1: Mem) {
11397        self.emit(
11398            VCVTPH2UDQ512RM_MASKZ,
11399            op0.as_operand(),
11400            op1.as_operand(),
11401            &NOREG,
11402            &NOREG,
11403        );
11404    }
11405}
11406
11407/// `VCVTPH2UDQ_MASKZ_ER`.
11408///
11409/// Supported operand variants:
11410///
11411/// ```text
11412/// +---+----------+
11413/// | # | Operands |
11414/// +---+----------+
11415/// | 1 | Zmm, Ymm |
11416/// +---+----------+
11417/// ```
11418pub trait Vcvtph2udqMaskzErEmitter<A, B> {
11419    fn vcvtph2udq_maskz_er(&mut self, op0: A, op1: B);
11420}
11421
11422impl<'a> Vcvtph2udqMaskzErEmitter<Zmm, Ymm> for Assembler<'a> {
11423    fn vcvtph2udq_maskz_er(&mut self, op0: Zmm, op1: Ymm) {
11424        self.emit(
11425            VCVTPH2UDQ512RR_MASKZ_ER,
11426            op0.as_operand(),
11427            op1.as_operand(),
11428            &NOREG,
11429            &NOREG,
11430        );
11431    }
11432}
11433
11434/// `VCVTPH2UQQ`.
11435///
11436/// Supported operand variants:
11437///
11438/// ```text
11439/// +---+----------+
11440/// | # | Operands |
11441/// +---+----------+
11442/// | 1 | Xmm, Mem |
11443/// | 2 | Xmm, Xmm |
11444/// | 3 | Ymm, Mem |
11445/// | 4 | Ymm, Xmm |
11446/// | 5 | Zmm, Mem |
11447/// | 6 | Zmm, Xmm |
11448/// +---+----------+
11449/// ```
11450pub trait Vcvtph2uqqEmitter<A, B> {
11451    fn vcvtph2uqq(&mut self, op0: A, op1: B);
11452}
11453
11454impl<'a> Vcvtph2uqqEmitter<Xmm, Xmm> for Assembler<'a> {
11455    fn vcvtph2uqq(&mut self, op0: Xmm, op1: Xmm) {
11456        self.emit(
11457            VCVTPH2UQQ128RR,
11458            op0.as_operand(),
11459            op1.as_operand(),
11460            &NOREG,
11461            &NOREG,
11462        );
11463    }
11464}
11465
11466impl<'a> Vcvtph2uqqEmitter<Xmm, Mem> for Assembler<'a> {
11467    fn vcvtph2uqq(&mut self, op0: Xmm, op1: Mem) {
11468        self.emit(
11469            VCVTPH2UQQ128RM,
11470            op0.as_operand(),
11471            op1.as_operand(),
11472            &NOREG,
11473            &NOREG,
11474        );
11475    }
11476}
11477
11478impl<'a> Vcvtph2uqqEmitter<Ymm, Xmm> for Assembler<'a> {
11479    fn vcvtph2uqq(&mut self, op0: Ymm, op1: Xmm) {
11480        self.emit(
11481            VCVTPH2UQQ256RR,
11482            op0.as_operand(),
11483            op1.as_operand(),
11484            &NOREG,
11485            &NOREG,
11486        );
11487    }
11488}
11489
11490impl<'a> Vcvtph2uqqEmitter<Ymm, Mem> for Assembler<'a> {
11491    fn vcvtph2uqq(&mut self, op0: Ymm, op1: Mem) {
11492        self.emit(
11493            VCVTPH2UQQ256RM,
11494            op0.as_operand(),
11495            op1.as_operand(),
11496            &NOREG,
11497            &NOREG,
11498        );
11499    }
11500}
11501
11502impl<'a> Vcvtph2uqqEmitter<Zmm, Xmm> for Assembler<'a> {
11503    fn vcvtph2uqq(&mut self, op0: Zmm, op1: Xmm) {
11504        self.emit(
11505            VCVTPH2UQQ512RR,
11506            op0.as_operand(),
11507            op1.as_operand(),
11508            &NOREG,
11509            &NOREG,
11510        );
11511    }
11512}
11513
11514impl<'a> Vcvtph2uqqEmitter<Zmm, Mem> for Assembler<'a> {
11515    fn vcvtph2uqq(&mut self, op0: Zmm, op1: Mem) {
11516        self.emit(
11517            VCVTPH2UQQ512RM,
11518            op0.as_operand(),
11519            op1.as_operand(),
11520            &NOREG,
11521            &NOREG,
11522        );
11523    }
11524}
11525
11526/// `VCVTPH2UQQ_ER`.
11527///
11528/// Supported operand variants:
11529///
11530/// ```text
11531/// +---+----------+
11532/// | # | Operands |
11533/// +---+----------+
11534/// | 1 | Zmm, Xmm |
11535/// +---+----------+
11536/// ```
11537pub trait Vcvtph2uqqErEmitter<A, B> {
11538    fn vcvtph2uqq_er(&mut self, op0: A, op1: B);
11539}
11540
11541impl<'a> Vcvtph2uqqErEmitter<Zmm, Xmm> for Assembler<'a> {
11542    fn vcvtph2uqq_er(&mut self, op0: Zmm, op1: Xmm) {
11543        self.emit(
11544            VCVTPH2UQQ512RR_ER,
11545            op0.as_operand(),
11546            op1.as_operand(),
11547            &NOREG,
11548            &NOREG,
11549        );
11550    }
11551}
11552
11553/// `VCVTPH2UQQ_MASK`.
11554///
11555/// Supported operand variants:
11556///
11557/// ```text
11558/// +---+----------+
11559/// | # | Operands |
11560/// +---+----------+
11561/// | 1 | Xmm, Mem |
11562/// | 2 | Xmm, Xmm |
11563/// | 3 | Ymm, Mem |
11564/// | 4 | Ymm, Xmm |
11565/// | 5 | Zmm, Mem |
11566/// | 6 | Zmm, Xmm |
11567/// +---+----------+
11568/// ```
11569pub trait Vcvtph2uqqMaskEmitter<A, B> {
11570    fn vcvtph2uqq_mask(&mut self, op0: A, op1: B);
11571}
11572
11573impl<'a> Vcvtph2uqqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
11574    fn vcvtph2uqq_mask(&mut self, op0: Xmm, op1: Xmm) {
11575        self.emit(
11576            VCVTPH2UQQ128RR_MASK,
11577            op0.as_operand(),
11578            op1.as_operand(),
11579            &NOREG,
11580            &NOREG,
11581        );
11582    }
11583}
11584
11585impl<'a> Vcvtph2uqqMaskEmitter<Xmm, Mem> for Assembler<'a> {
11586    fn vcvtph2uqq_mask(&mut self, op0: Xmm, op1: Mem) {
11587        self.emit(
11588            VCVTPH2UQQ128RM_MASK,
11589            op0.as_operand(),
11590            op1.as_operand(),
11591            &NOREG,
11592            &NOREG,
11593        );
11594    }
11595}
11596
11597impl<'a> Vcvtph2uqqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
11598    fn vcvtph2uqq_mask(&mut self, op0: Ymm, op1: Xmm) {
11599        self.emit(
11600            VCVTPH2UQQ256RR_MASK,
11601            op0.as_operand(),
11602            op1.as_operand(),
11603            &NOREG,
11604            &NOREG,
11605        );
11606    }
11607}
11608
11609impl<'a> Vcvtph2uqqMaskEmitter<Ymm, Mem> for Assembler<'a> {
11610    fn vcvtph2uqq_mask(&mut self, op0: Ymm, op1: Mem) {
11611        self.emit(
11612            VCVTPH2UQQ256RM_MASK,
11613            op0.as_operand(),
11614            op1.as_operand(),
11615            &NOREG,
11616            &NOREG,
11617        );
11618    }
11619}
11620
11621impl<'a> Vcvtph2uqqMaskEmitter<Zmm, Xmm> for Assembler<'a> {
11622    fn vcvtph2uqq_mask(&mut self, op0: Zmm, op1: Xmm) {
11623        self.emit(
11624            VCVTPH2UQQ512RR_MASK,
11625            op0.as_operand(),
11626            op1.as_operand(),
11627            &NOREG,
11628            &NOREG,
11629        );
11630    }
11631}
11632
11633impl<'a> Vcvtph2uqqMaskEmitter<Zmm, Mem> for Assembler<'a> {
11634    fn vcvtph2uqq_mask(&mut self, op0: Zmm, op1: Mem) {
11635        self.emit(
11636            VCVTPH2UQQ512RM_MASK,
11637            op0.as_operand(),
11638            op1.as_operand(),
11639            &NOREG,
11640            &NOREG,
11641        );
11642    }
11643}
11644
11645/// `VCVTPH2UQQ_MASK_ER`.
11646///
11647/// Supported operand variants:
11648///
11649/// ```text
11650/// +---+----------+
11651/// | # | Operands |
11652/// +---+----------+
11653/// | 1 | Zmm, Xmm |
11654/// +---+----------+
11655/// ```
11656pub trait Vcvtph2uqqMaskErEmitter<A, B> {
11657    fn vcvtph2uqq_mask_er(&mut self, op0: A, op1: B);
11658}
11659
11660impl<'a> Vcvtph2uqqMaskErEmitter<Zmm, Xmm> for Assembler<'a> {
11661    fn vcvtph2uqq_mask_er(&mut self, op0: Zmm, op1: Xmm) {
11662        self.emit(
11663            VCVTPH2UQQ512RR_MASK_ER,
11664            op0.as_operand(),
11665            op1.as_operand(),
11666            &NOREG,
11667            &NOREG,
11668        );
11669    }
11670}
11671
11672/// `VCVTPH2UQQ_MASKZ`.
11673///
11674/// Supported operand variants:
11675///
11676/// ```text
11677/// +---+----------+
11678/// | # | Operands |
11679/// +---+----------+
11680/// | 1 | Xmm, Mem |
11681/// | 2 | Xmm, Xmm |
11682/// | 3 | Ymm, Mem |
11683/// | 4 | Ymm, Xmm |
11684/// | 5 | Zmm, Mem |
11685/// | 6 | Zmm, Xmm |
11686/// +---+----------+
11687/// ```
11688pub trait Vcvtph2uqqMaskzEmitter<A, B> {
11689    fn vcvtph2uqq_maskz(&mut self, op0: A, op1: B);
11690}
11691
11692impl<'a> Vcvtph2uqqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
11693    fn vcvtph2uqq_maskz(&mut self, op0: Xmm, op1: Xmm) {
11694        self.emit(
11695            VCVTPH2UQQ128RR_MASKZ,
11696            op0.as_operand(),
11697            op1.as_operand(),
11698            &NOREG,
11699            &NOREG,
11700        );
11701    }
11702}
11703
11704impl<'a> Vcvtph2uqqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
11705    fn vcvtph2uqq_maskz(&mut self, op0: Xmm, op1: Mem) {
11706        self.emit(
11707            VCVTPH2UQQ128RM_MASKZ,
11708            op0.as_operand(),
11709            op1.as_operand(),
11710            &NOREG,
11711            &NOREG,
11712        );
11713    }
11714}
11715
11716impl<'a> Vcvtph2uqqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
11717    fn vcvtph2uqq_maskz(&mut self, op0: Ymm, op1: Xmm) {
11718        self.emit(
11719            VCVTPH2UQQ256RR_MASKZ,
11720            op0.as_operand(),
11721            op1.as_operand(),
11722            &NOREG,
11723            &NOREG,
11724        );
11725    }
11726}
11727
11728impl<'a> Vcvtph2uqqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
11729    fn vcvtph2uqq_maskz(&mut self, op0: Ymm, op1: Mem) {
11730        self.emit(
11731            VCVTPH2UQQ256RM_MASKZ,
11732            op0.as_operand(),
11733            op1.as_operand(),
11734            &NOREG,
11735            &NOREG,
11736        );
11737    }
11738}
11739
11740impl<'a> Vcvtph2uqqMaskzEmitter<Zmm, Xmm> for Assembler<'a> {
11741    fn vcvtph2uqq_maskz(&mut self, op0: Zmm, op1: Xmm) {
11742        self.emit(
11743            VCVTPH2UQQ512RR_MASKZ,
11744            op0.as_operand(),
11745            op1.as_operand(),
11746            &NOREG,
11747            &NOREG,
11748        );
11749    }
11750}
11751
11752impl<'a> Vcvtph2uqqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
11753    fn vcvtph2uqq_maskz(&mut self, op0: Zmm, op1: Mem) {
11754        self.emit(
11755            VCVTPH2UQQ512RM_MASKZ,
11756            op0.as_operand(),
11757            op1.as_operand(),
11758            &NOREG,
11759            &NOREG,
11760        );
11761    }
11762}
11763
11764/// `VCVTPH2UQQ_MASKZ_ER`.
11765///
11766/// Supported operand variants:
11767///
11768/// ```text
11769/// +---+----------+
11770/// | # | Operands |
11771/// +---+----------+
11772/// | 1 | Zmm, Xmm |
11773/// +---+----------+
11774/// ```
11775pub trait Vcvtph2uqqMaskzErEmitter<A, B> {
11776    fn vcvtph2uqq_maskz_er(&mut self, op0: A, op1: B);
11777}
11778
11779impl<'a> Vcvtph2uqqMaskzErEmitter<Zmm, Xmm> for Assembler<'a> {
11780    fn vcvtph2uqq_maskz_er(&mut self, op0: Zmm, op1: Xmm) {
11781        self.emit(
11782            VCVTPH2UQQ512RR_MASKZ_ER,
11783            op0.as_operand(),
11784            op1.as_operand(),
11785            &NOREG,
11786            &NOREG,
11787        );
11788    }
11789}
11790
11791/// `VCVTPH2UW`.
11792///
11793/// Supported operand variants:
11794///
11795/// ```text
11796/// +---+----------+
11797/// | # | Operands |
11798/// +---+----------+
11799/// | 1 | Xmm, Mem |
11800/// | 2 | Xmm, Xmm |
11801/// | 3 | Ymm, Mem |
11802/// | 4 | Ymm, Ymm |
11803/// | 5 | Zmm, Mem |
11804/// | 6 | Zmm, Zmm |
11805/// +---+----------+
11806/// ```
11807pub trait Vcvtph2uwEmitter<A, B> {
11808    fn vcvtph2uw(&mut self, op0: A, op1: B);
11809}
11810
11811impl<'a> Vcvtph2uwEmitter<Xmm, Xmm> for Assembler<'a> {
11812    fn vcvtph2uw(&mut self, op0: Xmm, op1: Xmm) {
11813        self.emit(
11814            VCVTPH2UW128RR,
11815            op0.as_operand(),
11816            op1.as_operand(),
11817            &NOREG,
11818            &NOREG,
11819        );
11820    }
11821}
11822
11823impl<'a> Vcvtph2uwEmitter<Xmm, Mem> for Assembler<'a> {
11824    fn vcvtph2uw(&mut self, op0: Xmm, op1: Mem) {
11825        self.emit(
11826            VCVTPH2UW128RM,
11827            op0.as_operand(),
11828            op1.as_operand(),
11829            &NOREG,
11830            &NOREG,
11831        );
11832    }
11833}
11834
11835impl<'a> Vcvtph2uwEmitter<Ymm, Ymm> for Assembler<'a> {
11836    fn vcvtph2uw(&mut self, op0: Ymm, op1: Ymm) {
11837        self.emit(
11838            VCVTPH2UW256RR,
11839            op0.as_operand(),
11840            op1.as_operand(),
11841            &NOREG,
11842            &NOREG,
11843        );
11844    }
11845}
11846
11847impl<'a> Vcvtph2uwEmitter<Ymm, Mem> for Assembler<'a> {
11848    fn vcvtph2uw(&mut self, op0: Ymm, op1: Mem) {
11849        self.emit(
11850            VCVTPH2UW256RM,
11851            op0.as_operand(),
11852            op1.as_operand(),
11853            &NOREG,
11854            &NOREG,
11855        );
11856    }
11857}
11858
11859impl<'a> Vcvtph2uwEmitter<Zmm, Zmm> for Assembler<'a> {
11860    fn vcvtph2uw(&mut self, op0: Zmm, op1: Zmm) {
11861        self.emit(
11862            VCVTPH2UW512RR,
11863            op0.as_operand(),
11864            op1.as_operand(),
11865            &NOREG,
11866            &NOREG,
11867        );
11868    }
11869}
11870
11871impl<'a> Vcvtph2uwEmitter<Zmm, Mem> for Assembler<'a> {
11872    fn vcvtph2uw(&mut self, op0: Zmm, op1: Mem) {
11873        self.emit(
11874            VCVTPH2UW512RM,
11875            op0.as_operand(),
11876            op1.as_operand(),
11877            &NOREG,
11878            &NOREG,
11879        );
11880    }
11881}
11882
11883/// `VCVTPH2UW_ER`.
11884///
11885/// Supported operand variants:
11886///
11887/// ```text
11888/// +---+----------+
11889/// | # | Operands |
11890/// +---+----------+
11891/// | 1 | Zmm, Zmm |
11892/// +---+----------+
11893/// ```
11894pub trait Vcvtph2uwErEmitter<A, B> {
11895    fn vcvtph2uw_er(&mut self, op0: A, op1: B);
11896}
11897
11898impl<'a> Vcvtph2uwErEmitter<Zmm, Zmm> for Assembler<'a> {
11899    fn vcvtph2uw_er(&mut self, op0: Zmm, op1: Zmm) {
11900        self.emit(
11901            VCVTPH2UW512RR_ER,
11902            op0.as_operand(),
11903            op1.as_operand(),
11904            &NOREG,
11905            &NOREG,
11906        );
11907    }
11908}
11909
11910/// `VCVTPH2UW_MASK`.
11911///
11912/// Supported operand variants:
11913///
11914/// ```text
11915/// +---+----------+
11916/// | # | Operands |
11917/// +---+----------+
11918/// | 1 | Xmm, Mem |
11919/// | 2 | Xmm, Xmm |
11920/// | 3 | Ymm, Mem |
11921/// | 4 | Ymm, Ymm |
11922/// | 5 | Zmm, Mem |
11923/// | 6 | Zmm, Zmm |
11924/// +---+----------+
11925/// ```
11926pub trait Vcvtph2uwMaskEmitter<A, B> {
11927    fn vcvtph2uw_mask(&mut self, op0: A, op1: B);
11928}
11929
11930impl<'a> Vcvtph2uwMaskEmitter<Xmm, Xmm> for Assembler<'a> {
11931    fn vcvtph2uw_mask(&mut self, op0: Xmm, op1: Xmm) {
11932        self.emit(
11933            VCVTPH2UW128RR_MASK,
11934            op0.as_operand(),
11935            op1.as_operand(),
11936            &NOREG,
11937            &NOREG,
11938        );
11939    }
11940}
11941
11942impl<'a> Vcvtph2uwMaskEmitter<Xmm, Mem> for Assembler<'a> {
11943    fn vcvtph2uw_mask(&mut self, op0: Xmm, op1: Mem) {
11944        self.emit(
11945            VCVTPH2UW128RM_MASK,
11946            op0.as_operand(),
11947            op1.as_operand(),
11948            &NOREG,
11949            &NOREG,
11950        );
11951    }
11952}
11953
11954impl<'a> Vcvtph2uwMaskEmitter<Ymm, Ymm> for Assembler<'a> {
11955    fn vcvtph2uw_mask(&mut self, op0: Ymm, op1: Ymm) {
11956        self.emit(
11957            VCVTPH2UW256RR_MASK,
11958            op0.as_operand(),
11959            op1.as_operand(),
11960            &NOREG,
11961            &NOREG,
11962        );
11963    }
11964}
11965
11966impl<'a> Vcvtph2uwMaskEmitter<Ymm, Mem> for Assembler<'a> {
11967    fn vcvtph2uw_mask(&mut self, op0: Ymm, op1: Mem) {
11968        self.emit(
11969            VCVTPH2UW256RM_MASK,
11970            op0.as_operand(),
11971            op1.as_operand(),
11972            &NOREG,
11973            &NOREG,
11974        );
11975    }
11976}
11977
11978impl<'a> Vcvtph2uwMaskEmitter<Zmm, Zmm> for Assembler<'a> {
11979    fn vcvtph2uw_mask(&mut self, op0: Zmm, op1: Zmm) {
11980        self.emit(
11981            VCVTPH2UW512RR_MASK,
11982            op0.as_operand(),
11983            op1.as_operand(),
11984            &NOREG,
11985            &NOREG,
11986        );
11987    }
11988}
11989
11990impl<'a> Vcvtph2uwMaskEmitter<Zmm, Mem> for Assembler<'a> {
11991    fn vcvtph2uw_mask(&mut self, op0: Zmm, op1: Mem) {
11992        self.emit(
11993            VCVTPH2UW512RM_MASK,
11994            op0.as_operand(),
11995            op1.as_operand(),
11996            &NOREG,
11997            &NOREG,
11998        );
11999    }
12000}
12001
12002/// `VCVTPH2UW_MASK_ER`.
12003///
12004/// Supported operand variants:
12005///
12006/// ```text
12007/// +---+----------+
12008/// | # | Operands |
12009/// +---+----------+
12010/// | 1 | Zmm, Zmm |
12011/// +---+----------+
12012/// ```
12013pub trait Vcvtph2uwMaskErEmitter<A, B> {
12014    fn vcvtph2uw_mask_er(&mut self, op0: A, op1: B);
12015}
12016
12017impl<'a> Vcvtph2uwMaskErEmitter<Zmm, Zmm> for Assembler<'a> {
12018    fn vcvtph2uw_mask_er(&mut self, op0: Zmm, op1: Zmm) {
12019        self.emit(
12020            VCVTPH2UW512RR_MASK_ER,
12021            op0.as_operand(),
12022            op1.as_operand(),
12023            &NOREG,
12024            &NOREG,
12025        );
12026    }
12027}
12028
12029/// `VCVTPH2UW_MASKZ`.
12030///
12031/// Supported operand variants:
12032///
12033/// ```text
12034/// +---+----------+
12035/// | # | Operands |
12036/// +---+----------+
12037/// | 1 | Xmm, Mem |
12038/// | 2 | Xmm, Xmm |
12039/// | 3 | Ymm, Mem |
12040/// | 4 | Ymm, Ymm |
12041/// | 5 | Zmm, Mem |
12042/// | 6 | Zmm, Zmm |
12043/// +---+----------+
12044/// ```
12045pub trait Vcvtph2uwMaskzEmitter<A, B> {
12046    fn vcvtph2uw_maskz(&mut self, op0: A, op1: B);
12047}
12048
12049impl<'a> Vcvtph2uwMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
12050    fn vcvtph2uw_maskz(&mut self, op0: Xmm, op1: Xmm) {
12051        self.emit(
12052            VCVTPH2UW128RR_MASKZ,
12053            op0.as_operand(),
12054            op1.as_operand(),
12055            &NOREG,
12056            &NOREG,
12057        );
12058    }
12059}
12060
12061impl<'a> Vcvtph2uwMaskzEmitter<Xmm, Mem> for Assembler<'a> {
12062    fn vcvtph2uw_maskz(&mut self, op0: Xmm, op1: Mem) {
12063        self.emit(
12064            VCVTPH2UW128RM_MASKZ,
12065            op0.as_operand(),
12066            op1.as_operand(),
12067            &NOREG,
12068            &NOREG,
12069        );
12070    }
12071}
12072
12073impl<'a> Vcvtph2uwMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
12074    fn vcvtph2uw_maskz(&mut self, op0: Ymm, op1: Ymm) {
12075        self.emit(
12076            VCVTPH2UW256RR_MASKZ,
12077            op0.as_operand(),
12078            op1.as_operand(),
12079            &NOREG,
12080            &NOREG,
12081        );
12082    }
12083}
12084
12085impl<'a> Vcvtph2uwMaskzEmitter<Ymm, Mem> for Assembler<'a> {
12086    fn vcvtph2uw_maskz(&mut self, op0: Ymm, op1: Mem) {
12087        self.emit(
12088            VCVTPH2UW256RM_MASKZ,
12089            op0.as_operand(),
12090            op1.as_operand(),
12091            &NOREG,
12092            &NOREG,
12093        );
12094    }
12095}
12096
12097impl<'a> Vcvtph2uwMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
12098    fn vcvtph2uw_maskz(&mut self, op0: Zmm, op1: Zmm) {
12099        self.emit(
12100            VCVTPH2UW512RR_MASKZ,
12101            op0.as_operand(),
12102            op1.as_operand(),
12103            &NOREG,
12104            &NOREG,
12105        );
12106    }
12107}
12108
12109impl<'a> Vcvtph2uwMaskzEmitter<Zmm, Mem> for Assembler<'a> {
12110    fn vcvtph2uw_maskz(&mut self, op0: Zmm, op1: Mem) {
12111        self.emit(
12112            VCVTPH2UW512RM_MASKZ,
12113            op0.as_operand(),
12114            op1.as_operand(),
12115            &NOREG,
12116            &NOREG,
12117        );
12118    }
12119}
12120
12121/// `VCVTPH2UW_MASKZ_ER`.
12122///
12123/// Supported operand variants:
12124///
12125/// ```text
12126/// +---+----------+
12127/// | # | Operands |
12128/// +---+----------+
12129/// | 1 | Zmm, Zmm |
12130/// +---+----------+
12131/// ```
12132pub trait Vcvtph2uwMaskzErEmitter<A, B> {
12133    fn vcvtph2uw_maskz_er(&mut self, op0: A, op1: B);
12134}
12135
12136impl<'a> Vcvtph2uwMaskzErEmitter<Zmm, Zmm> for Assembler<'a> {
12137    fn vcvtph2uw_maskz_er(&mut self, op0: Zmm, op1: Zmm) {
12138        self.emit(
12139            VCVTPH2UW512RR_MASKZ_ER,
12140            op0.as_operand(),
12141            op1.as_operand(),
12142            &NOREG,
12143            &NOREG,
12144        );
12145    }
12146}
12147
12148/// `VCVTPH2W`.
12149///
12150/// Supported operand variants:
12151///
12152/// ```text
12153/// +---+----------+
12154/// | # | Operands |
12155/// +---+----------+
12156/// | 1 | Xmm, Mem |
12157/// | 2 | Xmm, Xmm |
12158/// | 3 | Ymm, Mem |
12159/// | 4 | Ymm, Ymm |
12160/// | 5 | Zmm, Mem |
12161/// | 6 | Zmm, Zmm |
12162/// +---+----------+
12163/// ```
12164pub trait Vcvtph2wEmitter<A, B> {
12165    fn vcvtph2w(&mut self, op0: A, op1: B);
12166}
12167
12168impl<'a> Vcvtph2wEmitter<Xmm, Xmm> for Assembler<'a> {
12169    fn vcvtph2w(&mut self, op0: Xmm, op1: Xmm) {
12170        self.emit(
12171            VCVTPH2W128RR,
12172            op0.as_operand(),
12173            op1.as_operand(),
12174            &NOREG,
12175            &NOREG,
12176        );
12177    }
12178}
12179
12180impl<'a> Vcvtph2wEmitter<Xmm, Mem> for Assembler<'a> {
12181    fn vcvtph2w(&mut self, op0: Xmm, op1: Mem) {
12182        self.emit(
12183            VCVTPH2W128RM,
12184            op0.as_operand(),
12185            op1.as_operand(),
12186            &NOREG,
12187            &NOREG,
12188        );
12189    }
12190}
12191
12192impl<'a> Vcvtph2wEmitter<Ymm, Ymm> for Assembler<'a> {
12193    fn vcvtph2w(&mut self, op0: Ymm, op1: Ymm) {
12194        self.emit(
12195            VCVTPH2W256RR,
12196            op0.as_operand(),
12197            op1.as_operand(),
12198            &NOREG,
12199            &NOREG,
12200        );
12201    }
12202}
12203
12204impl<'a> Vcvtph2wEmitter<Ymm, Mem> for Assembler<'a> {
12205    fn vcvtph2w(&mut self, op0: Ymm, op1: Mem) {
12206        self.emit(
12207            VCVTPH2W256RM,
12208            op0.as_operand(),
12209            op1.as_operand(),
12210            &NOREG,
12211            &NOREG,
12212        );
12213    }
12214}
12215
12216impl<'a> Vcvtph2wEmitter<Zmm, Zmm> for Assembler<'a> {
12217    fn vcvtph2w(&mut self, op0: Zmm, op1: Zmm) {
12218        self.emit(
12219            VCVTPH2W512RR,
12220            op0.as_operand(),
12221            op1.as_operand(),
12222            &NOREG,
12223            &NOREG,
12224        );
12225    }
12226}
12227
12228impl<'a> Vcvtph2wEmitter<Zmm, Mem> for Assembler<'a> {
12229    fn vcvtph2w(&mut self, op0: Zmm, op1: Mem) {
12230        self.emit(
12231            VCVTPH2W512RM,
12232            op0.as_operand(),
12233            op1.as_operand(),
12234            &NOREG,
12235            &NOREG,
12236        );
12237    }
12238}
12239
12240/// `VCVTPH2W_ER`.
12241///
12242/// Supported operand variants:
12243///
12244/// ```text
12245/// +---+----------+
12246/// | # | Operands |
12247/// +---+----------+
12248/// | 1 | Zmm, Zmm |
12249/// +---+----------+
12250/// ```
12251pub trait Vcvtph2wErEmitter<A, B> {
12252    fn vcvtph2w_er(&mut self, op0: A, op1: B);
12253}
12254
12255impl<'a> Vcvtph2wErEmitter<Zmm, Zmm> for Assembler<'a> {
12256    fn vcvtph2w_er(&mut self, op0: Zmm, op1: Zmm) {
12257        self.emit(
12258            VCVTPH2W512RR_ER,
12259            op0.as_operand(),
12260            op1.as_operand(),
12261            &NOREG,
12262            &NOREG,
12263        );
12264    }
12265}
12266
12267/// `VCVTPH2W_MASK`.
12268///
12269/// Supported operand variants:
12270///
12271/// ```text
12272/// +---+----------+
12273/// | # | Operands |
12274/// +---+----------+
12275/// | 1 | Xmm, Mem |
12276/// | 2 | Xmm, Xmm |
12277/// | 3 | Ymm, Mem |
12278/// | 4 | Ymm, Ymm |
12279/// | 5 | Zmm, Mem |
12280/// | 6 | Zmm, Zmm |
12281/// +---+----------+
12282/// ```
12283pub trait Vcvtph2wMaskEmitter<A, B> {
12284    fn vcvtph2w_mask(&mut self, op0: A, op1: B);
12285}
12286
12287impl<'a> Vcvtph2wMaskEmitter<Xmm, Xmm> for Assembler<'a> {
12288    fn vcvtph2w_mask(&mut self, op0: Xmm, op1: Xmm) {
12289        self.emit(
12290            VCVTPH2W128RR_MASK,
12291            op0.as_operand(),
12292            op1.as_operand(),
12293            &NOREG,
12294            &NOREG,
12295        );
12296    }
12297}
12298
12299impl<'a> Vcvtph2wMaskEmitter<Xmm, Mem> for Assembler<'a> {
12300    fn vcvtph2w_mask(&mut self, op0: Xmm, op1: Mem) {
12301        self.emit(
12302            VCVTPH2W128RM_MASK,
12303            op0.as_operand(),
12304            op1.as_operand(),
12305            &NOREG,
12306            &NOREG,
12307        );
12308    }
12309}
12310
12311impl<'a> Vcvtph2wMaskEmitter<Ymm, Ymm> for Assembler<'a> {
12312    fn vcvtph2w_mask(&mut self, op0: Ymm, op1: Ymm) {
12313        self.emit(
12314            VCVTPH2W256RR_MASK,
12315            op0.as_operand(),
12316            op1.as_operand(),
12317            &NOREG,
12318            &NOREG,
12319        );
12320    }
12321}
12322
12323impl<'a> Vcvtph2wMaskEmitter<Ymm, Mem> for Assembler<'a> {
12324    fn vcvtph2w_mask(&mut self, op0: Ymm, op1: Mem) {
12325        self.emit(
12326            VCVTPH2W256RM_MASK,
12327            op0.as_operand(),
12328            op1.as_operand(),
12329            &NOREG,
12330            &NOREG,
12331        );
12332    }
12333}
12334
12335impl<'a> Vcvtph2wMaskEmitter<Zmm, Zmm> for Assembler<'a> {
12336    fn vcvtph2w_mask(&mut self, op0: Zmm, op1: Zmm) {
12337        self.emit(
12338            VCVTPH2W512RR_MASK,
12339            op0.as_operand(),
12340            op1.as_operand(),
12341            &NOREG,
12342            &NOREG,
12343        );
12344    }
12345}
12346
12347impl<'a> Vcvtph2wMaskEmitter<Zmm, Mem> for Assembler<'a> {
12348    fn vcvtph2w_mask(&mut self, op0: Zmm, op1: Mem) {
12349        self.emit(
12350            VCVTPH2W512RM_MASK,
12351            op0.as_operand(),
12352            op1.as_operand(),
12353            &NOREG,
12354            &NOREG,
12355        );
12356    }
12357}
12358
12359/// `VCVTPH2W_MASK_ER`.
12360///
12361/// Supported operand variants:
12362///
12363/// ```text
12364/// +---+----------+
12365/// | # | Operands |
12366/// +---+----------+
12367/// | 1 | Zmm, Zmm |
12368/// +---+----------+
12369/// ```
12370pub trait Vcvtph2wMaskErEmitter<A, B> {
12371    fn vcvtph2w_mask_er(&mut self, op0: A, op1: B);
12372}
12373
12374impl<'a> Vcvtph2wMaskErEmitter<Zmm, Zmm> for Assembler<'a> {
12375    fn vcvtph2w_mask_er(&mut self, op0: Zmm, op1: Zmm) {
12376        self.emit(
12377            VCVTPH2W512RR_MASK_ER,
12378            op0.as_operand(),
12379            op1.as_operand(),
12380            &NOREG,
12381            &NOREG,
12382        );
12383    }
12384}
12385
12386/// `VCVTPH2W_MASKZ`.
12387///
12388/// Supported operand variants:
12389///
12390/// ```text
12391/// +---+----------+
12392/// | # | Operands |
12393/// +---+----------+
12394/// | 1 | Xmm, Mem |
12395/// | 2 | Xmm, Xmm |
12396/// | 3 | Ymm, Mem |
12397/// | 4 | Ymm, Ymm |
12398/// | 5 | Zmm, Mem |
12399/// | 6 | Zmm, Zmm |
12400/// +---+----------+
12401/// ```
12402pub trait Vcvtph2wMaskzEmitter<A, B> {
12403    fn vcvtph2w_maskz(&mut self, op0: A, op1: B);
12404}
12405
12406impl<'a> Vcvtph2wMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
12407    fn vcvtph2w_maskz(&mut self, op0: Xmm, op1: Xmm) {
12408        self.emit(
12409            VCVTPH2W128RR_MASKZ,
12410            op0.as_operand(),
12411            op1.as_operand(),
12412            &NOREG,
12413            &NOREG,
12414        );
12415    }
12416}
12417
12418impl<'a> Vcvtph2wMaskzEmitter<Xmm, Mem> for Assembler<'a> {
12419    fn vcvtph2w_maskz(&mut self, op0: Xmm, op1: Mem) {
12420        self.emit(
12421            VCVTPH2W128RM_MASKZ,
12422            op0.as_operand(),
12423            op1.as_operand(),
12424            &NOREG,
12425            &NOREG,
12426        );
12427    }
12428}
12429
12430impl<'a> Vcvtph2wMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
12431    fn vcvtph2w_maskz(&mut self, op0: Ymm, op1: Ymm) {
12432        self.emit(
12433            VCVTPH2W256RR_MASKZ,
12434            op0.as_operand(),
12435            op1.as_operand(),
12436            &NOREG,
12437            &NOREG,
12438        );
12439    }
12440}
12441
12442impl<'a> Vcvtph2wMaskzEmitter<Ymm, Mem> for Assembler<'a> {
12443    fn vcvtph2w_maskz(&mut self, op0: Ymm, op1: Mem) {
12444        self.emit(
12445            VCVTPH2W256RM_MASKZ,
12446            op0.as_operand(),
12447            op1.as_operand(),
12448            &NOREG,
12449            &NOREG,
12450        );
12451    }
12452}
12453
12454impl<'a> Vcvtph2wMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
12455    fn vcvtph2w_maskz(&mut self, op0: Zmm, op1: Zmm) {
12456        self.emit(
12457            VCVTPH2W512RR_MASKZ,
12458            op0.as_operand(),
12459            op1.as_operand(),
12460            &NOREG,
12461            &NOREG,
12462        );
12463    }
12464}
12465
12466impl<'a> Vcvtph2wMaskzEmitter<Zmm, Mem> for Assembler<'a> {
12467    fn vcvtph2w_maskz(&mut self, op0: Zmm, op1: Mem) {
12468        self.emit(
12469            VCVTPH2W512RM_MASKZ,
12470            op0.as_operand(),
12471            op1.as_operand(),
12472            &NOREG,
12473            &NOREG,
12474        );
12475    }
12476}
12477
12478/// `VCVTPH2W_MASKZ_ER`.
12479///
12480/// Supported operand variants:
12481///
12482/// ```text
12483/// +---+----------+
12484/// | # | Operands |
12485/// +---+----------+
12486/// | 1 | Zmm, Zmm |
12487/// +---+----------+
12488/// ```
12489pub trait Vcvtph2wMaskzErEmitter<A, B> {
12490    fn vcvtph2w_maskz_er(&mut self, op0: A, op1: B);
12491}
12492
12493impl<'a> Vcvtph2wMaskzErEmitter<Zmm, Zmm> for Assembler<'a> {
12494    fn vcvtph2w_maskz_er(&mut self, op0: Zmm, op1: Zmm) {
12495        self.emit(
12496            VCVTPH2W512RR_MASKZ_ER,
12497            op0.as_operand(),
12498            op1.as_operand(),
12499            &NOREG,
12500            &NOREG,
12501        );
12502    }
12503}
12504
12505/// `VCVTPS2PHX`.
12506///
12507/// Supported operand variants:
12508///
12509/// ```text
12510/// +---+----------+
12511/// | # | Operands |
12512/// +---+----------+
12513/// | 1 | Xmm, Mem |
12514/// | 2 | Xmm, Xmm |
12515/// | 3 | Xmm, Ymm |
12516/// | 4 | Ymm, Mem |
12517/// | 5 | Ymm, Zmm |
12518/// +---+----------+
12519/// ```
12520pub trait Vcvtps2phxEmitter<A, B> {
12521    fn vcvtps2phx(&mut self, op0: A, op1: B);
12522}
12523
12524impl<'a> Vcvtps2phxEmitter<Xmm, Xmm> for Assembler<'a> {
12525    fn vcvtps2phx(&mut self, op0: Xmm, op1: Xmm) {
12526        self.emit(
12527            VCVTPS2PHX128RR,
12528            op0.as_operand(),
12529            op1.as_operand(),
12530            &NOREG,
12531            &NOREG,
12532        );
12533    }
12534}
12535
12536impl<'a> Vcvtps2phxEmitter<Xmm, Mem> for Assembler<'a> {
12537    fn vcvtps2phx(&mut self, op0: Xmm, op1: Mem) {
12538        self.emit(
12539            VCVTPS2PHX128RM,
12540            op0.as_operand(),
12541            op1.as_operand(),
12542            &NOREG,
12543            &NOREG,
12544        );
12545    }
12546}
12547
12548impl<'a> Vcvtps2phxEmitter<Xmm, Ymm> for Assembler<'a> {
12549    fn vcvtps2phx(&mut self, op0: Xmm, op1: Ymm) {
12550        self.emit(
12551            VCVTPS2PHX256RR,
12552            op0.as_operand(),
12553            op1.as_operand(),
12554            &NOREG,
12555            &NOREG,
12556        );
12557    }
12558}
12559
12560impl<'a> Vcvtps2phxEmitter<Ymm, Zmm> for Assembler<'a> {
12561    fn vcvtps2phx(&mut self, op0: Ymm, op1: Zmm) {
12562        self.emit(
12563            VCVTPS2PHX512RR,
12564            op0.as_operand(),
12565            op1.as_operand(),
12566            &NOREG,
12567            &NOREG,
12568        );
12569    }
12570}
12571
12572impl<'a> Vcvtps2phxEmitter<Ymm, Mem> for Assembler<'a> {
12573    fn vcvtps2phx(&mut self, op0: Ymm, op1: Mem) {
12574        self.emit(
12575            VCVTPS2PHX512RM,
12576            op0.as_operand(),
12577            op1.as_operand(),
12578            &NOREG,
12579            &NOREG,
12580        );
12581    }
12582}
12583
12584/// `VCVTPS2PHX_ER`.
12585///
12586/// Supported operand variants:
12587///
12588/// ```text
12589/// +---+----------+
12590/// | # | Operands |
12591/// +---+----------+
12592/// | 1 | Ymm, Zmm |
12593/// +---+----------+
12594/// ```
12595pub trait Vcvtps2phxErEmitter<A, B> {
12596    fn vcvtps2phx_er(&mut self, op0: A, op1: B);
12597}
12598
12599impl<'a> Vcvtps2phxErEmitter<Ymm, Zmm> for Assembler<'a> {
12600    fn vcvtps2phx_er(&mut self, op0: Ymm, op1: Zmm) {
12601        self.emit(
12602            VCVTPS2PHX512RR_ER,
12603            op0.as_operand(),
12604            op1.as_operand(),
12605            &NOREG,
12606            &NOREG,
12607        );
12608    }
12609}
12610
12611/// `VCVTPS2PHX_MASK`.
12612///
12613/// Supported operand variants:
12614///
12615/// ```text
12616/// +---+----------+
12617/// | # | Operands |
12618/// +---+----------+
12619/// | 1 | Xmm, Mem |
12620/// | 2 | Xmm, Xmm |
12621/// | 3 | Xmm, Ymm |
12622/// | 4 | Ymm, Mem |
12623/// | 5 | Ymm, Zmm |
12624/// +---+----------+
12625/// ```
12626pub trait Vcvtps2phxMaskEmitter<A, B> {
12627    fn vcvtps2phx_mask(&mut self, op0: A, op1: B);
12628}
12629
12630impl<'a> Vcvtps2phxMaskEmitter<Xmm, Xmm> for Assembler<'a> {
12631    fn vcvtps2phx_mask(&mut self, op0: Xmm, op1: Xmm) {
12632        self.emit(
12633            VCVTPS2PHX128RR_MASK,
12634            op0.as_operand(),
12635            op1.as_operand(),
12636            &NOREG,
12637            &NOREG,
12638        );
12639    }
12640}
12641
12642impl<'a> Vcvtps2phxMaskEmitter<Xmm, Mem> for Assembler<'a> {
12643    fn vcvtps2phx_mask(&mut self, op0: Xmm, op1: Mem) {
12644        self.emit(
12645            VCVTPS2PHX128RM_MASK,
12646            op0.as_operand(),
12647            op1.as_operand(),
12648            &NOREG,
12649            &NOREG,
12650        );
12651    }
12652}
12653
12654impl<'a> Vcvtps2phxMaskEmitter<Xmm, Ymm> for Assembler<'a> {
12655    fn vcvtps2phx_mask(&mut self, op0: Xmm, op1: Ymm) {
12656        self.emit(
12657            VCVTPS2PHX256RR_MASK,
12658            op0.as_operand(),
12659            op1.as_operand(),
12660            &NOREG,
12661            &NOREG,
12662        );
12663    }
12664}
12665
12666impl<'a> Vcvtps2phxMaskEmitter<Ymm, Zmm> for Assembler<'a> {
12667    fn vcvtps2phx_mask(&mut self, op0: Ymm, op1: Zmm) {
12668        self.emit(
12669            VCVTPS2PHX512RR_MASK,
12670            op0.as_operand(),
12671            op1.as_operand(),
12672            &NOREG,
12673            &NOREG,
12674        );
12675    }
12676}
12677
12678impl<'a> Vcvtps2phxMaskEmitter<Ymm, Mem> for Assembler<'a> {
12679    fn vcvtps2phx_mask(&mut self, op0: Ymm, op1: Mem) {
12680        self.emit(
12681            VCVTPS2PHX512RM_MASK,
12682            op0.as_operand(),
12683            op1.as_operand(),
12684            &NOREG,
12685            &NOREG,
12686        );
12687    }
12688}
12689
12690/// `VCVTPS2PHX_MASK_ER`.
12691///
12692/// Supported operand variants:
12693///
12694/// ```text
12695/// +---+----------+
12696/// | # | Operands |
12697/// +---+----------+
12698/// | 1 | Ymm, Zmm |
12699/// +---+----------+
12700/// ```
12701pub trait Vcvtps2phxMaskErEmitter<A, B> {
12702    fn vcvtps2phx_mask_er(&mut self, op0: A, op1: B);
12703}
12704
12705impl<'a> Vcvtps2phxMaskErEmitter<Ymm, Zmm> for Assembler<'a> {
12706    fn vcvtps2phx_mask_er(&mut self, op0: Ymm, op1: Zmm) {
12707        self.emit(
12708            VCVTPS2PHX512RR_MASK_ER,
12709            op0.as_operand(),
12710            op1.as_operand(),
12711            &NOREG,
12712            &NOREG,
12713        );
12714    }
12715}
12716
12717/// `VCVTPS2PHX_MASKZ`.
12718///
12719/// Supported operand variants:
12720///
12721/// ```text
12722/// +---+----------+
12723/// | # | Operands |
12724/// +---+----------+
12725/// | 1 | Xmm, Mem |
12726/// | 2 | Xmm, Xmm |
12727/// | 3 | Xmm, Ymm |
12728/// | 4 | Ymm, Mem |
12729/// | 5 | Ymm, Zmm |
12730/// +---+----------+
12731/// ```
12732pub trait Vcvtps2phxMaskzEmitter<A, B> {
12733    fn vcvtps2phx_maskz(&mut self, op0: A, op1: B);
12734}
12735
12736impl<'a> Vcvtps2phxMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
12737    fn vcvtps2phx_maskz(&mut self, op0: Xmm, op1: Xmm) {
12738        self.emit(
12739            VCVTPS2PHX128RR_MASKZ,
12740            op0.as_operand(),
12741            op1.as_operand(),
12742            &NOREG,
12743            &NOREG,
12744        );
12745    }
12746}
12747
12748impl<'a> Vcvtps2phxMaskzEmitter<Xmm, Mem> for Assembler<'a> {
12749    fn vcvtps2phx_maskz(&mut self, op0: Xmm, op1: Mem) {
12750        self.emit(
12751            VCVTPS2PHX128RM_MASKZ,
12752            op0.as_operand(),
12753            op1.as_operand(),
12754            &NOREG,
12755            &NOREG,
12756        );
12757    }
12758}
12759
12760impl<'a> Vcvtps2phxMaskzEmitter<Xmm, Ymm> for Assembler<'a> {
12761    fn vcvtps2phx_maskz(&mut self, op0: Xmm, op1: Ymm) {
12762        self.emit(
12763            VCVTPS2PHX256RR_MASKZ,
12764            op0.as_operand(),
12765            op1.as_operand(),
12766            &NOREG,
12767            &NOREG,
12768        );
12769    }
12770}
12771
12772impl<'a> Vcvtps2phxMaskzEmitter<Ymm, Zmm> for Assembler<'a> {
12773    fn vcvtps2phx_maskz(&mut self, op0: Ymm, op1: Zmm) {
12774        self.emit(
12775            VCVTPS2PHX512RR_MASKZ,
12776            op0.as_operand(),
12777            op1.as_operand(),
12778            &NOREG,
12779            &NOREG,
12780        );
12781    }
12782}
12783
12784impl<'a> Vcvtps2phxMaskzEmitter<Ymm, Mem> for Assembler<'a> {
12785    fn vcvtps2phx_maskz(&mut self, op0: Ymm, op1: Mem) {
12786        self.emit(
12787            VCVTPS2PHX512RM_MASKZ,
12788            op0.as_operand(),
12789            op1.as_operand(),
12790            &NOREG,
12791            &NOREG,
12792        );
12793    }
12794}
12795
12796/// `VCVTPS2PHX_MASKZ_ER`.
12797///
12798/// Supported operand variants:
12799///
12800/// ```text
12801/// +---+----------+
12802/// | # | Operands |
12803/// +---+----------+
12804/// | 1 | Ymm, Zmm |
12805/// +---+----------+
12806/// ```
12807pub trait Vcvtps2phxMaskzErEmitter<A, B> {
12808    fn vcvtps2phx_maskz_er(&mut self, op0: A, op1: B);
12809}
12810
12811impl<'a> Vcvtps2phxMaskzErEmitter<Ymm, Zmm> for Assembler<'a> {
12812    fn vcvtps2phx_maskz_er(&mut self, op0: Ymm, op1: Zmm) {
12813        self.emit(
12814            VCVTPS2PHX512RR_MASKZ_ER,
12815            op0.as_operand(),
12816            op1.as_operand(),
12817            &NOREG,
12818            &NOREG,
12819        );
12820    }
12821}
12822
12823/// `VCVTQQ2PH`.
12824///
12825/// Supported operand variants:
12826///
12827/// ```text
12828/// +---+----------+
12829/// | # | Operands |
12830/// +---+----------+
12831/// | 1 | Xmm, Mem |
12832/// | 2 | Xmm, Xmm |
12833/// | 3 | Xmm, Ymm |
12834/// | 4 | Xmm, Zmm |
12835/// +---+----------+
12836/// ```
12837pub trait Vcvtqq2phEmitter<A, B> {
12838    fn vcvtqq2ph(&mut self, op0: A, op1: B);
12839}
12840
12841impl<'a> Vcvtqq2phEmitter<Xmm, Xmm> for Assembler<'a> {
12842    fn vcvtqq2ph(&mut self, op0: Xmm, op1: Xmm) {
12843        self.emit(
12844            VCVTQQ2PH128RR,
12845            op0.as_operand(),
12846            op1.as_operand(),
12847            &NOREG,
12848            &NOREG,
12849        );
12850    }
12851}
12852
12853impl<'a> Vcvtqq2phEmitter<Xmm, Mem> for Assembler<'a> {
12854    fn vcvtqq2ph(&mut self, op0: Xmm, op1: Mem) {
12855        self.emit(
12856            VCVTQQ2PH128RM,
12857            op0.as_operand(),
12858            op1.as_operand(),
12859            &NOREG,
12860            &NOREG,
12861        );
12862    }
12863}
12864
12865impl<'a> Vcvtqq2phEmitter<Xmm, Ymm> for Assembler<'a> {
12866    fn vcvtqq2ph(&mut self, op0: Xmm, op1: Ymm) {
12867        self.emit(
12868            VCVTQQ2PH256RR,
12869            op0.as_operand(),
12870            op1.as_operand(),
12871            &NOREG,
12872            &NOREG,
12873        );
12874    }
12875}
12876
12877impl<'a> Vcvtqq2phEmitter<Xmm, Zmm> for Assembler<'a> {
12878    fn vcvtqq2ph(&mut self, op0: Xmm, op1: Zmm) {
12879        self.emit(
12880            VCVTQQ2PH512RR,
12881            op0.as_operand(),
12882            op1.as_operand(),
12883            &NOREG,
12884            &NOREG,
12885        );
12886    }
12887}
12888
12889/// `VCVTQQ2PH_ER`.
12890///
12891/// Supported operand variants:
12892///
12893/// ```text
12894/// +---+----------+
12895/// | # | Operands |
12896/// +---+----------+
12897/// | 1 | Xmm, Zmm |
12898/// +---+----------+
12899/// ```
12900pub trait Vcvtqq2phErEmitter<A, B> {
12901    fn vcvtqq2ph_er(&mut self, op0: A, op1: B);
12902}
12903
12904impl<'a> Vcvtqq2phErEmitter<Xmm, Zmm> for Assembler<'a> {
12905    fn vcvtqq2ph_er(&mut self, op0: Xmm, op1: Zmm) {
12906        self.emit(
12907            VCVTQQ2PH512RR_ER,
12908            op0.as_operand(),
12909            op1.as_operand(),
12910            &NOREG,
12911            &NOREG,
12912        );
12913    }
12914}
12915
12916/// `VCVTQQ2PH_MASK`.
12917///
12918/// Supported operand variants:
12919///
12920/// ```text
12921/// +---+----------+
12922/// | # | Operands |
12923/// +---+----------+
12924/// | 1 | Xmm, Mem |
12925/// | 2 | Xmm, Xmm |
12926/// | 3 | Xmm, Ymm |
12927/// | 4 | Xmm, Zmm |
12928/// +---+----------+
12929/// ```
12930pub trait Vcvtqq2phMaskEmitter<A, B> {
12931    fn vcvtqq2ph_mask(&mut self, op0: A, op1: B);
12932}
12933
12934impl<'a> Vcvtqq2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
12935    fn vcvtqq2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
12936        self.emit(
12937            VCVTQQ2PH128RR_MASK,
12938            op0.as_operand(),
12939            op1.as_operand(),
12940            &NOREG,
12941            &NOREG,
12942        );
12943    }
12944}
12945
12946impl<'a> Vcvtqq2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
12947    fn vcvtqq2ph_mask(&mut self, op0: Xmm, op1: Mem) {
12948        self.emit(
12949            VCVTQQ2PH128RM_MASK,
12950            op0.as_operand(),
12951            op1.as_operand(),
12952            &NOREG,
12953            &NOREG,
12954        );
12955    }
12956}
12957
12958impl<'a> Vcvtqq2phMaskEmitter<Xmm, Ymm> for Assembler<'a> {
12959    fn vcvtqq2ph_mask(&mut self, op0: Xmm, op1: Ymm) {
12960        self.emit(
12961            VCVTQQ2PH256RR_MASK,
12962            op0.as_operand(),
12963            op1.as_operand(),
12964            &NOREG,
12965            &NOREG,
12966        );
12967    }
12968}
12969
12970impl<'a> Vcvtqq2phMaskEmitter<Xmm, Zmm> for Assembler<'a> {
12971    fn vcvtqq2ph_mask(&mut self, op0: Xmm, op1: Zmm) {
12972        self.emit(
12973            VCVTQQ2PH512RR_MASK,
12974            op0.as_operand(),
12975            op1.as_operand(),
12976            &NOREG,
12977            &NOREG,
12978        );
12979    }
12980}
12981
12982/// `VCVTQQ2PH_MASK_ER`.
12983///
12984/// Supported operand variants:
12985///
12986/// ```text
12987/// +---+----------+
12988/// | # | Operands |
12989/// +---+----------+
12990/// | 1 | Xmm, Zmm |
12991/// +---+----------+
12992/// ```
12993pub trait Vcvtqq2phMaskErEmitter<A, B> {
12994    fn vcvtqq2ph_mask_er(&mut self, op0: A, op1: B);
12995}
12996
12997impl<'a> Vcvtqq2phMaskErEmitter<Xmm, Zmm> for Assembler<'a> {
12998    fn vcvtqq2ph_mask_er(&mut self, op0: Xmm, op1: Zmm) {
12999        self.emit(
13000            VCVTQQ2PH512RR_MASK_ER,
13001            op0.as_operand(),
13002            op1.as_operand(),
13003            &NOREG,
13004            &NOREG,
13005        );
13006    }
13007}
13008
13009/// `VCVTQQ2PH_MASKZ`.
13010///
13011/// Supported operand variants:
13012///
13013/// ```text
13014/// +---+----------+
13015/// | # | Operands |
13016/// +---+----------+
13017/// | 1 | Xmm, Mem |
13018/// | 2 | Xmm, Xmm |
13019/// | 3 | Xmm, Ymm |
13020/// | 4 | Xmm, Zmm |
13021/// +---+----------+
13022/// ```
13023pub trait Vcvtqq2phMaskzEmitter<A, B> {
13024    fn vcvtqq2ph_maskz(&mut self, op0: A, op1: B);
13025}
13026
13027impl<'a> Vcvtqq2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
13028    fn vcvtqq2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
13029        self.emit(
13030            VCVTQQ2PH128RR_MASKZ,
13031            op0.as_operand(),
13032            op1.as_operand(),
13033            &NOREG,
13034            &NOREG,
13035        );
13036    }
13037}
13038
13039impl<'a> Vcvtqq2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
13040    fn vcvtqq2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
13041        self.emit(
13042            VCVTQQ2PH128RM_MASKZ,
13043            op0.as_operand(),
13044            op1.as_operand(),
13045            &NOREG,
13046            &NOREG,
13047        );
13048    }
13049}
13050
13051impl<'a> Vcvtqq2phMaskzEmitter<Xmm, Ymm> for Assembler<'a> {
13052    fn vcvtqq2ph_maskz(&mut self, op0: Xmm, op1: Ymm) {
13053        self.emit(
13054            VCVTQQ2PH256RR_MASKZ,
13055            op0.as_operand(),
13056            op1.as_operand(),
13057            &NOREG,
13058            &NOREG,
13059        );
13060    }
13061}
13062
13063impl<'a> Vcvtqq2phMaskzEmitter<Xmm, Zmm> for Assembler<'a> {
13064    fn vcvtqq2ph_maskz(&mut self, op0: Xmm, op1: Zmm) {
13065        self.emit(
13066            VCVTQQ2PH512RR_MASKZ,
13067            op0.as_operand(),
13068            op1.as_operand(),
13069            &NOREG,
13070            &NOREG,
13071        );
13072    }
13073}
13074
13075/// `VCVTQQ2PH_MASKZ_ER`.
13076///
13077/// Supported operand variants:
13078///
13079/// ```text
13080/// +---+----------+
13081/// | # | Operands |
13082/// +---+----------+
13083/// | 1 | Xmm, Zmm |
13084/// +---+----------+
13085/// ```
13086pub trait Vcvtqq2phMaskzErEmitter<A, B> {
13087    fn vcvtqq2ph_maskz_er(&mut self, op0: A, op1: B);
13088}
13089
13090impl<'a> Vcvtqq2phMaskzErEmitter<Xmm, Zmm> for Assembler<'a> {
13091    fn vcvtqq2ph_maskz_er(&mut self, op0: Xmm, op1: Zmm) {
13092        self.emit(
13093            VCVTQQ2PH512RR_MASKZ_ER,
13094            op0.as_operand(),
13095            op1.as_operand(),
13096            &NOREG,
13097            &NOREG,
13098        );
13099    }
13100}
13101
13102/// `VCVTSD2SH`.
13103///
13104/// Supported operand variants:
13105///
13106/// ```text
13107/// +---+---------------+
13108/// | # | Operands      |
13109/// +---+---------------+
13110/// | 1 | Xmm, Xmm, Mem |
13111/// | 2 | Xmm, Xmm, Xmm |
13112/// +---+---------------+
13113/// ```
13114pub trait Vcvtsd2shEmitter<A, B, C> {
13115    fn vcvtsd2sh(&mut self, op0: A, op1: B, op2: C);
13116}
13117
13118impl<'a> Vcvtsd2shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13119    fn vcvtsd2sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13120        self.emit(
13121            VCVTSD2SHRRR,
13122            op0.as_operand(),
13123            op1.as_operand(),
13124            op2.as_operand(),
13125            &NOREG,
13126        );
13127    }
13128}
13129
13130impl<'a> Vcvtsd2shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13131    fn vcvtsd2sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13132        self.emit(
13133            VCVTSD2SHRRM,
13134            op0.as_operand(),
13135            op1.as_operand(),
13136            op2.as_operand(),
13137            &NOREG,
13138        );
13139    }
13140}
13141
13142/// `VCVTSD2SH_ER`.
13143///
13144/// Supported operand variants:
13145///
13146/// ```text
13147/// +---+---------------+
13148/// | # | Operands      |
13149/// +---+---------------+
13150/// | 1 | Xmm, Xmm, Xmm |
13151/// +---+---------------+
13152/// ```
13153pub trait Vcvtsd2shErEmitter<A, B, C> {
13154    fn vcvtsd2sh_er(&mut self, op0: A, op1: B, op2: C);
13155}
13156
13157impl<'a> Vcvtsd2shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13158    fn vcvtsd2sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13159        self.emit(
13160            VCVTSD2SHRRR_ER,
13161            op0.as_operand(),
13162            op1.as_operand(),
13163            op2.as_operand(),
13164            &NOREG,
13165        );
13166    }
13167}
13168
13169/// `VCVTSD2SH_MASK`.
13170///
13171/// Supported operand variants:
13172///
13173/// ```text
13174/// +---+---------------+
13175/// | # | Operands      |
13176/// +---+---------------+
13177/// | 1 | Xmm, Xmm, Mem |
13178/// | 2 | Xmm, Xmm, Xmm |
13179/// +---+---------------+
13180/// ```
13181pub trait Vcvtsd2shMaskEmitter<A, B, C> {
13182    fn vcvtsd2sh_mask(&mut self, op0: A, op1: B, op2: C);
13183}
13184
13185impl<'a> Vcvtsd2shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13186    fn vcvtsd2sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13187        self.emit(
13188            VCVTSD2SHRRR_MASK,
13189            op0.as_operand(),
13190            op1.as_operand(),
13191            op2.as_operand(),
13192            &NOREG,
13193        );
13194    }
13195}
13196
13197impl<'a> Vcvtsd2shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13198    fn vcvtsd2sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13199        self.emit(
13200            VCVTSD2SHRRM_MASK,
13201            op0.as_operand(),
13202            op1.as_operand(),
13203            op2.as_operand(),
13204            &NOREG,
13205        );
13206    }
13207}
13208
13209/// `VCVTSD2SH_MASK_ER`.
13210///
13211/// Supported operand variants:
13212///
13213/// ```text
13214/// +---+---------------+
13215/// | # | Operands      |
13216/// +---+---------------+
13217/// | 1 | Xmm, Xmm, Xmm |
13218/// +---+---------------+
13219/// ```
13220pub trait Vcvtsd2shMaskErEmitter<A, B, C> {
13221    fn vcvtsd2sh_mask_er(&mut self, op0: A, op1: B, op2: C);
13222}
13223
13224impl<'a> Vcvtsd2shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13225    fn vcvtsd2sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13226        self.emit(
13227            VCVTSD2SHRRR_MASK_ER,
13228            op0.as_operand(),
13229            op1.as_operand(),
13230            op2.as_operand(),
13231            &NOREG,
13232        );
13233    }
13234}
13235
13236/// `VCVTSD2SH_MASKZ`.
13237///
13238/// Supported operand variants:
13239///
13240/// ```text
13241/// +---+---------------+
13242/// | # | Operands      |
13243/// +---+---------------+
13244/// | 1 | Xmm, Xmm, Mem |
13245/// | 2 | Xmm, Xmm, Xmm |
13246/// +---+---------------+
13247/// ```
13248pub trait Vcvtsd2shMaskzEmitter<A, B, C> {
13249    fn vcvtsd2sh_maskz(&mut self, op0: A, op1: B, op2: C);
13250}
13251
13252impl<'a> Vcvtsd2shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13253    fn vcvtsd2sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13254        self.emit(
13255            VCVTSD2SHRRR_MASKZ,
13256            op0.as_operand(),
13257            op1.as_operand(),
13258            op2.as_operand(),
13259            &NOREG,
13260        );
13261    }
13262}
13263
13264impl<'a> Vcvtsd2shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13265    fn vcvtsd2sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13266        self.emit(
13267            VCVTSD2SHRRM_MASKZ,
13268            op0.as_operand(),
13269            op1.as_operand(),
13270            op2.as_operand(),
13271            &NOREG,
13272        );
13273    }
13274}
13275
13276/// `VCVTSD2SH_MASKZ_ER`.
13277///
13278/// Supported operand variants:
13279///
13280/// ```text
13281/// +---+---------------+
13282/// | # | Operands      |
13283/// +---+---------------+
13284/// | 1 | Xmm, Xmm, Xmm |
13285/// +---+---------------+
13286/// ```
13287pub trait Vcvtsd2shMaskzErEmitter<A, B, C> {
13288    fn vcvtsd2sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
13289}
13290
13291impl<'a> Vcvtsd2shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13292    fn vcvtsd2sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13293        self.emit(
13294            VCVTSD2SHRRR_MASKZ_ER,
13295            op0.as_operand(),
13296            op1.as_operand(),
13297            op2.as_operand(),
13298            &NOREG,
13299        );
13300    }
13301}
13302
13303/// `VCVTSH2SD`.
13304///
13305/// Supported operand variants:
13306///
13307/// ```text
13308/// +---+---------------+
13309/// | # | Operands      |
13310/// +---+---------------+
13311/// | 1 | Xmm, Xmm, Mem |
13312/// | 2 | Xmm, Xmm, Xmm |
13313/// +---+---------------+
13314/// ```
13315pub trait Vcvtsh2sdEmitter<A, B, C> {
13316    fn vcvtsh2sd(&mut self, op0: A, op1: B, op2: C);
13317}
13318
13319impl<'a> Vcvtsh2sdEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13320    fn vcvtsh2sd(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13321        self.emit(
13322            VCVTSH2SDRRR,
13323            op0.as_operand(),
13324            op1.as_operand(),
13325            op2.as_operand(),
13326            &NOREG,
13327        );
13328    }
13329}
13330
13331impl<'a> Vcvtsh2sdEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13332    fn vcvtsh2sd(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13333        self.emit(
13334            VCVTSH2SDRRM,
13335            op0.as_operand(),
13336            op1.as_operand(),
13337            op2.as_operand(),
13338            &NOREG,
13339        );
13340    }
13341}
13342
13343/// `VCVTSH2SD_MASK`.
13344///
13345/// Supported operand variants:
13346///
13347/// ```text
13348/// +---+---------------+
13349/// | # | Operands      |
13350/// +---+---------------+
13351/// | 1 | Xmm, Xmm, Mem |
13352/// | 2 | Xmm, Xmm, Xmm |
13353/// +---+---------------+
13354/// ```
13355pub trait Vcvtsh2sdMaskEmitter<A, B, C> {
13356    fn vcvtsh2sd_mask(&mut self, op0: A, op1: B, op2: C);
13357}
13358
13359impl<'a> Vcvtsh2sdMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13360    fn vcvtsh2sd_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13361        self.emit(
13362            VCVTSH2SDRRR_MASK,
13363            op0.as_operand(),
13364            op1.as_operand(),
13365            op2.as_operand(),
13366            &NOREG,
13367        );
13368    }
13369}
13370
13371impl<'a> Vcvtsh2sdMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13372    fn vcvtsh2sd_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13373        self.emit(
13374            VCVTSH2SDRRM_MASK,
13375            op0.as_operand(),
13376            op1.as_operand(),
13377            op2.as_operand(),
13378            &NOREG,
13379        );
13380    }
13381}
13382
13383/// `VCVTSH2SD_MASK_SAE`.
13384///
13385/// Supported operand variants:
13386///
13387/// ```text
13388/// +---+---------------+
13389/// | # | Operands      |
13390/// +---+---------------+
13391/// | 1 | Xmm, Xmm, Xmm |
13392/// +---+---------------+
13393/// ```
13394pub trait Vcvtsh2sdMaskSaeEmitter<A, B, C> {
13395    fn vcvtsh2sd_mask_sae(&mut self, op0: A, op1: B, op2: C);
13396}
13397
13398impl<'a> Vcvtsh2sdMaskSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13399    fn vcvtsh2sd_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13400        self.emit(
13401            VCVTSH2SDRRR_MASK_SAE,
13402            op0.as_operand(),
13403            op1.as_operand(),
13404            op2.as_operand(),
13405            &NOREG,
13406        );
13407    }
13408}
13409
13410/// `VCVTSH2SD_MASKZ`.
13411///
13412/// Supported operand variants:
13413///
13414/// ```text
13415/// +---+---------------+
13416/// | # | Operands      |
13417/// +---+---------------+
13418/// | 1 | Xmm, Xmm, Mem |
13419/// | 2 | Xmm, Xmm, Xmm |
13420/// +---+---------------+
13421/// ```
13422pub trait Vcvtsh2sdMaskzEmitter<A, B, C> {
13423    fn vcvtsh2sd_maskz(&mut self, op0: A, op1: B, op2: C);
13424}
13425
13426impl<'a> Vcvtsh2sdMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13427    fn vcvtsh2sd_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13428        self.emit(
13429            VCVTSH2SDRRR_MASKZ,
13430            op0.as_operand(),
13431            op1.as_operand(),
13432            op2.as_operand(),
13433            &NOREG,
13434        );
13435    }
13436}
13437
13438impl<'a> Vcvtsh2sdMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13439    fn vcvtsh2sd_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13440        self.emit(
13441            VCVTSH2SDRRM_MASKZ,
13442            op0.as_operand(),
13443            op1.as_operand(),
13444            op2.as_operand(),
13445            &NOREG,
13446        );
13447    }
13448}
13449
13450/// `VCVTSH2SD_MASKZ_SAE`.
13451///
13452/// Supported operand variants:
13453///
13454/// ```text
13455/// +---+---------------+
13456/// | # | Operands      |
13457/// +---+---------------+
13458/// | 1 | Xmm, Xmm, Xmm |
13459/// +---+---------------+
13460/// ```
13461pub trait Vcvtsh2sdMaskzSaeEmitter<A, B, C> {
13462    fn vcvtsh2sd_maskz_sae(&mut self, op0: A, op1: B, op2: C);
13463}
13464
13465impl<'a> Vcvtsh2sdMaskzSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13466    fn vcvtsh2sd_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13467        self.emit(
13468            VCVTSH2SDRRR_MASKZ_SAE,
13469            op0.as_operand(),
13470            op1.as_operand(),
13471            op2.as_operand(),
13472            &NOREG,
13473        );
13474    }
13475}
13476
13477/// `VCVTSH2SD_SAE`.
13478///
13479/// Supported operand variants:
13480///
13481/// ```text
13482/// +---+---------------+
13483/// | # | Operands      |
13484/// +---+---------------+
13485/// | 1 | Xmm, Xmm, Xmm |
13486/// +---+---------------+
13487/// ```
13488pub trait Vcvtsh2sdSaeEmitter<A, B, C> {
13489    fn vcvtsh2sd_sae(&mut self, op0: A, op1: B, op2: C);
13490}
13491
13492impl<'a> Vcvtsh2sdSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13493    fn vcvtsh2sd_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13494        self.emit(
13495            VCVTSH2SDRRR_SAE,
13496            op0.as_operand(),
13497            op1.as_operand(),
13498            op2.as_operand(),
13499            &NOREG,
13500        );
13501    }
13502}
13503
13504/// `VCVTSH2SI`.
13505///
13506/// Supported operand variants:
13507///
13508/// ```text
13509/// +---+----------+
13510/// | # | Operands |
13511/// +---+----------+
13512/// | 1 | Gpd, Mem |
13513/// | 2 | Gpd, Xmm |
13514/// | 3 | Gpq, Mem |
13515/// | 4 | Gpq, Xmm |
13516/// +---+----------+
13517/// ```
13518pub trait Vcvtsh2siEmitter<A, B> {
13519    fn vcvtsh2si(&mut self, op0: A, op1: B);
13520}
13521
13522impl<'a> Vcvtsh2siEmitter<Gpd, Xmm> for Assembler<'a> {
13523    fn vcvtsh2si(&mut self, op0: Gpd, op1: Xmm) {
13524        self.emit(
13525            VCVTSH2SI32RR,
13526            op0.as_operand(),
13527            op1.as_operand(),
13528            &NOREG,
13529            &NOREG,
13530        );
13531    }
13532}
13533
13534impl<'a> Vcvtsh2siEmitter<Gpd, Mem> for Assembler<'a> {
13535    fn vcvtsh2si(&mut self, op0: Gpd, op1: Mem) {
13536        self.emit(
13537            VCVTSH2SI32RM,
13538            op0.as_operand(),
13539            op1.as_operand(),
13540            &NOREG,
13541            &NOREG,
13542        );
13543    }
13544}
13545
13546impl<'a> Vcvtsh2siEmitter<Gpq, Xmm> for Assembler<'a> {
13547    fn vcvtsh2si(&mut self, op0: Gpq, op1: Xmm) {
13548        self.emit(
13549            VCVTSH2SI64RR,
13550            op0.as_operand(),
13551            op1.as_operand(),
13552            &NOREG,
13553            &NOREG,
13554        );
13555    }
13556}
13557
13558impl<'a> Vcvtsh2siEmitter<Gpq, Mem> for Assembler<'a> {
13559    fn vcvtsh2si(&mut self, op0: Gpq, op1: Mem) {
13560        self.emit(
13561            VCVTSH2SI64RM,
13562            op0.as_operand(),
13563            op1.as_operand(),
13564            &NOREG,
13565            &NOREG,
13566        );
13567    }
13568}
13569
13570/// `VCVTSH2SI_ER`.
13571///
13572/// Supported operand variants:
13573///
13574/// ```text
13575/// +---+----------+
13576/// | # | Operands |
13577/// +---+----------+
13578/// | 1 | Gpd, Xmm |
13579/// | 2 | Gpq, Xmm |
13580/// +---+----------+
13581/// ```
13582pub trait Vcvtsh2siErEmitter<A, B> {
13583    fn vcvtsh2si_er(&mut self, op0: A, op1: B);
13584}
13585
13586impl<'a> Vcvtsh2siErEmitter<Gpd, Xmm> for Assembler<'a> {
13587    fn vcvtsh2si_er(&mut self, op0: Gpd, op1: Xmm) {
13588        self.emit(
13589            VCVTSH2SI32RR_ER,
13590            op0.as_operand(),
13591            op1.as_operand(),
13592            &NOREG,
13593            &NOREG,
13594        );
13595    }
13596}
13597
13598impl<'a> Vcvtsh2siErEmitter<Gpq, Xmm> for Assembler<'a> {
13599    fn vcvtsh2si_er(&mut self, op0: Gpq, op1: Xmm) {
13600        self.emit(
13601            VCVTSH2SI64RR_ER,
13602            op0.as_operand(),
13603            op1.as_operand(),
13604            &NOREG,
13605            &NOREG,
13606        );
13607    }
13608}
13609
13610/// `VCVTSH2SS`.
13611///
13612/// Supported operand variants:
13613///
13614/// ```text
13615/// +---+---------------+
13616/// | # | Operands      |
13617/// +---+---------------+
13618/// | 1 | Xmm, Xmm, Mem |
13619/// | 2 | Xmm, Xmm, Xmm |
13620/// +---+---------------+
13621/// ```
13622pub trait Vcvtsh2ssEmitter<A, B, C> {
13623    fn vcvtsh2ss(&mut self, op0: A, op1: B, op2: C);
13624}
13625
13626impl<'a> Vcvtsh2ssEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13627    fn vcvtsh2ss(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13628        self.emit(
13629            VCVTSH2SSRRR,
13630            op0.as_operand(),
13631            op1.as_operand(),
13632            op2.as_operand(),
13633            &NOREG,
13634        );
13635    }
13636}
13637
13638impl<'a> Vcvtsh2ssEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13639    fn vcvtsh2ss(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13640        self.emit(
13641            VCVTSH2SSRRM,
13642            op0.as_operand(),
13643            op1.as_operand(),
13644            op2.as_operand(),
13645            &NOREG,
13646        );
13647    }
13648}
13649
13650/// `VCVTSH2SS_MASK`.
13651///
13652/// Supported operand variants:
13653///
13654/// ```text
13655/// +---+---------------+
13656/// | # | Operands      |
13657/// +---+---------------+
13658/// | 1 | Xmm, Xmm, Mem |
13659/// | 2 | Xmm, Xmm, Xmm |
13660/// +---+---------------+
13661/// ```
13662pub trait Vcvtsh2ssMaskEmitter<A, B, C> {
13663    fn vcvtsh2ss_mask(&mut self, op0: A, op1: B, op2: C);
13664}
13665
13666impl<'a> Vcvtsh2ssMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13667    fn vcvtsh2ss_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13668        self.emit(
13669            VCVTSH2SSRRR_MASK,
13670            op0.as_operand(),
13671            op1.as_operand(),
13672            op2.as_operand(),
13673            &NOREG,
13674        );
13675    }
13676}
13677
13678impl<'a> Vcvtsh2ssMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13679    fn vcvtsh2ss_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13680        self.emit(
13681            VCVTSH2SSRRM_MASK,
13682            op0.as_operand(),
13683            op1.as_operand(),
13684            op2.as_operand(),
13685            &NOREG,
13686        );
13687    }
13688}
13689
13690/// `VCVTSH2SS_MASK_SAE`.
13691///
13692/// Supported operand variants:
13693///
13694/// ```text
13695/// +---+---------------+
13696/// | # | Operands      |
13697/// +---+---------------+
13698/// | 1 | Xmm, Xmm, Xmm |
13699/// +---+---------------+
13700/// ```
13701pub trait Vcvtsh2ssMaskSaeEmitter<A, B, C> {
13702    fn vcvtsh2ss_mask_sae(&mut self, op0: A, op1: B, op2: C);
13703}
13704
13705impl<'a> Vcvtsh2ssMaskSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13706    fn vcvtsh2ss_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13707        self.emit(
13708            VCVTSH2SSRRR_MASK_SAE,
13709            op0.as_operand(),
13710            op1.as_operand(),
13711            op2.as_operand(),
13712            &NOREG,
13713        );
13714    }
13715}
13716
13717/// `VCVTSH2SS_MASKZ`.
13718///
13719/// Supported operand variants:
13720///
13721/// ```text
13722/// +---+---------------+
13723/// | # | Operands      |
13724/// +---+---------------+
13725/// | 1 | Xmm, Xmm, Mem |
13726/// | 2 | Xmm, Xmm, Xmm |
13727/// +---+---------------+
13728/// ```
13729pub trait Vcvtsh2ssMaskzEmitter<A, B, C> {
13730    fn vcvtsh2ss_maskz(&mut self, op0: A, op1: B, op2: C);
13731}
13732
13733impl<'a> Vcvtsh2ssMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13734    fn vcvtsh2ss_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13735        self.emit(
13736            VCVTSH2SSRRR_MASKZ,
13737            op0.as_operand(),
13738            op1.as_operand(),
13739            op2.as_operand(),
13740            &NOREG,
13741        );
13742    }
13743}
13744
13745impl<'a> Vcvtsh2ssMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13746    fn vcvtsh2ss_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13747        self.emit(
13748            VCVTSH2SSRRM_MASKZ,
13749            op0.as_operand(),
13750            op1.as_operand(),
13751            op2.as_operand(),
13752            &NOREG,
13753        );
13754    }
13755}
13756
13757/// `VCVTSH2SS_MASKZ_SAE`.
13758///
13759/// Supported operand variants:
13760///
13761/// ```text
13762/// +---+---------------+
13763/// | # | Operands      |
13764/// +---+---------------+
13765/// | 1 | Xmm, Xmm, Xmm |
13766/// +---+---------------+
13767/// ```
13768pub trait Vcvtsh2ssMaskzSaeEmitter<A, B, C> {
13769    fn vcvtsh2ss_maskz_sae(&mut self, op0: A, op1: B, op2: C);
13770}
13771
13772impl<'a> Vcvtsh2ssMaskzSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13773    fn vcvtsh2ss_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13774        self.emit(
13775            VCVTSH2SSRRR_MASKZ_SAE,
13776            op0.as_operand(),
13777            op1.as_operand(),
13778            op2.as_operand(),
13779            &NOREG,
13780        );
13781    }
13782}
13783
13784/// `VCVTSH2SS_SAE`.
13785///
13786/// Supported operand variants:
13787///
13788/// ```text
13789/// +---+---------------+
13790/// | # | Operands      |
13791/// +---+---------------+
13792/// | 1 | Xmm, Xmm, Xmm |
13793/// +---+---------------+
13794/// ```
13795pub trait Vcvtsh2ssSaeEmitter<A, B, C> {
13796    fn vcvtsh2ss_sae(&mut self, op0: A, op1: B, op2: C);
13797}
13798
13799impl<'a> Vcvtsh2ssSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
13800    fn vcvtsh2ss_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
13801        self.emit(
13802            VCVTSH2SSRRR_SAE,
13803            op0.as_operand(),
13804            op1.as_operand(),
13805            op2.as_operand(),
13806            &NOREG,
13807        );
13808    }
13809}
13810
13811/// `VCVTSH2USI`.
13812///
13813/// Supported operand variants:
13814///
13815/// ```text
13816/// +---+----------+
13817/// | # | Operands |
13818/// +---+----------+
13819/// | 1 | Gpd, Mem |
13820/// | 2 | Gpd, Xmm |
13821/// | 3 | Gpq, Mem |
13822/// | 4 | Gpq, Xmm |
13823/// +---+----------+
13824/// ```
13825pub trait Vcvtsh2usiEmitter<A, B> {
13826    fn vcvtsh2usi(&mut self, op0: A, op1: B);
13827}
13828
13829impl<'a> Vcvtsh2usiEmitter<Gpd, Xmm> for Assembler<'a> {
13830    fn vcvtsh2usi(&mut self, op0: Gpd, op1: Xmm) {
13831        self.emit(
13832            VCVTSH2USI32RR,
13833            op0.as_operand(),
13834            op1.as_operand(),
13835            &NOREG,
13836            &NOREG,
13837        );
13838    }
13839}
13840
13841impl<'a> Vcvtsh2usiEmitter<Gpd, Mem> for Assembler<'a> {
13842    fn vcvtsh2usi(&mut self, op0: Gpd, op1: Mem) {
13843        self.emit(
13844            VCVTSH2USI32RM,
13845            op0.as_operand(),
13846            op1.as_operand(),
13847            &NOREG,
13848            &NOREG,
13849        );
13850    }
13851}
13852
13853impl<'a> Vcvtsh2usiEmitter<Gpq, Xmm> for Assembler<'a> {
13854    fn vcvtsh2usi(&mut self, op0: Gpq, op1: Xmm) {
13855        self.emit(
13856            VCVTSH2USI64RR,
13857            op0.as_operand(),
13858            op1.as_operand(),
13859            &NOREG,
13860            &NOREG,
13861        );
13862    }
13863}
13864
13865impl<'a> Vcvtsh2usiEmitter<Gpq, Mem> for Assembler<'a> {
13866    fn vcvtsh2usi(&mut self, op0: Gpq, op1: Mem) {
13867        self.emit(
13868            VCVTSH2USI64RM,
13869            op0.as_operand(),
13870            op1.as_operand(),
13871            &NOREG,
13872            &NOREG,
13873        );
13874    }
13875}
13876
13877/// `VCVTSH2USI_ER`.
13878///
13879/// Supported operand variants:
13880///
13881/// ```text
13882/// +---+----------+
13883/// | # | Operands |
13884/// +---+----------+
13885/// | 1 | Gpd, Xmm |
13886/// | 2 | Gpq, Xmm |
13887/// +---+----------+
13888/// ```
13889pub trait Vcvtsh2usiErEmitter<A, B> {
13890    fn vcvtsh2usi_er(&mut self, op0: A, op1: B);
13891}
13892
13893impl<'a> Vcvtsh2usiErEmitter<Gpd, Xmm> for Assembler<'a> {
13894    fn vcvtsh2usi_er(&mut self, op0: Gpd, op1: Xmm) {
13895        self.emit(
13896            VCVTSH2USI32RR_ER,
13897            op0.as_operand(),
13898            op1.as_operand(),
13899            &NOREG,
13900            &NOREG,
13901        );
13902    }
13903}
13904
13905impl<'a> Vcvtsh2usiErEmitter<Gpq, Xmm> for Assembler<'a> {
13906    fn vcvtsh2usi_er(&mut self, op0: Gpq, op1: Xmm) {
13907        self.emit(
13908            VCVTSH2USI64RR_ER,
13909            op0.as_operand(),
13910            op1.as_operand(),
13911            &NOREG,
13912            &NOREG,
13913        );
13914    }
13915}
13916
13917/// `VCVTSI2SH`.
13918///
13919/// Supported operand variants:
13920///
13921/// ```text
13922/// +---+---------------+
13923/// | # | Operands      |
13924/// +---+---------------+
13925/// | 1 | Xmm, Xmm, Gpd |
13926/// | 2 | Xmm, Xmm, Gpq |
13927/// | 3 | Xmm, Xmm, Mem |
13928/// +---+---------------+
13929/// ```
13930pub trait Vcvtsi2shEmitter<A, B, C> {
13931    fn vcvtsi2sh(&mut self, op0: A, op1: B, op2: C);
13932}
13933
13934impl<'a> Vcvtsi2shEmitter<Xmm, Xmm, Gpd> for Assembler<'a> {
13935    fn vcvtsi2sh(&mut self, op0: Xmm, op1: Xmm, op2: Gpd) {
13936        self.emit(
13937            VCVTSI2SH32RRR,
13938            op0.as_operand(),
13939            op1.as_operand(),
13940            op2.as_operand(),
13941            &NOREG,
13942        );
13943    }
13944}
13945
13946impl<'a> Vcvtsi2shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
13947    fn vcvtsi2sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
13948        self.emit(
13949            VCVTSI2SH32RRM,
13950            op0.as_operand(),
13951            op1.as_operand(),
13952            op2.as_operand(),
13953            &NOREG,
13954        );
13955    }
13956}
13957
13958impl<'a> Vcvtsi2shEmitter<Xmm, Xmm, Gpq> for Assembler<'a> {
13959    fn vcvtsi2sh(&mut self, op0: Xmm, op1: Xmm, op2: Gpq) {
13960        self.emit(
13961            VCVTSI2SH64RRR,
13962            op0.as_operand(),
13963            op1.as_operand(),
13964            op2.as_operand(),
13965            &NOREG,
13966        );
13967    }
13968}
13969
13970/// `VCVTSI2SH_ER`.
13971///
13972/// Supported operand variants:
13973///
13974/// ```text
13975/// +---+---------------+
13976/// | # | Operands      |
13977/// +---+---------------+
13978/// | 1 | Xmm, Xmm, Gpd |
13979/// | 2 | Xmm, Xmm, Gpq |
13980/// +---+---------------+
13981/// ```
13982pub trait Vcvtsi2shErEmitter<A, B, C> {
13983    fn vcvtsi2sh_er(&mut self, op0: A, op1: B, op2: C);
13984}
13985
13986impl<'a> Vcvtsi2shErEmitter<Xmm, Xmm, Gpd> for Assembler<'a> {
13987    fn vcvtsi2sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Gpd) {
13988        self.emit(
13989            VCVTSI2SH32RRR_ER,
13990            op0.as_operand(),
13991            op1.as_operand(),
13992            op2.as_operand(),
13993            &NOREG,
13994        );
13995    }
13996}
13997
13998impl<'a> Vcvtsi2shErEmitter<Xmm, Xmm, Gpq> for Assembler<'a> {
13999    fn vcvtsi2sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Gpq) {
14000        self.emit(
14001            VCVTSI2SH64RRR_ER,
14002            op0.as_operand(),
14003            op1.as_operand(),
14004            op2.as_operand(),
14005            &NOREG,
14006        );
14007    }
14008}
14009
14010/// `VCVTSS2SH`.
14011///
14012/// Supported operand variants:
14013///
14014/// ```text
14015/// +---+---------------+
14016/// | # | Operands      |
14017/// +---+---------------+
14018/// | 1 | Xmm, Xmm, Mem |
14019/// | 2 | Xmm, Xmm, Xmm |
14020/// +---+---------------+
14021/// ```
14022pub trait Vcvtss2shEmitter<A, B, C> {
14023    fn vcvtss2sh(&mut self, op0: A, op1: B, op2: C);
14024}
14025
14026impl<'a> Vcvtss2shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
14027    fn vcvtss2sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
14028        self.emit(
14029            VCVTSS2SHRRR,
14030            op0.as_operand(),
14031            op1.as_operand(),
14032            op2.as_operand(),
14033            &NOREG,
14034        );
14035    }
14036}
14037
14038impl<'a> Vcvtss2shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
14039    fn vcvtss2sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
14040        self.emit(
14041            VCVTSS2SHRRM,
14042            op0.as_operand(),
14043            op1.as_operand(),
14044            op2.as_operand(),
14045            &NOREG,
14046        );
14047    }
14048}
14049
14050/// `VCVTSS2SH_ER`.
14051///
14052/// Supported operand variants:
14053///
14054/// ```text
14055/// +---+---------------+
14056/// | # | Operands      |
14057/// +---+---------------+
14058/// | 1 | Xmm, Xmm, Xmm |
14059/// +---+---------------+
14060/// ```
14061pub trait Vcvtss2shErEmitter<A, B, C> {
14062    fn vcvtss2sh_er(&mut self, op0: A, op1: B, op2: C);
14063}
14064
14065impl<'a> Vcvtss2shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
14066    fn vcvtss2sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
14067        self.emit(
14068            VCVTSS2SHRRR_ER,
14069            op0.as_operand(),
14070            op1.as_operand(),
14071            op2.as_operand(),
14072            &NOREG,
14073        );
14074    }
14075}
14076
14077/// `VCVTSS2SH_MASK`.
14078///
14079/// Supported operand variants:
14080///
14081/// ```text
14082/// +---+---------------+
14083/// | # | Operands      |
14084/// +---+---------------+
14085/// | 1 | Xmm, Xmm, Mem |
14086/// | 2 | Xmm, Xmm, Xmm |
14087/// +---+---------------+
14088/// ```
14089pub trait Vcvtss2shMaskEmitter<A, B, C> {
14090    fn vcvtss2sh_mask(&mut self, op0: A, op1: B, op2: C);
14091}
14092
14093impl<'a> Vcvtss2shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
14094    fn vcvtss2sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
14095        self.emit(
14096            VCVTSS2SHRRR_MASK,
14097            op0.as_operand(),
14098            op1.as_operand(),
14099            op2.as_operand(),
14100            &NOREG,
14101        );
14102    }
14103}
14104
14105impl<'a> Vcvtss2shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
14106    fn vcvtss2sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
14107        self.emit(
14108            VCVTSS2SHRRM_MASK,
14109            op0.as_operand(),
14110            op1.as_operand(),
14111            op2.as_operand(),
14112            &NOREG,
14113        );
14114    }
14115}
14116
14117/// `VCVTSS2SH_MASK_ER`.
14118///
14119/// Supported operand variants:
14120///
14121/// ```text
14122/// +---+---------------+
14123/// | # | Operands      |
14124/// +---+---------------+
14125/// | 1 | Xmm, Xmm, Xmm |
14126/// +---+---------------+
14127/// ```
14128pub trait Vcvtss2shMaskErEmitter<A, B, C> {
14129    fn vcvtss2sh_mask_er(&mut self, op0: A, op1: B, op2: C);
14130}
14131
14132impl<'a> Vcvtss2shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
14133    fn vcvtss2sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
14134        self.emit(
14135            VCVTSS2SHRRR_MASK_ER,
14136            op0.as_operand(),
14137            op1.as_operand(),
14138            op2.as_operand(),
14139            &NOREG,
14140        );
14141    }
14142}
14143
14144/// `VCVTSS2SH_MASKZ`.
14145///
14146/// Supported operand variants:
14147///
14148/// ```text
14149/// +---+---------------+
14150/// | # | Operands      |
14151/// +---+---------------+
14152/// | 1 | Xmm, Xmm, Mem |
14153/// | 2 | Xmm, Xmm, Xmm |
14154/// +---+---------------+
14155/// ```
14156pub trait Vcvtss2shMaskzEmitter<A, B, C> {
14157    fn vcvtss2sh_maskz(&mut self, op0: A, op1: B, op2: C);
14158}
14159
14160impl<'a> Vcvtss2shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
14161    fn vcvtss2sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
14162        self.emit(
14163            VCVTSS2SHRRR_MASKZ,
14164            op0.as_operand(),
14165            op1.as_operand(),
14166            op2.as_operand(),
14167            &NOREG,
14168        );
14169    }
14170}
14171
14172impl<'a> Vcvtss2shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
14173    fn vcvtss2sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
14174        self.emit(
14175            VCVTSS2SHRRM_MASKZ,
14176            op0.as_operand(),
14177            op1.as_operand(),
14178            op2.as_operand(),
14179            &NOREG,
14180        );
14181    }
14182}
14183
14184/// `VCVTSS2SH_MASKZ_ER`.
14185///
14186/// Supported operand variants:
14187///
14188/// ```text
14189/// +---+---------------+
14190/// | # | Operands      |
14191/// +---+---------------+
14192/// | 1 | Xmm, Xmm, Xmm |
14193/// +---+---------------+
14194/// ```
14195pub trait Vcvtss2shMaskzErEmitter<A, B, C> {
14196    fn vcvtss2sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
14197}
14198
14199impl<'a> Vcvtss2shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
14200    fn vcvtss2sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
14201        self.emit(
14202            VCVTSS2SHRRR_MASKZ_ER,
14203            op0.as_operand(),
14204            op1.as_operand(),
14205            op2.as_operand(),
14206            &NOREG,
14207        );
14208    }
14209}
14210
14211/// `VCVTTPH2DQ`.
14212///
14213/// Supported operand variants:
14214///
14215/// ```text
14216/// +---+----------+
14217/// | # | Operands |
14218/// +---+----------+
14219/// | 1 | Xmm, Mem |
14220/// | 2 | Xmm, Xmm |
14221/// | 3 | Ymm, Mem |
14222/// | 4 | Ymm, Xmm |
14223/// | 5 | Zmm, Mem |
14224/// | 6 | Zmm, Ymm |
14225/// +---+----------+
14226/// ```
14227pub trait Vcvttph2dqEmitter<A, B> {
14228    fn vcvttph2dq(&mut self, op0: A, op1: B);
14229}
14230
14231impl<'a> Vcvttph2dqEmitter<Xmm, Xmm> for Assembler<'a> {
14232    fn vcvttph2dq(&mut self, op0: Xmm, op1: Xmm) {
14233        self.emit(
14234            VCVTTPH2DQ128RR,
14235            op0.as_operand(),
14236            op1.as_operand(),
14237            &NOREG,
14238            &NOREG,
14239        );
14240    }
14241}
14242
14243impl<'a> Vcvttph2dqEmitter<Xmm, Mem> for Assembler<'a> {
14244    fn vcvttph2dq(&mut self, op0: Xmm, op1: Mem) {
14245        self.emit(
14246            VCVTTPH2DQ128RM,
14247            op0.as_operand(),
14248            op1.as_operand(),
14249            &NOREG,
14250            &NOREG,
14251        );
14252    }
14253}
14254
14255impl<'a> Vcvttph2dqEmitter<Ymm, Xmm> for Assembler<'a> {
14256    fn vcvttph2dq(&mut self, op0: Ymm, op1: Xmm) {
14257        self.emit(
14258            VCVTTPH2DQ256RR,
14259            op0.as_operand(),
14260            op1.as_operand(),
14261            &NOREG,
14262            &NOREG,
14263        );
14264    }
14265}
14266
14267impl<'a> Vcvttph2dqEmitter<Ymm, Mem> for Assembler<'a> {
14268    fn vcvttph2dq(&mut self, op0: Ymm, op1: Mem) {
14269        self.emit(
14270            VCVTTPH2DQ256RM,
14271            op0.as_operand(),
14272            op1.as_operand(),
14273            &NOREG,
14274            &NOREG,
14275        );
14276    }
14277}
14278
14279impl<'a> Vcvttph2dqEmitter<Zmm, Ymm> for Assembler<'a> {
14280    fn vcvttph2dq(&mut self, op0: Zmm, op1: Ymm) {
14281        self.emit(
14282            VCVTTPH2DQ512RR,
14283            op0.as_operand(),
14284            op1.as_operand(),
14285            &NOREG,
14286            &NOREG,
14287        );
14288    }
14289}
14290
14291impl<'a> Vcvttph2dqEmitter<Zmm, Mem> for Assembler<'a> {
14292    fn vcvttph2dq(&mut self, op0: Zmm, op1: Mem) {
14293        self.emit(
14294            VCVTTPH2DQ512RM,
14295            op0.as_operand(),
14296            op1.as_operand(),
14297            &NOREG,
14298            &NOREG,
14299        );
14300    }
14301}
14302
14303/// `VCVTTPH2DQ_MASK`.
14304///
14305/// Supported operand variants:
14306///
14307/// ```text
14308/// +---+----------+
14309/// | # | Operands |
14310/// +---+----------+
14311/// | 1 | Xmm, Mem |
14312/// | 2 | Xmm, Xmm |
14313/// | 3 | Ymm, Mem |
14314/// | 4 | Ymm, Xmm |
14315/// | 5 | Zmm, Mem |
14316/// | 6 | Zmm, Ymm |
14317/// +---+----------+
14318/// ```
14319pub trait Vcvttph2dqMaskEmitter<A, B> {
14320    fn vcvttph2dq_mask(&mut self, op0: A, op1: B);
14321}
14322
14323impl<'a> Vcvttph2dqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
14324    fn vcvttph2dq_mask(&mut self, op0: Xmm, op1: Xmm) {
14325        self.emit(
14326            VCVTTPH2DQ128RR_MASK,
14327            op0.as_operand(),
14328            op1.as_operand(),
14329            &NOREG,
14330            &NOREG,
14331        );
14332    }
14333}
14334
14335impl<'a> Vcvttph2dqMaskEmitter<Xmm, Mem> for Assembler<'a> {
14336    fn vcvttph2dq_mask(&mut self, op0: Xmm, op1: Mem) {
14337        self.emit(
14338            VCVTTPH2DQ128RM_MASK,
14339            op0.as_operand(),
14340            op1.as_operand(),
14341            &NOREG,
14342            &NOREG,
14343        );
14344    }
14345}
14346
14347impl<'a> Vcvttph2dqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
14348    fn vcvttph2dq_mask(&mut self, op0: Ymm, op1: Xmm) {
14349        self.emit(
14350            VCVTTPH2DQ256RR_MASK,
14351            op0.as_operand(),
14352            op1.as_operand(),
14353            &NOREG,
14354            &NOREG,
14355        );
14356    }
14357}
14358
14359impl<'a> Vcvttph2dqMaskEmitter<Ymm, Mem> for Assembler<'a> {
14360    fn vcvttph2dq_mask(&mut self, op0: Ymm, op1: Mem) {
14361        self.emit(
14362            VCVTTPH2DQ256RM_MASK,
14363            op0.as_operand(),
14364            op1.as_operand(),
14365            &NOREG,
14366            &NOREG,
14367        );
14368    }
14369}
14370
14371impl<'a> Vcvttph2dqMaskEmitter<Zmm, Ymm> for Assembler<'a> {
14372    fn vcvttph2dq_mask(&mut self, op0: Zmm, op1: Ymm) {
14373        self.emit(
14374            VCVTTPH2DQ512RR_MASK,
14375            op0.as_operand(),
14376            op1.as_operand(),
14377            &NOREG,
14378            &NOREG,
14379        );
14380    }
14381}
14382
14383impl<'a> Vcvttph2dqMaskEmitter<Zmm, Mem> for Assembler<'a> {
14384    fn vcvttph2dq_mask(&mut self, op0: Zmm, op1: Mem) {
14385        self.emit(
14386            VCVTTPH2DQ512RM_MASK,
14387            op0.as_operand(),
14388            op1.as_operand(),
14389            &NOREG,
14390            &NOREG,
14391        );
14392    }
14393}
14394
14395/// `VCVTTPH2DQ_MASK_SAE`.
14396///
14397/// Supported operand variants:
14398///
14399/// ```text
14400/// +---+----------+
14401/// | # | Operands |
14402/// +---+----------+
14403/// | 1 | Zmm, Ymm |
14404/// +---+----------+
14405/// ```
14406pub trait Vcvttph2dqMaskSaeEmitter<A, B> {
14407    fn vcvttph2dq_mask_sae(&mut self, op0: A, op1: B);
14408}
14409
14410impl<'a> Vcvttph2dqMaskSaeEmitter<Zmm, Ymm> for Assembler<'a> {
14411    fn vcvttph2dq_mask_sae(&mut self, op0: Zmm, op1: Ymm) {
14412        self.emit(
14413            VCVTTPH2DQ512RR_MASK_SAE,
14414            op0.as_operand(),
14415            op1.as_operand(),
14416            &NOREG,
14417            &NOREG,
14418        );
14419    }
14420}
14421
14422/// `VCVTTPH2DQ_MASKZ`.
14423///
14424/// Supported operand variants:
14425///
14426/// ```text
14427/// +---+----------+
14428/// | # | Operands |
14429/// +---+----------+
14430/// | 1 | Xmm, Mem |
14431/// | 2 | Xmm, Xmm |
14432/// | 3 | Ymm, Mem |
14433/// | 4 | Ymm, Xmm |
14434/// | 5 | Zmm, Mem |
14435/// | 6 | Zmm, Ymm |
14436/// +---+----------+
14437/// ```
14438pub trait Vcvttph2dqMaskzEmitter<A, B> {
14439    fn vcvttph2dq_maskz(&mut self, op0: A, op1: B);
14440}
14441
14442impl<'a> Vcvttph2dqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
14443    fn vcvttph2dq_maskz(&mut self, op0: Xmm, op1: Xmm) {
14444        self.emit(
14445            VCVTTPH2DQ128RR_MASKZ,
14446            op0.as_operand(),
14447            op1.as_operand(),
14448            &NOREG,
14449            &NOREG,
14450        );
14451    }
14452}
14453
14454impl<'a> Vcvttph2dqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
14455    fn vcvttph2dq_maskz(&mut self, op0: Xmm, op1: Mem) {
14456        self.emit(
14457            VCVTTPH2DQ128RM_MASKZ,
14458            op0.as_operand(),
14459            op1.as_operand(),
14460            &NOREG,
14461            &NOREG,
14462        );
14463    }
14464}
14465
14466impl<'a> Vcvttph2dqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
14467    fn vcvttph2dq_maskz(&mut self, op0: Ymm, op1: Xmm) {
14468        self.emit(
14469            VCVTTPH2DQ256RR_MASKZ,
14470            op0.as_operand(),
14471            op1.as_operand(),
14472            &NOREG,
14473            &NOREG,
14474        );
14475    }
14476}
14477
14478impl<'a> Vcvttph2dqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
14479    fn vcvttph2dq_maskz(&mut self, op0: Ymm, op1: Mem) {
14480        self.emit(
14481            VCVTTPH2DQ256RM_MASKZ,
14482            op0.as_operand(),
14483            op1.as_operand(),
14484            &NOREG,
14485            &NOREG,
14486        );
14487    }
14488}
14489
14490impl<'a> Vcvttph2dqMaskzEmitter<Zmm, Ymm> for Assembler<'a> {
14491    fn vcvttph2dq_maskz(&mut self, op0: Zmm, op1: Ymm) {
14492        self.emit(
14493            VCVTTPH2DQ512RR_MASKZ,
14494            op0.as_operand(),
14495            op1.as_operand(),
14496            &NOREG,
14497            &NOREG,
14498        );
14499    }
14500}
14501
14502impl<'a> Vcvttph2dqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
14503    fn vcvttph2dq_maskz(&mut self, op0: Zmm, op1: Mem) {
14504        self.emit(
14505            VCVTTPH2DQ512RM_MASKZ,
14506            op0.as_operand(),
14507            op1.as_operand(),
14508            &NOREG,
14509            &NOREG,
14510        );
14511    }
14512}
14513
14514/// `VCVTTPH2DQ_MASKZ_SAE`.
14515///
14516/// Supported operand variants:
14517///
14518/// ```text
14519/// +---+----------+
14520/// | # | Operands |
14521/// +---+----------+
14522/// | 1 | Zmm, Ymm |
14523/// +---+----------+
14524/// ```
14525pub trait Vcvttph2dqMaskzSaeEmitter<A, B> {
14526    fn vcvttph2dq_maskz_sae(&mut self, op0: A, op1: B);
14527}
14528
14529impl<'a> Vcvttph2dqMaskzSaeEmitter<Zmm, Ymm> for Assembler<'a> {
14530    fn vcvttph2dq_maskz_sae(&mut self, op0: Zmm, op1: Ymm) {
14531        self.emit(
14532            VCVTTPH2DQ512RR_MASKZ_SAE,
14533            op0.as_operand(),
14534            op1.as_operand(),
14535            &NOREG,
14536            &NOREG,
14537        );
14538    }
14539}
14540
14541/// `VCVTTPH2DQ_SAE`.
14542///
14543/// Supported operand variants:
14544///
14545/// ```text
14546/// +---+----------+
14547/// | # | Operands |
14548/// +---+----------+
14549/// | 1 | Zmm, Ymm |
14550/// +---+----------+
14551/// ```
14552pub trait Vcvttph2dqSaeEmitter<A, B> {
14553    fn vcvttph2dq_sae(&mut self, op0: A, op1: B);
14554}
14555
14556impl<'a> Vcvttph2dqSaeEmitter<Zmm, Ymm> for Assembler<'a> {
14557    fn vcvttph2dq_sae(&mut self, op0: Zmm, op1: Ymm) {
14558        self.emit(
14559            VCVTTPH2DQ512RR_SAE,
14560            op0.as_operand(),
14561            op1.as_operand(),
14562            &NOREG,
14563            &NOREG,
14564        );
14565    }
14566}
14567
14568/// `VCVTTPH2QQ`.
14569///
14570/// Supported operand variants:
14571///
14572/// ```text
14573/// +---+----------+
14574/// | # | Operands |
14575/// +---+----------+
14576/// | 1 | Xmm, Mem |
14577/// | 2 | Xmm, Xmm |
14578/// | 3 | Ymm, Mem |
14579/// | 4 | Ymm, Xmm |
14580/// | 5 | Zmm, Mem |
14581/// | 6 | Zmm, Xmm |
14582/// +---+----------+
14583/// ```
14584pub trait Vcvttph2qqEmitter<A, B> {
14585    fn vcvttph2qq(&mut self, op0: A, op1: B);
14586}
14587
14588impl<'a> Vcvttph2qqEmitter<Xmm, Xmm> for Assembler<'a> {
14589    fn vcvttph2qq(&mut self, op0: Xmm, op1: Xmm) {
14590        self.emit(
14591            VCVTTPH2QQ128RR,
14592            op0.as_operand(),
14593            op1.as_operand(),
14594            &NOREG,
14595            &NOREG,
14596        );
14597    }
14598}
14599
14600impl<'a> Vcvttph2qqEmitter<Xmm, Mem> for Assembler<'a> {
14601    fn vcvttph2qq(&mut self, op0: Xmm, op1: Mem) {
14602        self.emit(
14603            VCVTTPH2QQ128RM,
14604            op0.as_operand(),
14605            op1.as_operand(),
14606            &NOREG,
14607            &NOREG,
14608        );
14609    }
14610}
14611
14612impl<'a> Vcvttph2qqEmitter<Ymm, Xmm> for Assembler<'a> {
14613    fn vcvttph2qq(&mut self, op0: Ymm, op1: Xmm) {
14614        self.emit(
14615            VCVTTPH2QQ256RR,
14616            op0.as_operand(),
14617            op1.as_operand(),
14618            &NOREG,
14619            &NOREG,
14620        );
14621    }
14622}
14623
14624impl<'a> Vcvttph2qqEmitter<Ymm, Mem> for Assembler<'a> {
14625    fn vcvttph2qq(&mut self, op0: Ymm, op1: Mem) {
14626        self.emit(
14627            VCVTTPH2QQ256RM,
14628            op0.as_operand(),
14629            op1.as_operand(),
14630            &NOREG,
14631            &NOREG,
14632        );
14633    }
14634}
14635
14636impl<'a> Vcvttph2qqEmitter<Zmm, Xmm> for Assembler<'a> {
14637    fn vcvttph2qq(&mut self, op0: Zmm, op1: Xmm) {
14638        self.emit(
14639            VCVTTPH2QQ512RR,
14640            op0.as_operand(),
14641            op1.as_operand(),
14642            &NOREG,
14643            &NOREG,
14644        );
14645    }
14646}
14647
14648impl<'a> Vcvttph2qqEmitter<Zmm, Mem> for Assembler<'a> {
14649    fn vcvttph2qq(&mut self, op0: Zmm, op1: Mem) {
14650        self.emit(
14651            VCVTTPH2QQ512RM,
14652            op0.as_operand(),
14653            op1.as_operand(),
14654            &NOREG,
14655            &NOREG,
14656        );
14657    }
14658}
14659
14660/// `VCVTTPH2QQ_MASK`.
14661///
14662/// Supported operand variants:
14663///
14664/// ```text
14665/// +---+----------+
14666/// | # | Operands |
14667/// +---+----------+
14668/// | 1 | Xmm, Mem |
14669/// | 2 | Xmm, Xmm |
14670/// | 3 | Ymm, Mem |
14671/// | 4 | Ymm, Xmm |
14672/// | 5 | Zmm, Mem |
14673/// | 6 | Zmm, Xmm |
14674/// +---+----------+
14675/// ```
14676pub trait Vcvttph2qqMaskEmitter<A, B> {
14677    fn vcvttph2qq_mask(&mut self, op0: A, op1: B);
14678}
14679
14680impl<'a> Vcvttph2qqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
14681    fn vcvttph2qq_mask(&mut self, op0: Xmm, op1: Xmm) {
14682        self.emit(
14683            VCVTTPH2QQ128RR_MASK,
14684            op0.as_operand(),
14685            op1.as_operand(),
14686            &NOREG,
14687            &NOREG,
14688        );
14689    }
14690}
14691
14692impl<'a> Vcvttph2qqMaskEmitter<Xmm, Mem> for Assembler<'a> {
14693    fn vcvttph2qq_mask(&mut self, op0: Xmm, op1: Mem) {
14694        self.emit(
14695            VCVTTPH2QQ128RM_MASK,
14696            op0.as_operand(),
14697            op1.as_operand(),
14698            &NOREG,
14699            &NOREG,
14700        );
14701    }
14702}
14703
14704impl<'a> Vcvttph2qqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
14705    fn vcvttph2qq_mask(&mut self, op0: Ymm, op1: Xmm) {
14706        self.emit(
14707            VCVTTPH2QQ256RR_MASK,
14708            op0.as_operand(),
14709            op1.as_operand(),
14710            &NOREG,
14711            &NOREG,
14712        );
14713    }
14714}
14715
14716impl<'a> Vcvttph2qqMaskEmitter<Ymm, Mem> for Assembler<'a> {
14717    fn vcvttph2qq_mask(&mut self, op0: Ymm, op1: Mem) {
14718        self.emit(
14719            VCVTTPH2QQ256RM_MASK,
14720            op0.as_operand(),
14721            op1.as_operand(),
14722            &NOREG,
14723            &NOREG,
14724        );
14725    }
14726}
14727
14728impl<'a> Vcvttph2qqMaskEmitter<Zmm, Xmm> for Assembler<'a> {
14729    fn vcvttph2qq_mask(&mut self, op0: Zmm, op1: Xmm) {
14730        self.emit(
14731            VCVTTPH2QQ512RR_MASK,
14732            op0.as_operand(),
14733            op1.as_operand(),
14734            &NOREG,
14735            &NOREG,
14736        );
14737    }
14738}
14739
14740impl<'a> Vcvttph2qqMaskEmitter<Zmm, Mem> for Assembler<'a> {
14741    fn vcvttph2qq_mask(&mut self, op0: Zmm, op1: Mem) {
14742        self.emit(
14743            VCVTTPH2QQ512RM_MASK,
14744            op0.as_operand(),
14745            op1.as_operand(),
14746            &NOREG,
14747            &NOREG,
14748        );
14749    }
14750}
14751
14752/// `VCVTTPH2QQ_MASK_SAE`.
14753///
14754/// Supported operand variants:
14755///
14756/// ```text
14757/// +---+----------+
14758/// | # | Operands |
14759/// +---+----------+
14760/// | 1 | Zmm, Xmm |
14761/// +---+----------+
14762/// ```
14763pub trait Vcvttph2qqMaskSaeEmitter<A, B> {
14764    fn vcvttph2qq_mask_sae(&mut self, op0: A, op1: B);
14765}
14766
14767impl<'a> Vcvttph2qqMaskSaeEmitter<Zmm, Xmm> for Assembler<'a> {
14768    fn vcvttph2qq_mask_sae(&mut self, op0: Zmm, op1: Xmm) {
14769        self.emit(
14770            VCVTTPH2QQ512RR_MASK_SAE,
14771            op0.as_operand(),
14772            op1.as_operand(),
14773            &NOREG,
14774            &NOREG,
14775        );
14776    }
14777}
14778
14779/// `VCVTTPH2QQ_MASKZ`.
14780///
14781/// Supported operand variants:
14782///
14783/// ```text
14784/// +---+----------+
14785/// | # | Operands |
14786/// +---+----------+
14787/// | 1 | Xmm, Mem |
14788/// | 2 | Xmm, Xmm |
14789/// | 3 | Ymm, Mem |
14790/// | 4 | Ymm, Xmm |
14791/// | 5 | Zmm, Mem |
14792/// | 6 | Zmm, Xmm |
14793/// +---+----------+
14794/// ```
14795pub trait Vcvttph2qqMaskzEmitter<A, B> {
14796    fn vcvttph2qq_maskz(&mut self, op0: A, op1: B);
14797}
14798
14799impl<'a> Vcvttph2qqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
14800    fn vcvttph2qq_maskz(&mut self, op0: Xmm, op1: Xmm) {
14801        self.emit(
14802            VCVTTPH2QQ128RR_MASKZ,
14803            op0.as_operand(),
14804            op1.as_operand(),
14805            &NOREG,
14806            &NOREG,
14807        );
14808    }
14809}
14810
14811impl<'a> Vcvttph2qqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
14812    fn vcvttph2qq_maskz(&mut self, op0: Xmm, op1: Mem) {
14813        self.emit(
14814            VCVTTPH2QQ128RM_MASKZ,
14815            op0.as_operand(),
14816            op1.as_operand(),
14817            &NOREG,
14818            &NOREG,
14819        );
14820    }
14821}
14822
14823impl<'a> Vcvttph2qqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
14824    fn vcvttph2qq_maskz(&mut self, op0: Ymm, op1: Xmm) {
14825        self.emit(
14826            VCVTTPH2QQ256RR_MASKZ,
14827            op0.as_operand(),
14828            op1.as_operand(),
14829            &NOREG,
14830            &NOREG,
14831        );
14832    }
14833}
14834
14835impl<'a> Vcvttph2qqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
14836    fn vcvttph2qq_maskz(&mut self, op0: Ymm, op1: Mem) {
14837        self.emit(
14838            VCVTTPH2QQ256RM_MASKZ,
14839            op0.as_operand(),
14840            op1.as_operand(),
14841            &NOREG,
14842            &NOREG,
14843        );
14844    }
14845}
14846
14847impl<'a> Vcvttph2qqMaskzEmitter<Zmm, Xmm> for Assembler<'a> {
14848    fn vcvttph2qq_maskz(&mut self, op0: Zmm, op1: Xmm) {
14849        self.emit(
14850            VCVTTPH2QQ512RR_MASKZ,
14851            op0.as_operand(),
14852            op1.as_operand(),
14853            &NOREG,
14854            &NOREG,
14855        );
14856    }
14857}
14858
14859impl<'a> Vcvttph2qqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
14860    fn vcvttph2qq_maskz(&mut self, op0: Zmm, op1: Mem) {
14861        self.emit(
14862            VCVTTPH2QQ512RM_MASKZ,
14863            op0.as_operand(),
14864            op1.as_operand(),
14865            &NOREG,
14866            &NOREG,
14867        );
14868    }
14869}
14870
14871/// `VCVTTPH2QQ_MASKZ_SAE`.
14872///
14873/// Supported operand variants:
14874///
14875/// ```text
14876/// +---+----------+
14877/// | # | Operands |
14878/// +---+----------+
14879/// | 1 | Zmm, Xmm |
14880/// +---+----------+
14881/// ```
14882pub trait Vcvttph2qqMaskzSaeEmitter<A, B> {
14883    fn vcvttph2qq_maskz_sae(&mut self, op0: A, op1: B);
14884}
14885
14886impl<'a> Vcvttph2qqMaskzSaeEmitter<Zmm, Xmm> for Assembler<'a> {
14887    fn vcvttph2qq_maskz_sae(&mut self, op0: Zmm, op1: Xmm) {
14888        self.emit(
14889            VCVTTPH2QQ512RR_MASKZ_SAE,
14890            op0.as_operand(),
14891            op1.as_operand(),
14892            &NOREG,
14893            &NOREG,
14894        );
14895    }
14896}
14897
14898/// `VCVTTPH2QQ_SAE`.
14899///
14900/// Supported operand variants:
14901///
14902/// ```text
14903/// +---+----------+
14904/// | # | Operands |
14905/// +---+----------+
14906/// | 1 | Zmm, Xmm |
14907/// +---+----------+
14908/// ```
14909pub trait Vcvttph2qqSaeEmitter<A, B> {
14910    fn vcvttph2qq_sae(&mut self, op0: A, op1: B);
14911}
14912
14913impl<'a> Vcvttph2qqSaeEmitter<Zmm, Xmm> for Assembler<'a> {
14914    fn vcvttph2qq_sae(&mut self, op0: Zmm, op1: Xmm) {
14915        self.emit(
14916            VCVTTPH2QQ512RR_SAE,
14917            op0.as_operand(),
14918            op1.as_operand(),
14919            &NOREG,
14920            &NOREG,
14921        );
14922    }
14923}
14924
14925/// `VCVTTPH2UDQ`.
14926///
14927/// Supported operand variants:
14928///
14929/// ```text
14930/// +---+----------+
14931/// | # | Operands |
14932/// +---+----------+
14933/// | 1 | Xmm, Mem |
14934/// | 2 | Xmm, Xmm |
14935/// | 3 | Ymm, Mem |
14936/// | 4 | Ymm, Xmm |
14937/// | 5 | Zmm, Mem |
14938/// | 6 | Zmm, Ymm |
14939/// +---+----------+
14940/// ```
14941pub trait Vcvttph2udqEmitter<A, B> {
14942    fn vcvttph2udq(&mut self, op0: A, op1: B);
14943}
14944
14945impl<'a> Vcvttph2udqEmitter<Xmm, Xmm> for Assembler<'a> {
14946    fn vcvttph2udq(&mut self, op0: Xmm, op1: Xmm) {
14947        self.emit(
14948            VCVTTPH2UDQ128RR,
14949            op0.as_operand(),
14950            op1.as_operand(),
14951            &NOREG,
14952            &NOREG,
14953        );
14954    }
14955}
14956
14957impl<'a> Vcvttph2udqEmitter<Xmm, Mem> for Assembler<'a> {
14958    fn vcvttph2udq(&mut self, op0: Xmm, op1: Mem) {
14959        self.emit(
14960            VCVTTPH2UDQ128RM,
14961            op0.as_operand(),
14962            op1.as_operand(),
14963            &NOREG,
14964            &NOREG,
14965        );
14966    }
14967}
14968
14969impl<'a> Vcvttph2udqEmitter<Ymm, Xmm> for Assembler<'a> {
14970    fn vcvttph2udq(&mut self, op0: Ymm, op1: Xmm) {
14971        self.emit(
14972            VCVTTPH2UDQ256RR,
14973            op0.as_operand(),
14974            op1.as_operand(),
14975            &NOREG,
14976            &NOREG,
14977        );
14978    }
14979}
14980
14981impl<'a> Vcvttph2udqEmitter<Ymm, Mem> for Assembler<'a> {
14982    fn vcvttph2udq(&mut self, op0: Ymm, op1: Mem) {
14983        self.emit(
14984            VCVTTPH2UDQ256RM,
14985            op0.as_operand(),
14986            op1.as_operand(),
14987            &NOREG,
14988            &NOREG,
14989        );
14990    }
14991}
14992
14993impl<'a> Vcvttph2udqEmitter<Zmm, Ymm> for Assembler<'a> {
14994    fn vcvttph2udq(&mut self, op0: Zmm, op1: Ymm) {
14995        self.emit(
14996            VCVTTPH2UDQ512RR,
14997            op0.as_operand(),
14998            op1.as_operand(),
14999            &NOREG,
15000            &NOREG,
15001        );
15002    }
15003}
15004
15005impl<'a> Vcvttph2udqEmitter<Zmm, Mem> for Assembler<'a> {
15006    fn vcvttph2udq(&mut self, op0: Zmm, op1: Mem) {
15007        self.emit(
15008            VCVTTPH2UDQ512RM,
15009            op0.as_operand(),
15010            op1.as_operand(),
15011            &NOREG,
15012            &NOREG,
15013        );
15014    }
15015}
15016
15017/// `VCVTTPH2UDQ_MASK`.
15018///
15019/// Supported operand variants:
15020///
15021/// ```text
15022/// +---+----------+
15023/// | # | Operands |
15024/// +---+----------+
15025/// | 1 | Xmm, Mem |
15026/// | 2 | Xmm, Xmm |
15027/// | 3 | Ymm, Mem |
15028/// | 4 | Ymm, Xmm |
15029/// | 5 | Zmm, Mem |
15030/// | 6 | Zmm, Ymm |
15031/// +---+----------+
15032/// ```
15033pub trait Vcvttph2udqMaskEmitter<A, B> {
15034    fn vcvttph2udq_mask(&mut self, op0: A, op1: B);
15035}
15036
15037impl<'a> Vcvttph2udqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
15038    fn vcvttph2udq_mask(&mut self, op0: Xmm, op1: Xmm) {
15039        self.emit(
15040            VCVTTPH2UDQ128RR_MASK,
15041            op0.as_operand(),
15042            op1.as_operand(),
15043            &NOREG,
15044            &NOREG,
15045        );
15046    }
15047}
15048
15049impl<'a> Vcvttph2udqMaskEmitter<Xmm, Mem> for Assembler<'a> {
15050    fn vcvttph2udq_mask(&mut self, op0: Xmm, op1: Mem) {
15051        self.emit(
15052            VCVTTPH2UDQ128RM_MASK,
15053            op0.as_operand(),
15054            op1.as_operand(),
15055            &NOREG,
15056            &NOREG,
15057        );
15058    }
15059}
15060
15061impl<'a> Vcvttph2udqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
15062    fn vcvttph2udq_mask(&mut self, op0: Ymm, op1: Xmm) {
15063        self.emit(
15064            VCVTTPH2UDQ256RR_MASK,
15065            op0.as_operand(),
15066            op1.as_operand(),
15067            &NOREG,
15068            &NOREG,
15069        );
15070    }
15071}
15072
15073impl<'a> Vcvttph2udqMaskEmitter<Ymm, Mem> for Assembler<'a> {
15074    fn vcvttph2udq_mask(&mut self, op0: Ymm, op1: Mem) {
15075        self.emit(
15076            VCVTTPH2UDQ256RM_MASK,
15077            op0.as_operand(),
15078            op1.as_operand(),
15079            &NOREG,
15080            &NOREG,
15081        );
15082    }
15083}
15084
15085impl<'a> Vcvttph2udqMaskEmitter<Zmm, Ymm> for Assembler<'a> {
15086    fn vcvttph2udq_mask(&mut self, op0: Zmm, op1: Ymm) {
15087        self.emit(
15088            VCVTTPH2UDQ512RR_MASK,
15089            op0.as_operand(),
15090            op1.as_operand(),
15091            &NOREG,
15092            &NOREG,
15093        );
15094    }
15095}
15096
15097impl<'a> Vcvttph2udqMaskEmitter<Zmm, Mem> for Assembler<'a> {
15098    fn vcvttph2udq_mask(&mut self, op0: Zmm, op1: Mem) {
15099        self.emit(
15100            VCVTTPH2UDQ512RM_MASK,
15101            op0.as_operand(),
15102            op1.as_operand(),
15103            &NOREG,
15104            &NOREG,
15105        );
15106    }
15107}
15108
15109/// `VCVTTPH2UDQ_MASK_SAE`.
15110///
15111/// Supported operand variants:
15112///
15113/// ```text
15114/// +---+----------+
15115/// | # | Operands |
15116/// +---+----------+
15117/// | 1 | Zmm, Ymm |
15118/// +---+----------+
15119/// ```
15120pub trait Vcvttph2udqMaskSaeEmitter<A, B> {
15121    fn vcvttph2udq_mask_sae(&mut self, op0: A, op1: B);
15122}
15123
15124impl<'a> Vcvttph2udqMaskSaeEmitter<Zmm, Ymm> for Assembler<'a> {
15125    fn vcvttph2udq_mask_sae(&mut self, op0: Zmm, op1: Ymm) {
15126        self.emit(
15127            VCVTTPH2UDQ512RR_MASK_SAE,
15128            op0.as_operand(),
15129            op1.as_operand(),
15130            &NOREG,
15131            &NOREG,
15132        );
15133    }
15134}
15135
15136/// `VCVTTPH2UDQ_MASKZ`.
15137///
15138/// Supported operand variants:
15139///
15140/// ```text
15141/// +---+----------+
15142/// | # | Operands |
15143/// +---+----------+
15144/// | 1 | Xmm, Mem |
15145/// | 2 | Xmm, Xmm |
15146/// | 3 | Ymm, Mem |
15147/// | 4 | Ymm, Xmm |
15148/// | 5 | Zmm, Mem |
15149/// | 6 | Zmm, Ymm |
15150/// +---+----------+
15151/// ```
15152pub trait Vcvttph2udqMaskzEmitter<A, B> {
15153    fn vcvttph2udq_maskz(&mut self, op0: A, op1: B);
15154}
15155
15156impl<'a> Vcvttph2udqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
15157    fn vcvttph2udq_maskz(&mut self, op0: Xmm, op1: Xmm) {
15158        self.emit(
15159            VCVTTPH2UDQ128RR_MASKZ,
15160            op0.as_operand(),
15161            op1.as_operand(),
15162            &NOREG,
15163            &NOREG,
15164        );
15165    }
15166}
15167
15168impl<'a> Vcvttph2udqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
15169    fn vcvttph2udq_maskz(&mut self, op0: Xmm, op1: Mem) {
15170        self.emit(
15171            VCVTTPH2UDQ128RM_MASKZ,
15172            op0.as_operand(),
15173            op1.as_operand(),
15174            &NOREG,
15175            &NOREG,
15176        );
15177    }
15178}
15179
15180impl<'a> Vcvttph2udqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
15181    fn vcvttph2udq_maskz(&mut self, op0: Ymm, op1: Xmm) {
15182        self.emit(
15183            VCVTTPH2UDQ256RR_MASKZ,
15184            op0.as_operand(),
15185            op1.as_operand(),
15186            &NOREG,
15187            &NOREG,
15188        );
15189    }
15190}
15191
15192impl<'a> Vcvttph2udqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
15193    fn vcvttph2udq_maskz(&mut self, op0: Ymm, op1: Mem) {
15194        self.emit(
15195            VCVTTPH2UDQ256RM_MASKZ,
15196            op0.as_operand(),
15197            op1.as_operand(),
15198            &NOREG,
15199            &NOREG,
15200        );
15201    }
15202}
15203
15204impl<'a> Vcvttph2udqMaskzEmitter<Zmm, Ymm> for Assembler<'a> {
15205    fn vcvttph2udq_maskz(&mut self, op0: Zmm, op1: Ymm) {
15206        self.emit(
15207            VCVTTPH2UDQ512RR_MASKZ,
15208            op0.as_operand(),
15209            op1.as_operand(),
15210            &NOREG,
15211            &NOREG,
15212        );
15213    }
15214}
15215
15216impl<'a> Vcvttph2udqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
15217    fn vcvttph2udq_maskz(&mut self, op0: Zmm, op1: Mem) {
15218        self.emit(
15219            VCVTTPH2UDQ512RM_MASKZ,
15220            op0.as_operand(),
15221            op1.as_operand(),
15222            &NOREG,
15223            &NOREG,
15224        );
15225    }
15226}
15227
15228/// `VCVTTPH2UDQ_MASKZ_SAE`.
15229///
15230/// Supported operand variants:
15231///
15232/// ```text
15233/// +---+----------+
15234/// | # | Operands |
15235/// +---+----------+
15236/// | 1 | Zmm, Ymm |
15237/// +---+----------+
15238/// ```
15239pub trait Vcvttph2udqMaskzSaeEmitter<A, B> {
15240    fn vcvttph2udq_maskz_sae(&mut self, op0: A, op1: B);
15241}
15242
15243impl<'a> Vcvttph2udqMaskzSaeEmitter<Zmm, Ymm> for Assembler<'a> {
15244    fn vcvttph2udq_maskz_sae(&mut self, op0: Zmm, op1: Ymm) {
15245        self.emit(
15246            VCVTTPH2UDQ512RR_MASKZ_SAE,
15247            op0.as_operand(),
15248            op1.as_operand(),
15249            &NOREG,
15250            &NOREG,
15251        );
15252    }
15253}
15254
15255/// `VCVTTPH2UDQ_SAE`.
15256///
15257/// Supported operand variants:
15258///
15259/// ```text
15260/// +---+----------+
15261/// | # | Operands |
15262/// +---+----------+
15263/// | 1 | Zmm, Ymm |
15264/// +---+----------+
15265/// ```
15266pub trait Vcvttph2udqSaeEmitter<A, B> {
15267    fn vcvttph2udq_sae(&mut self, op0: A, op1: B);
15268}
15269
15270impl<'a> Vcvttph2udqSaeEmitter<Zmm, Ymm> for Assembler<'a> {
15271    fn vcvttph2udq_sae(&mut self, op0: Zmm, op1: Ymm) {
15272        self.emit(
15273            VCVTTPH2UDQ512RR_SAE,
15274            op0.as_operand(),
15275            op1.as_operand(),
15276            &NOREG,
15277            &NOREG,
15278        );
15279    }
15280}
15281
15282/// `VCVTTPH2UQQ`.
15283///
15284/// Supported operand variants:
15285///
15286/// ```text
15287/// +---+----------+
15288/// | # | Operands |
15289/// +---+----------+
15290/// | 1 | Xmm, Mem |
15291/// | 2 | Xmm, Xmm |
15292/// | 3 | Ymm, Mem |
15293/// | 4 | Ymm, Xmm |
15294/// | 5 | Zmm, Mem |
15295/// | 6 | Zmm, Xmm |
15296/// +---+----------+
15297/// ```
15298pub trait Vcvttph2uqqEmitter<A, B> {
15299    fn vcvttph2uqq(&mut self, op0: A, op1: B);
15300}
15301
15302impl<'a> Vcvttph2uqqEmitter<Xmm, Xmm> for Assembler<'a> {
15303    fn vcvttph2uqq(&mut self, op0: Xmm, op1: Xmm) {
15304        self.emit(
15305            VCVTTPH2UQQ128RR,
15306            op0.as_operand(),
15307            op1.as_operand(),
15308            &NOREG,
15309            &NOREG,
15310        );
15311    }
15312}
15313
15314impl<'a> Vcvttph2uqqEmitter<Xmm, Mem> for Assembler<'a> {
15315    fn vcvttph2uqq(&mut self, op0: Xmm, op1: Mem) {
15316        self.emit(
15317            VCVTTPH2UQQ128RM,
15318            op0.as_operand(),
15319            op1.as_operand(),
15320            &NOREG,
15321            &NOREG,
15322        );
15323    }
15324}
15325
15326impl<'a> Vcvttph2uqqEmitter<Ymm, Xmm> for Assembler<'a> {
15327    fn vcvttph2uqq(&mut self, op0: Ymm, op1: Xmm) {
15328        self.emit(
15329            VCVTTPH2UQQ256RR,
15330            op0.as_operand(),
15331            op1.as_operand(),
15332            &NOREG,
15333            &NOREG,
15334        );
15335    }
15336}
15337
15338impl<'a> Vcvttph2uqqEmitter<Ymm, Mem> for Assembler<'a> {
15339    fn vcvttph2uqq(&mut self, op0: Ymm, op1: Mem) {
15340        self.emit(
15341            VCVTTPH2UQQ256RM,
15342            op0.as_operand(),
15343            op1.as_operand(),
15344            &NOREG,
15345            &NOREG,
15346        );
15347    }
15348}
15349
15350impl<'a> Vcvttph2uqqEmitter<Zmm, Xmm> for Assembler<'a> {
15351    fn vcvttph2uqq(&mut self, op0: Zmm, op1: Xmm) {
15352        self.emit(
15353            VCVTTPH2UQQ512RR,
15354            op0.as_operand(),
15355            op1.as_operand(),
15356            &NOREG,
15357            &NOREG,
15358        );
15359    }
15360}
15361
15362impl<'a> Vcvttph2uqqEmitter<Zmm, Mem> for Assembler<'a> {
15363    fn vcvttph2uqq(&mut self, op0: Zmm, op1: Mem) {
15364        self.emit(
15365            VCVTTPH2UQQ512RM,
15366            op0.as_operand(),
15367            op1.as_operand(),
15368            &NOREG,
15369            &NOREG,
15370        );
15371    }
15372}
15373
15374/// `VCVTTPH2UQQ_MASK`.
15375///
15376/// Supported operand variants:
15377///
15378/// ```text
15379/// +---+----------+
15380/// | # | Operands |
15381/// +---+----------+
15382/// | 1 | Xmm, Mem |
15383/// | 2 | Xmm, Xmm |
15384/// | 3 | Ymm, Mem |
15385/// | 4 | Ymm, Xmm |
15386/// | 5 | Zmm, Mem |
15387/// | 6 | Zmm, Xmm |
15388/// +---+----------+
15389/// ```
15390pub trait Vcvttph2uqqMaskEmitter<A, B> {
15391    fn vcvttph2uqq_mask(&mut self, op0: A, op1: B);
15392}
15393
15394impl<'a> Vcvttph2uqqMaskEmitter<Xmm, Xmm> for Assembler<'a> {
15395    fn vcvttph2uqq_mask(&mut self, op0: Xmm, op1: Xmm) {
15396        self.emit(
15397            VCVTTPH2UQQ128RR_MASK,
15398            op0.as_operand(),
15399            op1.as_operand(),
15400            &NOREG,
15401            &NOREG,
15402        );
15403    }
15404}
15405
15406impl<'a> Vcvttph2uqqMaskEmitter<Xmm, Mem> for Assembler<'a> {
15407    fn vcvttph2uqq_mask(&mut self, op0: Xmm, op1: Mem) {
15408        self.emit(
15409            VCVTTPH2UQQ128RM_MASK,
15410            op0.as_operand(),
15411            op1.as_operand(),
15412            &NOREG,
15413            &NOREG,
15414        );
15415    }
15416}
15417
15418impl<'a> Vcvttph2uqqMaskEmitter<Ymm, Xmm> for Assembler<'a> {
15419    fn vcvttph2uqq_mask(&mut self, op0: Ymm, op1: Xmm) {
15420        self.emit(
15421            VCVTTPH2UQQ256RR_MASK,
15422            op0.as_operand(),
15423            op1.as_operand(),
15424            &NOREG,
15425            &NOREG,
15426        );
15427    }
15428}
15429
15430impl<'a> Vcvttph2uqqMaskEmitter<Ymm, Mem> for Assembler<'a> {
15431    fn vcvttph2uqq_mask(&mut self, op0: Ymm, op1: Mem) {
15432        self.emit(
15433            VCVTTPH2UQQ256RM_MASK,
15434            op0.as_operand(),
15435            op1.as_operand(),
15436            &NOREG,
15437            &NOREG,
15438        );
15439    }
15440}
15441
15442impl<'a> Vcvttph2uqqMaskEmitter<Zmm, Xmm> for Assembler<'a> {
15443    fn vcvttph2uqq_mask(&mut self, op0: Zmm, op1: Xmm) {
15444        self.emit(
15445            VCVTTPH2UQQ512RR_MASK,
15446            op0.as_operand(),
15447            op1.as_operand(),
15448            &NOREG,
15449            &NOREG,
15450        );
15451    }
15452}
15453
15454impl<'a> Vcvttph2uqqMaskEmitter<Zmm, Mem> for Assembler<'a> {
15455    fn vcvttph2uqq_mask(&mut self, op0: Zmm, op1: Mem) {
15456        self.emit(
15457            VCVTTPH2UQQ512RM_MASK,
15458            op0.as_operand(),
15459            op1.as_operand(),
15460            &NOREG,
15461            &NOREG,
15462        );
15463    }
15464}
15465
15466/// `VCVTTPH2UQQ_MASK_SAE`.
15467///
15468/// Supported operand variants:
15469///
15470/// ```text
15471/// +---+----------+
15472/// | # | Operands |
15473/// +---+----------+
15474/// | 1 | Zmm, Xmm |
15475/// +---+----------+
15476/// ```
15477pub trait Vcvttph2uqqMaskSaeEmitter<A, B> {
15478    fn vcvttph2uqq_mask_sae(&mut self, op0: A, op1: B);
15479}
15480
15481impl<'a> Vcvttph2uqqMaskSaeEmitter<Zmm, Xmm> for Assembler<'a> {
15482    fn vcvttph2uqq_mask_sae(&mut self, op0: Zmm, op1: Xmm) {
15483        self.emit(
15484            VCVTTPH2UQQ512RR_MASK_SAE,
15485            op0.as_operand(),
15486            op1.as_operand(),
15487            &NOREG,
15488            &NOREG,
15489        );
15490    }
15491}
15492
15493/// `VCVTTPH2UQQ_MASKZ`.
15494///
15495/// Supported operand variants:
15496///
15497/// ```text
15498/// +---+----------+
15499/// | # | Operands |
15500/// +---+----------+
15501/// | 1 | Xmm, Mem |
15502/// | 2 | Xmm, Xmm |
15503/// | 3 | Ymm, Mem |
15504/// | 4 | Ymm, Xmm |
15505/// | 5 | Zmm, Mem |
15506/// | 6 | Zmm, Xmm |
15507/// +---+----------+
15508/// ```
15509pub trait Vcvttph2uqqMaskzEmitter<A, B> {
15510    fn vcvttph2uqq_maskz(&mut self, op0: A, op1: B);
15511}
15512
15513impl<'a> Vcvttph2uqqMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
15514    fn vcvttph2uqq_maskz(&mut self, op0: Xmm, op1: Xmm) {
15515        self.emit(
15516            VCVTTPH2UQQ128RR_MASKZ,
15517            op0.as_operand(),
15518            op1.as_operand(),
15519            &NOREG,
15520            &NOREG,
15521        );
15522    }
15523}
15524
15525impl<'a> Vcvttph2uqqMaskzEmitter<Xmm, Mem> for Assembler<'a> {
15526    fn vcvttph2uqq_maskz(&mut self, op0: Xmm, op1: Mem) {
15527        self.emit(
15528            VCVTTPH2UQQ128RM_MASKZ,
15529            op0.as_operand(),
15530            op1.as_operand(),
15531            &NOREG,
15532            &NOREG,
15533        );
15534    }
15535}
15536
15537impl<'a> Vcvttph2uqqMaskzEmitter<Ymm, Xmm> for Assembler<'a> {
15538    fn vcvttph2uqq_maskz(&mut self, op0: Ymm, op1: Xmm) {
15539        self.emit(
15540            VCVTTPH2UQQ256RR_MASKZ,
15541            op0.as_operand(),
15542            op1.as_operand(),
15543            &NOREG,
15544            &NOREG,
15545        );
15546    }
15547}
15548
15549impl<'a> Vcvttph2uqqMaskzEmitter<Ymm, Mem> for Assembler<'a> {
15550    fn vcvttph2uqq_maskz(&mut self, op0: Ymm, op1: Mem) {
15551        self.emit(
15552            VCVTTPH2UQQ256RM_MASKZ,
15553            op0.as_operand(),
15554            op1.as_operand(),
15555            &NOREG,
15556            &NOREG,
15557        );
15558    }
15559}
15560
15561impl<'a> Vcvttph2uqqMaskzEmitter<Zmm, Xmm> for Assembler<'a> {
15562    fn vcvttph2uqq_maskz(&mut self, op0: Zmm, op1: Xmm) {
15563        self.emit(
15564            VCVTTPH2UQQ512RR_MASKZ,
15565            op0.as_operand(),
15566            op1.as_operand(),
15567            &NOREG,
15568            &NOREG,
15569        );
15570    }
15571}
15572
15573impl<'a> Vcvttph2uqqMaskzEmitter<Zmm, Mem> for Assembler<'a> {
15574    fn vcvttph2uqq_maskz(&mut self, op0: Zmm, op1: Mem) {
15575        self.emit(
15576            VCVTTPH2UQQ512RM_MASKZ,
15577            op0.as_operand(),
15578            op1.as_operand(),
15579            &NOREG,
15580            &NOREG,
15581        );
15582    }
15583}
15584
15585/// `VCVTTPH2UQQ_MASKZ_SAE`.
15586///
15587/// Supported operand variants:
15588///
15589/// ```text
15590/// +---+----------+
15591/// | # | Operands |
15592/// +---+----------+
15593/// | 1 | Zmm, Xmm |
15594/// +---+----------+
15595/// ```
15596pub trait Vcvttph2uqqMaskzSaeEmitter<A, B> {
15597    fn vcvttph2uqq_maskz_sae(&mut self, op0: A, op1: B);
15598}
15599
15600impl<'a> Vcvttph2uqqMaskzSaeEmitter<Zmm, Xmm> for Assembler<'a> {
15601    fn vcvttph2uqq_maskz_sae(&mut self, op0: Zmm, op1: Xmm) {
15602        self.emit(
15603            VCVTTPH2UQQ512RR_MASKZ_SAE,
15604            op0.as_operand(),
15605            op1.as_operand(),
15606            &NOREG,
15607            &NOREG,
15608        );
15609    }
15610}
15611
15612/// `VCVTTPH2UQQ_SAE`.
15613///
15614/// Supported operand variants:
15615///
15616/// ```text
15617/// +---+----------+
15618/// | # | Operands |
15619/// +---+----------+
15620/// | 1 | Zmm, Xmm |
15621/// +---+----------+
15622/// ```
15623pub trait Vcvttph2uqqSaeEmitter<A, B> {
15624    fn vcvttph2uqq_sae(&mut self, op0: A, op1: B);
15625}
15626
15627impl<'a> Vcvttph2uqqSaeEmitter<Zmm, Xmm> for Assembler<'a> {
15628    fn vcvttph2uqq_sae(&mut self, op0: Zmm, op1: Xmm) {
15629        self.emit(
15630            VCVTTPH2UQQ512RR_SAE,
15631            op0.as_operand(),
15632            op1.as_operand(),
15633            &NOREG,
15634            &NOREG,
15635        );
15636    }
15637}
15638
15639/// `VCVTTPH2UW`.
15640///
15641/// Supported operand variants:
15642///
15643/// ```text
15644/// +---+----------+
15645/// | # | Operands |
15646/// +---+----------+
15647/// | 1 | Xmm, Mem |
15648/// | 2 | Xmm, Xmm |
15649/// | 3 | Ymm, Mem |
15650/// | 4 | Ymm, Ymm |
15651/// | 5 | Zmm, Mem |
15652/// | 6 | Zmm, Zmm |
15653/// +---+----------+
15654/// ```
15655pub trait Vcvttph2uwEmitter<A, B> {
15656    fn vcvttph2uw(&mut self, op0: A, op1: B);
15657}
15658
15659impl<'a> Vcvttph2uwEmitter<Xmm, Xmm> for Assembler<'a> {
15660    fn vcvttph2uw(&mut self, op0: Xmm, op1: Xmm) {
15661        self.emit(
15662            VCVTTPH2UW128RR,
15663            op0.as_operand(),
15664            op1.as_operand(),
15665            &NOREG,
15666            &NOREG,
15667        );
15668    }
15669}
15670
15671impl<'a> Vcvttph2uwEmitter<Xmm, Mem> for Assembler<'a> {
15672    fn vcvttph2uw(&mut self, op0: Xmm, op1: Mem) {
15673        self.emit(
15674            VCVTTPH2UW128RM,
15675            op0.as_operand(),
15676            op1.as_operand(),
15677            &NOREG,
15678            &NOREG,
15679        );
15680    }
15681}
15682
15683impl<'a> Vcvttph2uwEmitter<Ymm, Ymm> for Assembler<'a> {
15684    fn vcvttph2uw(&mut self, op0: Ymm, op1: Ymm) {
15685        self.emit(
15686            VCVTTPH2UW256RR,
15687            op0.as_operand(),
15688            op1.as_operand(),
15689            &NOREG,
15690            &NOREG,
15691        );
15692    }
15693}
15694
15695impl<'a> Vcvttph2uwEmitter<Ymm, Mem> for Assembler<'a> {
15696    fn vcvttph2uw(&mut self, op0: Ymm, op1: Mem) {
15697        self.emit(
15698            VCVTTPH2UW256RM,
15699            op0.as_operand(),
15700            op1.as_operand(),
15701            &NOREG,
15702            &NOREG,
15703        );
15704    }
15705}
15706
15707impl<'a> Vcvttph2uwEmitter<Zmm, Zmm> for Assembler<'a> {
15708    fn vcvttph2uw(&mut self, op0: Zmm, op1: Zmm) {
15709        self.emit(
15710            VCVTTPH2UW512RR,
15711            op0.as_operand(),
15712            op1.as_operand(),
15713            &NOREG,
15714            &NOREG,
15715        );
15716    }
15717}
15718
15719impl<'a> Vcvttph2uwEmitter<Zmm, Mem> for Assembler<'a> {
15720    fn vcvttph2uw(&mut self, op0: Zmm, op1: Mem) {
15721        self.emit(
15722            VCVTTPH2UW512RM,
15723            op0.as_operand(),
15724            op1.as_operand(),
15725            &NOREG,
15726            &NOREG,
15727        );
15728    }
15729}
15730
15731/// `VCVTTPH2UW_MASK`.
15732///
15733/// Supported operand variants:
15734///
15735/// ```text
15736/// +---+----------+
15737/// | # | Operands |
15738/// +---+----------+
15739/// | 1 | Xmm, Mem |
15740/// | 2 | Xmm, Xmm |
15741/// | 3 | Ymm, Mem |
15742/// | 4 | Ymm, Ymm |
15743/// | 5 | Zmm, Mem |
15744/// | 6 | Zmm, Zmm |
15745/// +---+----------+
15746/// ```
15747pub trait Vcvttph2uwMaskEmitter<A, B> {
15748    fn vcvttph2uw_mask(&mut self, op0: A, op1: B);
15749}
15750
15751impl<'a> Vcvttph2uwMaskEmitter<Xmm, Xmm> for Assembler<'a> {
15752    fn vcvttph2uw_mask(&mut self, op0: Xmm, op1: Xmm) {
15753        self.emit(
15754            VCVTTPH2UW128RR_MASK,
15755            op0.as_operand(),
15756            op1.as_operand(),
15757            &NOREG,
15758            &NOREG,
15759        );
15760    }
15761}
15762
15763impl<'a> Vcvttph2uwMaskEmitter<Xmm, Mem> for Assembler<'a> {
15764    fn vcvttph2uw_mask(&mut self, op0: Xmm, op1: Mem) {
15765        self.emit(
15766            VCVTTPH2UW128RM_MASK,
15767            op0.as_operand(),
15768            op1.as_operand(),
15769            &NOREG,
15770            &NOREG,
15771        );
15772    }
15773}
15774
15775impl<'a> Vcvttph2uwMaskEmitter<Ymm, Ymm> for Assembler<'a> {
15776    fn vcvttph2uw_mask(&mut self, op0: Ymm, op1: Ymm) {
15777        self.emit(
15778            VCVTTPH2UW256RR_MASK,
15779            op0.as_operand(),
15780            op1.as_operand(),
15781            &NOREG,
15782            &NOREG,
15783        );
15784    }
15785}
15786
15787impl<'a> Vcvttph2uwMaskEmitter<Ymm, Mem> for Assembler<'a> {
15788    fn vcvttph2uw_mask(&mut self, op0: Ymm, op1: Mem) {
15789        self.emit(
15790            VCVTTPH2UW256RM_MASK,
15791            op0.as_operand(),
15792            op1.as_operand(),
15793            &NOREG,
15794            &NOREG,
15795        );
15796    }
15797}
15798
15799impl<'a> Vcvttph2uwMaskEmitter<Zmm, Zmm> for Assembler<'a> {
15800    fn vcvttph2uw_mask(&mut self, op0: Zmm, op1: Zmm) {
15801        self.emit(
15802            VCVTTPH2UW512RR_MASK,
15803            op0.as_operand(),
15804            op1.as_operand(),
15805            &NOREG,
15806            &NOREG,
15807        );
15808    }
15809}
15810
15811impl<'a> Vcvttph2uwMaskEmitter<Zmm, Mem> for Assembler<'a> {
15812    fn vcvttph2uw_mask(&mut self, op0: Zmm, op1: Mem) {
15813        self.emit(
15814            VCVTTPH2UW512RM_MASK,
15815            op0.as_operand(),
15816            op1.as_operand(),
15817            &NOREG,
15818            &NOREG,
15819        );
15820    }
15821}
15822
15823/// `VCVTTPH2UW_MASK_SAE`.
15824///
15825/// Supported operand variants:
15826///
15827/// ```text
15828/// +---+----------+
15829/// | # | Operands |
15830/// +---+----------+
15831/// | 1 | Zmm, Zmm |
15832/// +---+----------+
15833/// ```
15834pub trait Vcvttph2uwMaskSaeEmitter<A, B> {
15835    fn vcvttph2uw_mask_sae(&mut self, op0: A, op1: B);
15836}
15837
15838impl<'a> Vcvttph2uwMaskSaeEmitter<Zmm, Zmm> for Assembler<'a> {
15839    fn vcvttph2uw_mask_sae(&mut self, op0: Zmm, op1: Zmm) {
15840        self.emit(
15841            VCVTTPH2UW512RR_MASK_SAE,
15842            op0.as_operand(),
15843            op1.as_operand(),
15844            &NOREG,
15845            &NOREG,
15846        );
15847    }
15848}
15849
15850/// `VCVTTPH2UW_MASKZ`.
15851///
15852/// Supported operand variants:
15853///
15854/// ```text
15855/// +---+----------+
15856/// | # | Operands |
15857/// +---+----------+
15858/// | 1 | Xmm, Mem |
15859/// | 2 | Xmm, Xmm |
15860/// | 3 | Ymm, Mem |
15861/// | 4 | Ymm, Ymm |
15862/// | 5 | Zmm, Mem |
15863/// | 6 | Zmm, Zmm |
15864/// +---+----------+
15865/// ```
15866pub trait Vcvttph2uwMaskzEmitter<A, B> {
15867    fn vcvttph2uw_maskz(&mut self, op0: A, op1: B);
15868}
15869
15870impl<'a> Vcvttph2uwMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
15871    fn vcvttph2uw_maskz(&mut self, op0: Xmm, op1: Xmm) {
15872        self.emit(
15873            VCVTTPH2UW128RR_MASKZ,
15874            op0.as_operand(),
15875            op1.as_operand(),
15876            &NOREG,
15877            &NOREG,
15878        );
15879    }
15880}
15881
15882impl<'a> Vcvttph2uwMaskzEmitter<Xmm, Mem> for Assembler<'a> {
15883    fn vcvttph2uw_maskz(&mut self, op0: Xmm, op1: Mem) {
15884        self.emit(
15885            VCVTTPH2UW128RM_MASKZ,
15886            op0.as_operand(),
15887            op1.as_operand(),
15888            &NOREG,
15889            &NOREG,
15890        );
15891    }
15892}
15893
15894impl<'a> Vcvttph2uwMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
15895    fn vcvttph2uw_maskz(&mut self, op0: Ymm, op1: Ymm) {
15896        self.emit(
15897            VCVTTPH2UW256RR_MASKZ,
15898            op0.as_operand(),
15899            op1.as_operand(),
15900            &NOREG,
15901            &NOREG,
15902        );
15903    }
15904}
15905
15906impl<'a> Vcvttph2uwMaskzEmitter<Ymm, Mem> for Assembler<'a> {
15907    fn vcvttph2uw_maskz(&mut self, op0: Ymm, op1: Mem) {
15908        self.emit(
15909            VCVTTPH2UW256RM_MASKZ,
15910            op0.as_operand(),
15911            op1.as_operand(),
15912            &NOREG,
15913            &NOREG,
15914        );
15915    }
15916}
15917
15918impl<'a> Vcvttph2uwMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
15919    fn vcvttph2uw_maskz(&mut self, op0: Zmm, op1: Zmm) {
15920        self.emit(
15921            VCVTTPH2UW512RR_MASKZ,
15922            op0.as_operand(),
15923            op1.as_operand(),
15924            &NOREG,
15925            &NOREG,
15926        );
15927    }
15928}
15929
15930impl<'a> Vcvttph2uwMaskzEmitter<Zmm, Mem> for Assembler<'a> {
15931    fn vcvttph2uw_maskz(&mut self, op0: Zmm, op1: Mem) {
15932        self.emit(
15933            VCVTTPH2UW512RM_MASKZ,
15934            op0.as_operand(),
15935            op1.as_operand(),
15936            &NOREG,
15937            &NOREG,
15938        );
15939    }
15940}
15941
15942/// `VCVTTPH2UW_MASKZ_SAE`.
15943///
15944/// Supported operand variants:
15945///
15946/// ```text
15947/// +---+----------+
15948/// | # | Operands |
15949/// +---+----------+
15950/// | 1 | Zmm, Zmm |
15951/// +---+----------+
15952/// ```
15953pub trait Vcvttph2uwMaskzSaeEmitter<A, B> {
15954    fn vcvttph2uw_maskz_sae(&mut self, op0: A, op1: B);
15955}
15956
15957impl<'a> Vcvttph2uwMaskzSaeEmitter<Zmm, Zmm> for Assembler<'a> {
15958    fn vcvttph2uw_maskz_sae(&mut self, op0: Zmm, op1: Zmm) {
15959        self.emit(
15960            VCVTTPH2UW512RR_MASKZ_SAE,
15961            op0.as_operand(),
15962            op1.as_operand(),
15963            &NOREG,
15964            &NOREG,
15965        );
15966    }
15967}
15968
15969/// `VCVTTPH2UW_SAE`.
15970///
15971/// Supported operand variants:
15972///
15973/// ```text
15974/// +---+----------+
15975/// | # | Operands |
15976/// +---+----------+
15977/// | 1 | Zmm, Zmm |
15978/// +---+----------+
15979/// ```
15980pub trait Vcvttph2uwSaeEmitter<A, B> {
15981    fn vcvttph2uw_sae(&mut self, op0: A, op1: B);
15982}
15983
15984impl<'a> Vcvttph2uwSaeEmitter<Zmm, Zmm> for Assembler<'a> {
15985    fn vcvttph2uw_sae(&mut self, op0: Zmm, op1: Zmm) {
15986        self.emit(
15987            VCVTTPH2UW512RR_SAE,
15988            op0.as_operand(),
15989            op1.as_operand(),
15990            &NOREG,
15991            &NOREG,
15992        );
15993    }
15994}
15995
15996/// `VCVTTPH2W`.
15997///
15998/// Supported operand variants:
15999///
16000/// ```text
16001/// +---+----------+
16002/// | # | Operands |
16003/// +---+----------+
16004/// | 1 | Xmm, Mem |
16005/// | 2 | Xmm, Xmm |
16006/// | 3 | Ymm, Mem |
16007/// | 4 | Ymm, Ymm |
16008/// | 5 | Zmm, Mem |
16009/// | 6 | Zmm, Zmm |
16010/// +---+----------+
16011/// ```
16012pub trait Vcvttph2wEmitter<A, B> {
16013    fn vcvttph2w(&mut self, op0: A, op1: B);
16014}
16015
16016impl<'a> Vcvttph2wEmitter<Xmm, Xmm> for Assembler<'a> {
16017    fn vcvttph2w(&mut self, op0: Xmm, op1: Xmm) {
16018        self.emit(
16019            VCVTTPH2W128RR,
16020            op0.as_operand(),
16021            op1.as_operand(),
16022            &NOREG,
16023            &NOREG,
16024        );
16025    }
16026}
16027
16028impl<'a> Vcvttph2wEmitter<Xmm, Mem> for Assembler<'a> {
16029    fn vcvttph2w(&mut self, op0: Xmm, op1: Mem) {
16030        self.emit(
16031            VCVTTPH2W128RM,
16032            op0.as_operand(),
16033            op1.as_operand(),
16034            &NOREG,
16035            &NOREG,
16036        );
16037    }
16038}
16039
16040impl<'a> Vcvttph2wEmitter<Ymm, Ymm> for Assembler<'a> {
16041    fn vcvttph2w(&mut self, op0: Ymm, op1: Ymm) {
16042        self.emit(
16043            VCVTTPH2W256RR,
16044            op0.as_operand(),
16045            op1.as_operand(),
16046            &NOREG,
16047            &NOREG,
16048        );
16049    }
16050}
16051
16052impl<'a> Vcvttph2wEmitter<Ymm, Mem> for Assembler<'a> {
16053    fn vcvttph2w(&mut self, op0: Ymm, op1: Mem) {
16054        self.emit(
16055            VCVTTPH2W256RM,
16056            op0.as_operand(),
16057            op1.as_operand(),
16058            &NOREG,
16059            &NOREG,
16060        );
16061    }
16062}
16063
16064impl<'a> Vcvttph2wEmitter<Zmm, Zmm> for Assembler<'a> {
16065    fn vcvttph2w(&mut self, op0: Zmm, op1: Zmm) {
16066        self.emit(
16067            VCVTTPH2W512RR,
16068            op0.as_operand(),
16069            op1.as_operand(),
16070            &NOREG,
16071            &NOREG,
16072        );
16073    }
16074}
16075
16076impl<'a> Vcvttph2wEmitter<Zmm, Mem> for Assembler<'a> {
16077    fn vcvttph2w(&mut self, op0: Zmm, op1: Mem) {
16078        self.emit(
16079            VCVTTPH2W512RM,
16080            op0.as_operand(),
16081            op1.as_operand(),
16082            &NOREG,
16083            &NOREG,
16084        );
16085    }
16086}
16087
16088/// `VCVTTPH2W_MASK`.
16089///
16090/// Supported operand variants:
16091///
16092/// ```text
16093/// +---+----------+
16094/// | # | Operands |
16095/// +---+----------+
16096/// | 1 | Xmm, Mem |
16097/// | 2 | Xmm, Xmm |
16098/// | 3 | Ymm, Mem |
16099/// | 4 | Ymm, Ymm |
16100/// | 5 | Zmm, Mem |
16101/// | 6 | Zmm, Zmm |
16102/// +---+----------+
16103/// ```
16104pub trait Vcvttph2wMaskEmitter<A, B> {
16105    fn vcvttph2w_mask(&mut self, op0: A, op1: B);
16106}
16107
16108impl<'a> Vcvttph2wMaskEmitter<Xmm, Xmm> for Assembler<'a> {
16109    fn vcvttph2w_mask(&mut self, op0: Xmm, op1: Xmm) {
16110        self.emit(
16111            VCVTTPH2W128RR_MASK,
16112            op0.as_operand(),
16113            op1.as_operand(),
16114            &NOREG,
16115            &NOREG,
16116        );
16117    }
16118}
16119
16120impl<'a> Vcvttph2wMaskEmitter<Xmm, Mem> for Assembler<'a> {
16121    fn vcvttph2w_mask(&mut self, op0: Xmm, op1: Mem) {
16122        self.emit(
16123            VCVTTPH2W128RM_MASK,
16124            op0.as_operand(),
16125            op1.as_operand(),
16126            &NOREG,
16127            &NOREG,
16128        );
16129    }
16130}
16131
16132impl<'a> Vcvttph2wMaskEmitter<Ymm, Ymm> for Assembler<'a> {
16133    fn vcvttph2w_mask(&mut self, op0: Ymm, op1: Ymm) {
16134        self.emit(
16135            VCVTTPH2W256RR_MASK,
16136            op0.as_operand(),
16137            op1.as_operand(),
16138            &NOREG,
16139            &NOREG,
16140        );
16141    }
16142}
16143
16144impl<'a> Vcvttph2wMaskEmitter<Ymm, Mem> for Assembler<'a> {
16145    fn vcvttph2w_mask(&mut self, op0: Ymm, op1: Mem) {
16146        self.emit(
16147            VCVTTPH2W256RM_MASK,
16148            op0.as_operand(),
16149            op1.as_operand(),
16150            &NOREG,
16151            &NOREG,
16152        );
16153    }
16154}
16155
16156impl<'a> Vcvttph2wMaskEmitter<Zmm, Zmm> for Assembler<'a> {
16157    fn vcvttph2w_mask(&mut self, op0: Zmm, op1: Zmm) {
16158        self.emit(
16159            VCVTTPH2W512RR_MASK,
16160            op0.as_operand(),
16161            op1.as_operand(),
16162            &NOREG,
16163            &NOREG,
16164        );
16165    }
16166}
16167
16168impl<'a> Vcvttph2wMaskEmitter<Zmm, Mem> for Assembler<'a> {
16169    fn vcvttph2w_mask(&mut self, op0: Zmm, op1: Mem) {
16170        self.emit(
16171            VCVTTPH2W512RM_MASK,
16172            op0.as_operand(),
16173            op1.as_operand(),
16174            &NOREG,
16175            &NOREG,
16176        );
16177    }
16178}
16179
16180/// `VCVTTPH2W_MASK_SAE`.
16181///
16182/// Supported operand variants:
16183///
16184/// ```text
16185/// +---+----------+
16186/// | # | Operands |
16187/// +---+----------+
16188/// | 1 | Zmm, Zmm |
16189/// +---+----------+
16190/// ```
16191pub trait Vcvttph2wMaskSaeEmitter<A, B> {
16192    fn vcvttph2w_mask_sae(&mut self, op0: A, op1: B);
16193}
16194
16195impl<'a> Vcvttph2wMaskSaeEmitter<Zmm, Zmm> for Assembler<'a> {
16196    fn vcvttph2w_mask_sae(&mut self, op0: Zmm, op1: Zmm) {
16197        self.emit(
16198            VCVTTPH2W512RR_MASK_SAE,
16199            op0.as_operand(),
16200            op1.as_operand(),
16201            &NOREG,
16202            &NOREG,
16203        );
16204    }
16205}
16206
16207/// `VCVTTPH2W_MASKZ`.
16208///
16209/// Supported operand variants:
16210///
16211/// ```text
16212/// +---+----------+
16213/// | # | Operands |
16214/// +---+----------+
16215/// | 1 | Xmm, Mem |
16216/// | 2 | Xmm, Xmm |
16217/// | 3 | Ymm, Mem |
16218/// | 4 | Ymm, Ymm |
16219/// | 5 | Zmm, Mem |
16220/// | 6 | Zmm, Zmm |
16221/// +---+----------+
16222/// ```
16223pub trait Vcvttph2wMaskzEmitter<A, B> {
16224    fn vcvttph2w_maskz(&mut self, op0: A, op1: B);
16225}
16226
16227impl<'a> Vcvttph2wMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
16228    fn vcvttph2w_maskz(&mut self, op0: Xmm, op1: Xmm) {
16229        self.emit(
16230            VCVTTPH2W128RR_MASKZ,
16231            op0.as_operand(),
16232            op1.as_operand(),
16233            &NOREG,
16234            &NOREG,
16235        );
16236    }
16237}
16238
16239impl<'a> Vcvttph2wMaskzEmitter<Xmm, Mem> for Assembler<'a> {
16240    fn vcvttph2w_maskz(&mut self, op0: Xmm, op1: Mem) {
16241        self.emit(
16242            VCVTTPH2W128RM_MASKZ,
16243            op0.as_operand(),
16244            op1.as_operand(),
16245            &NOREG,
16246            &NOREG,
16247        );
16248    }
16249}
16250
16251impl<'a> Vcvttph2wMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
16252    fn vcvttph2w_maskz(&mut self, op0: Ymm, op1: Ymm) {
16253        self.emit(
16254            VCVTTPH2W256RR_MASKZ,
16255            op0.as_operand(),
16256            op1.as_operand(),
16257            &NOREG,
16258            &NOREG,
16259        );
16260    }
16261}
16262
16263impl<'a> Vcvttph2wMaskzEmitter<Ymm, Mem> for Assembler<'a> {
16264    fn vcvttph2w_maskz(&mut self, op0: Ymm, op1: Mem) {
16265        self.emit(
16266            VCVTTPH2W256RM_MASKZ,
16267            op0.as_operand(),
16268            op1.as_operand(),
16269            &NOREG,
16270            &NOREG,
16271        );
16272    }
16273}
16274
16275impl<'a> Vcvttph2wMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
16276    fn vcvttph2w_maskz(&mut self, op0: Zmm, op1: Zmm) {
16277        self.emit(
16278            VCVTTPH2W512RR_MASKZ,
16279            op0.as_operand(),
16280            op1.as_operand(),
16281            &NOREG,
16282            &NOREG,
16283        );
16284    }
16285}
16286
16287impl<'a> Vcvttph2wMaskzEmitter<Zmm, Mem> for Assembler<'a> {
16288    fn vcvttph2w_maskz(&mut self, op0: Zmm, op1: Mem) {
16289        self.emit(
16290            VCVTTPH2W512RM_MASKZ,
16291            op0.as_operand(),
16292            op1.as_operand(),
16293            &NOREG,
16294            &NOREG,
16295        );
16296    }
16297}
16298
16299/// `VCVTTPH2W_MASKZ_SAE`.
16300///
16301/// Supported operand variants:
16302///
16303/// ```text
16304/// +---+----------+
16305/// | # | Operands |
16306/// +---+----------+
16307/// | 1 | Zmm, Zmm |
16308/// +---+----------+
16309/// ```
16310pub trait Vcvttph2wMaskzSaeEmitter<A, B> {
16311    fn vcvttph2w_maskz_sae(&mut self, op0: A, op1: B);
16312}
16313
16314impl<'a> Vcvttph2wMaskzSaeEmitter<Zmm, Zmm> for Assembler<'a> {
16315    fn vcvttph2w_maskz_sae(&mut self, op0: Zmm, op1: Zmm) {
16316        self.emit(
16317            VCVTTPH2W512RR_MASKZ_SAE,
16318            op0.as_operand(),
16319            op1.as_operand(),
16320            &NOREG,
16321            &NOREG,
16322        );
16323    }
16324}
16325
16326/// `VCVTTPH2W_SAE`.
16327///
16328/// Supported operand variants:
16329///
16330/// ```text
16331/// +---+----------+
16332/// | # | Operands |
16333/// +---+----------+
16334/// | 1 | Zmm, Zmm |
16335/// +---+----------+
16336/// ```
16337pub trait Vcvttph2wSaeEmitter<A, B> {
16338    fn vcvttph2w_sae(&mut self, op0: A, op1: B);
16339}
16340
16341impl<'a> Vcvttph2wSaeEmitter<Zmm, Zmm> for Assembler<'a> {
16342    fn vcvttph2w_sae(&mut self, op0: Zmm, op1: Zmm) {
16343        self.emit(
16344            VCVTTPH2W512RR_SAE,
16345            op0.as_operand(),
16346            op1.as_operand(),
16347            &NOREG,
16348            &NOREG,
16349        );
16350    }
16351}
16352
16353/// `VCVTTSH2SI`.
16354///
16355/// Supported operand variants:
16356///
16357/// ```text
16358/// +---+----------+
16359/// | # | Operands |
16360/// +---+----------+
16361/// | 1 | Gpd, Mem |
16362/// | 2 | Gpd, Xmm |
16363/// | 3 | Gpq, Mem |
16364/// | 4 | Gpq, Xmm |
16365/// +---+----------+
16366/// ```
16367pub trait Vcvttsh2siEmitter<A, B> {
16368    fn vcvttsh2si(&mut self, op0: A, op1: B);
16369}
16370
16371impl<'a> Vcvttsh2siEmitter<Gpd, Xmm> for Assembler<'a> {
16372    fn vcvttsh2si(&mut self, op0: Gpd, op1: Xmm) {
16373        self.emit(
16374            VCVTTSH2SI32RR,
16375            op0.as_operand(),
16376            op1.as_operand(),
16377            &NOREG,
16378            &NOREG,
16379        );
16380    }
16381}
16382
16383impl<'a> Vcvttsh2siEmitter<Gpd, Mem> for Assembler<'a> {
16384    fn vcvttsh2si(&mut self, op0: Gpd, op1: Mem) {
16385        self.emit(
16386            VCVTTSH2SI32RM,
16387            op0.as_operand(),
16388            op1.as_operand(),
16389            &NOREG,
16390            &NOREG,
16391        );
16392    }
16393}
16394
16395impl<'a> Vcvttsh2siEmitter<Gpq, Xmm> for Assembler<'a> {
16396    fn vcvttsh2si(&mut self, op0: Gpq, op1: Xmm) {
16397        self.emit(
16398            VCVTTSH2SI64RR,
16399            op0.as_operand(),
16400            op1.as_operand(),
16401            &NOREG,
16402            &NOREG,
16403        );
16404    }
16405}
16406
16407impl<'a> Vcvttsh2siEmitter<Gpq, Mem> for Assembler<'a> {
16408    fn vcvttsh2si(&mut self, op0: Gpq, op1: Mem) {
16409        self.emit(
16410            VCVTTSH2SI64RM,
16411            op0.as_operand(),
16412            op1.as_operand(),
16413            &NOREG,
16414            &NOREG,
16415        );
16416    }
16417}
16418
16419/// `VCVTTSH2SI_SAE`.
16420///
16421/// Supported operand variants:
16422///
16423/// ```text
16424/// +---+----------+
16425/// | # | Operands |
16426/// +---+----------+
16427/// | 1 | Gpd, Xmm |
16428/// | 2 | Gpq, Xmm |
16429/// +---+----------+
16430/// ```
16431pub trait Vcvttsh2siSaeEmitter<A, B> {
16432    fn vcvttsh2si_sae(&mut self, op0: A, op1: B);
16433}
16434
16435impl<'a> Vcvttsh2siSaeEmitter<Gpd, Xmm> for Assembler<'a> {
16436    fn vcvttsh2si_sae(&mut self, op0: Gpd, op1: Xmm) {
16437        self.emit(
16438            VCVTTSH2SI32RR_SAE,
16439            op0.as_operand(),
16440            op1.as_operand(),
16441            &NOREG,
16442            &NOREG,
16443        );
16444    }
16445}
16446
16447impl<'a> Vcvttsh2siSaeEmitter<Gpq, Xmm> for Assembler<'a> {
16448    fn vcvttsh2si_sae(&mut self, op0: Gpq, op1: Xmm) {
16449        self.emit(
16450            VCVTTSH2SI64RR_SAE,
16451            op0.as_operand(),
16452            op1.as_operand(),
16453            &NOREG,
16454            &NOREG,
16455        );
16456    }
16457}
16458
16459/// `VCVTTSH2USI`.
16460///
16461/// Supported operand variants:
16462///
16463/// ```text
16464/// +---+----------+
16465/// | # | Operands |
16466/// +---+----------+
16467/// | 1 | Gpd, Mem |
16468/// | 2 | Gpd, Xmm |
16469/// | 3 | Gpq, Mem |
16470/// | 4 | Gpq, Xmm |
16471/// +---+----------+
16472/// ```
16473pub trait Vcvttsh2usiEmitter<A, B> {
16474    fn vcvttsh2usi(&mut self, op0: A, op1: B);
16475}
16476
16477impl<'a> Vcvttsh2usiEmitter<Gpd, Xmm> for Assembler<'a> {
16478    fn vcvttsh2usi(&mut self, op0: Gpd, op1: Xmm) {
16479        self.emit(
16480            VCVTTSH2USI32RR,
16481            op0.as_operand(),
16482            op1.as_operand(),
16483            &NOREG,
16484            &NOREG,
16485        );
16486    }
16487}
16488
16489impl<'a> Vcvttsh2usiEmitter<Gpd, Mem> for Assembler<'a> {
16490    fn vcvttsh2usi(&mut self, op0: Gpd, op1: Mem) {
16491        self.emit(
16492            VCVTTSH2USI32RM,
16493            op0.as_operand(),
16494            op1.as_operand(),
16495            &NOREG,
16496            &NOREG,
16497        );
16498    }
16499}
16500
16501impl<'a> Vcvttsh2usiEmitter<Gpq, Xmm> for Assembler<'a> {
16502    fn vcvttsh2usi(&mut self, op0: Gpq, op1: Xmm) {
16503        self.emit(
16504            VCVTTSH2USI64RR,
16505            op0.as_operand(),
16506            op1.as_operand(),
16507            &NOREG,
16508            &NOREG,
16509        );
16510    }
16511}
16512
16513impl<'a> Vcvttsh2usiEmitter<Gpq, Mem> for Assembler<'a> {
16514    fn vcvttsh2usi(&mut self, op0: Gpq, op1: Mem) {
16515        self.emit(
16516            VCVTTSH2USI64RM,
16517            op0.as_operand(),
16518            op1.as_operand(),
16519            &NOREG,
16520            &NOREG,
16521        );
16522    }
16523}
16524
16525/// `VCVTTSH2USI_SAE`.
16526///
16527/// Supported operand variants:
16528///
16529/// ```text
16530/// +---+----------+
16531/// | # | Operands |
16532/// +---+----------+
16533/// | 1 | Gpd, Xmm |
16534/// | 2 | Gpq, Xmm |
16535/// +---+----------+
16536/// ```
16537pub trait Vcvttsh2usiSaeEmitter<A, B> {
16538    fn vcvttsh2usi_sae(&mut self, op0: A, op1: B);
16539}
16540
16541impl<'a> Vcvttsh2usiSaeEmitter<Gpd, Xmm> for Assembler<'a> {
16542    fn vcvttsh2usi_sae(&mut self, op0: Gpd, op1: Xmm) {
16543        self.emit(
16544            VCVTTSH2USI32RR_SAE,
16545            op0.as_operand(),
16546            op1.as_operand(),
16547            &NOREG,
16548            &NOREG,
16549        );
16550    }
16551}
16552
16553impl<'a> Vcvttsh2usiSaeEmitter<Gpq, Xmm> for Assembler<'a> {
16554    fn vcvttsh2usi_sae(&mut self, op0: Gpq, op1: Xmm) {
16555        self.emit(
16556            VCVTTSH2USI64RR_SAE,
16557            op0.as_operand(),
16558            op1.as_operand(),
16559            &NOREG,
16560            &NOREG,
16561        );
16562    }
16563}
16564
16565/// `VCVTUDQ2PH`.
16566///
16567/// Supported operand variants:
16568///
16569/// ```text
16570/// +---+----------+
16571/// | # | Operands |
16572/// +---+----------+
16573/// | 1 | Xmm, Mem |
16574/// | 2 | Xmm, Xmm |
16575/// | 3 | Xmm, Ymm |
16576/// | 4 | Ymm, Mem |
16577/// | 5 | Ymm, Zmm |
16578/// +---+----------+
16579/// ```
16580pub trait Vcvtudq2phEmitter<A, B> {
16581    fn vcvtudq2ph(&mut self, op0: A, op1: B);
16582}
16583
16584impl<'a> Vcvtudq2phEmitter<Xmm, Xmm> for Assembler<'a> {
16585    fn vcvtudq2ph(&mut self, op0: Xmm, op1: Xmm) {
16586        self.emit(
16587            VCVTUDQ2PH128RR,
16588            op0.as_operand(),
16589            op1.as_operand(),
16590            &NOREG,
16591            &NOREG,
16592        );
16593    }
16594}
16595
16596impl<'a> Vcvtudq2phEmitter<Xmm, Mem> for Assembler<'a> {
16597    fn vcvtudq2ph(&mut self, op0: Xmm, op1: Mem) {
16598        self.emit(
16599            VCVTUDQ2PH128RM,
16600            op0.as_operand(),
16601            op1.as_operand(),
16602            &NOREG,
16603            &NOREG,
16604        );
16605    }
16606}
16607
16608impl<'a> Vcvtudq2phEmitter<Xmm, Ymm> for Assembler<'a> {
16609    fn vcvtudq2ph(&mut self, op0: Xmm, op1: Ymm) {
16610        self.emit(
16611            VCVTUDQ2PH256RR,
16612            op0.as_operand(),
16613            op1.as_operand(),
16614            &NOREG,
16615            &NOREG,
16616        );
16617    }
16618}
16619
16620impl<'a> Vcvtudq2phEmitter<Ymm, Zmm> for Assembler<'a> {
16621    fn vcvtudq2ph(&mut self, op0: Ymm, op1: Zmm) {
16622        self.emit(
16623            VCVTUDQ2PH512RR,
16624            op0.as_operand(),
16625            op1.as_operand(),
16626            &NOREG,
16627            &NOREG,
16628        );
16629    }
16630}
16631
16632impl<'a> Vcvtudq2phEmitter<Ymm, Mem> for Assembler<'a> {
16633    fn vcvtudq2ph(&mut self, op0: Ymm, op1: Mem) {
16634        self.emit(
16635            VCVTUDQ2PH512RM,
16636            op0.as_operand(),
16637            op1.as_operand(),
16638            &NOREG,
16639            &NOREG,
16640        );
16641    }
16642}
16643
16644/// `VCVTUDQ2PH_ER`.
16645///
16646/// Supported operand variants:
16647///
16648/// ```text
16649/// +---+----------+
16650/// | # | Operands |
16651/// +---+----------+
16652/// | 1 | Ymm, Zmm |
16653/// +---+----------+
16654/// ```
16655pub trait Vcvtudq2phErEmitter<A, B> {
16656    fn vcvtudq2ph_er(&mut self, op0: A, op1: B);
16657}
16658
16659impl<'a> Vcvtudq2phErEmitter<Ymm, Zmm> for Assembler<'a> {
16660    fn vcvtudq2ph_er(&mut self, op0: Ymm, op1: Zmm) {
16661        self.emit(
16662            VCVTUDQ2PH512RR_ER,
16663            op0.as_operand(),
16664            op1.as_operand(),
16665            &NOREG,
16666            &NOREG,
16667        );
16668    }
16669}
16670
16671/// `VCVTUDQ2PH_MASK`.
16672///
16673/// Supported operand variants:
16674///
16675/// ```text
16676/// +---+----------+
16677/// | # | Operands |
16678/// +---+----------+
16679/// | 1 | Xmm, Mem |
16680/// | 2 | Xmm, Xmm |
16681/// | 3 | Xmm, Ymm |
16682/// | 4 | Ymm, Mem |
16683/// | 5 | Ymm, Zmm |
16684/// +---+----------+
16685/// ```
16686pub trait Vcvtudq2phMaskEmitter<A, B> {
16687    fn vcvtudq2ph_mask(&mut self, op0: A, op1: B);
16688}
16689
16690impl<'a> Vcvtudq2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
16691    fn vcvtudq2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
16692        self.emit(
16693            VCVTUDQ2PH128RR_MASK,
16694            op0.as_operand(),
16695            op1.as_operand(),
16696            &NOREG,
16697            &NOREG,
16698        );
16699    }
16700}
16701
16702impl<'a> Vcvtudq2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
16703    fn vcvtudq2ph_mask(&mut self, op0: Xmm, op1: Mem) {
16704        self.emit(
16705            VCVTUDQ2PH128RM_MASK,
16706            op0.as_operand(),
16707            op1.as_operand(),
16708            &NOREG,
16709            &NOREG,
16710        );
16711    }
16712}
16713
16714impl<'a> Vcvtudq2phMaskEmitter<Xmm, Ymm> for Assembler<'a> {
16715    fn vcvtudq2ph_mask(&mut self, op0: Xmm, op1: Ymm) {
16716        self.emit(
16717            VCVTUDQ2PH256RR_MASK,
16718            op0.as_operand(),
16719            op1.as_operand(),
16720            &NOREG,
16721            &NOREG,
16722        );
16723    }
16724}
16725
16726impl<'a> Vcvtudq2phMaskEmitter<Ymm, Zmm> for Assembler<'a> {
16727    fn vcvtudq2ph_mask(&mut self, op0: Ymm, op1: Zmm) {
16728        self.emit(
16729            VCVTUDQ2PH512RR_MASK,
16730            op0.as_operand(),
16731            op1.as_operand(),
16732            &NOREG,
16733            &NOREG,
16734        );
16735    }
16736}
16737
16738impl<'a> Vcvtudq2phMaskEmitter<Ymm, Mem> for Assembler<'a> {
16739    fn vcvtudq2ph_mask(&mut self, op0: Ymm, op1: Mem) {
16740        self.emit(
16741            VCVTUDQ2PH512RM_MASK,
16742            op0.as_operand(),
16743            op1.as_operand(),
16744            &NOREG,
16745            &NOREG,
16746        );
16747    }
16748}
16749
16750/// `VCVTUDQ2PH_MASK_ER`.
16751///
16752/// Supported operand variants:
16753///
16754/// ```text
16755/// +---+----------+
16756/// | # | Operands |
16757/// +---+----------+
16758/// | 1 | Ymm, Zmm |
16759/// +---+----------+
16760/// ```
16761pub trait Vcvtudq2phMaskErEmitter<A, B> {
16762    fn vcvtudq2ph_mask_er(&mut self, op0: A, op1: B);
16763}
16764
16765impl<'a> Vcvtudq2phMaskErEmitter<Ymm, Zmm> for Assembler<'a> {
16766    fn vcvtudq2ph_mask_er(&mut self, op0: Ymm, op1: Zmm) {
16767        self.emit(
16768            VCVTUDQ2PH512RR_MASK_ER,
16769            op0.as_operand(),
16770            op1.as_operand(),
16771            &NOREG,
16772            &NOREG,
16773        );
16774    }
16775}
16776
16777/// `VCVTUDQ2PH_MASKZ`.
16778///
16779/// Supported operand variants:
16780///
16781/// ```text
16782/// +---+----------+
16783/// | # | Operands |
16784/// +---+----------+
16785/// | 1 | Xmm, Mem |
16786/// | 2 | Xmm, Xmm |
16787/// | 3 | Xmm, Ymm |
16788/// | 4 | Ymm, Mem |
16789/// | 5 | Ymm, Zmm |
16790/// +---+----------+
16791/// ```
16792pub trait Vcvtudq2phMaskzEmitter<A, B> {
16793    fn vcvtudq2ph_maskz(&mut self, op0: A, op1: B);
16794}
16795
16796impl<'a> Vcvtudq2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
16797    fn vcvtudq2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
16798        self.emit(
16799            VCVTUDQ2PH128RR_MASKZ,
16800            op0.as_operand(),
16801            op1.as_operand(),
16802            &NOREG,
16803            &NOREG,
16804        );
16805    }
16806}
16807
16808impl<'a> Vcvtudq2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
16809    fn vcvtudq2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
16810        self.emit(
16811            VCVTUDQ2PH128RM_MASKZ,
16812            op0.as_operand(),
16813            op1.as_operand(),
16814            &NOREG,
16815            &NOREG,
16816        );
16817    }
16818}
16819
16820impl<'a> Vcvtudq2phMaskzEmitter<Xmm, Ymm> for Assembler<'a> {
16821    fn vcvtudq2ph_maskz(&mut self, op0: Xmm, op1: Ymm) {
16822        self.emit(
16823            VCVTUDQ2PH256RR_MASKZ,
16824            op0.as_operand(),
16825            op1.as_operand(),
16826            &NOREG,
16827            &NOREG,
16828        );
16829    }
16830}
16831
16832impl<'a> Vcvtudq2phMaskzEmitter<Ymm, Zmm> for Assembler<'a> {
16833    fn vcvtudq2ph_maskz(&mut self, op0: Ymm, op1: Zmm) {
16834        self.emit(
16835            VCVTUDQ2PH512RR_MASKZ,
16836            op0.as_operand(),
16837            op1.as_operand(),
16838            &NOREG,
16839            &NOREG,
16840        );
16841    }
16842}
16843
16844impl<'a> Vcvtudq2phMaskzEmitter<Ymm, Mem> for Assembler<'a> {
16845    fn vcvtudq2ph_maskz(&mut self, op0: Ymm, op1: Mem) {
16846        self.emit(
16847            VCVTUDQ2PH512RM_MASKZ,
16848            op0.as_operand(),
16849            op1.as_operand(),
16850            &NOREG,
16851            &NOREG,
16852        );
16853    }
16854}
16855
16856/// `VCVTUDQ2PH_MASKZ_ER`.
16857///
16858/// Supported operand variants:
16859///
16860/// ```text
16861/// +---+----------+
16862/// | # | Operands |
16863/// +---+----------+
16864/// | 1 | Ymm, Zmm |
16865/// +---+----------+
16866/// ```
16867pub trait Vcvtudq2phMaskzErEmitter<A, B> {
16868    fn vcvtudq2ph_maskz_er(&mut self, op0: A, op1: B);
16869}
16870
16871impl<'a> Vcvtudq2phMaskzErEmitter<Ymm, Zmm> for Assembler<'a> {
16872    fn vcvtudq2ph_maskz_er(&mut self, op0: Ymm, op1: Zmm) {
16873        self.emit(
16874            VCVTUDQ2PH512RR_MASKZ_ER,
16875            op0.as_operand(),
16876            op1.as_operand(),
16877            &NOREG,
16878            &NOREG,
16879        );
16880    }
16881}
16882
16883/// `VCVTUQQ2PH`.
16884///
16885/// Supported operand variants:
16886///
16887/// ```text
16888/// +---+----------+
16889/// | # | Operands |
16890/// +---+----------+
16891/// | 1 | Xmm, Mem |
16892/// | 2 | Xmm, Xmm |
16893/// | 3 | Xmm, Ymm |
16894/// | 4 | Xmm, Zmm |
16895/// +---+----------+
16896/// ```
16897pub trait Vcvtuqq2phEmitter<A, B> {
16898    fn vcvtuqq2ph(&mut self, op0: A, op1: B);
16899}
16900
16901impl<'a> Vcvtuqq2phEmitter<Xmm, Xmm> for Assembler<'a> {
16902    fn vcvtuqq2ph(&mut self, op0: Xmm, op1: Xmm) {
16903        self.emit(
16904            VCVTUQQ2PH128RR,
16905            op0.as_operand(),
16906            op1.as_operand(),
16907            &NOREG,
16908            &NOREG,
16909        );
16910    }
16911}
16912
16913impl<'a> Vcvtuqq2phEmitter<Xmm, Mem> for Assembler<'a> {
16914    fn vcvtuqq2ph(&mut self, op0: Xmm, op1: Mem) {
16915        self.emit(
16916            VCVTUQQ2PH128RM,
16917            op0.as_operand(),
16918            op1.as_operand(),
16919            &NOREG,
16920            &NOREG,
16921        );
16922    }
16923}
16924
16925impl<'a> Vcvtuqq2phEmitter<Xmm, Ymm> for Assembler<'a> {
16926    fn vcvtuqq2ph(&mut self, op0: Xmm, op1: Ymm) {
16927        self.emit(
16928            VCVTUQQ2PH256RR,
16929            op0.as_operand(),
16930            op1.as_operand(),
16931            &NOREG,
16932            &NOREG,
16933        );
16934    }
16935}
16936
16937impl<'a> Vcvtuqq2phEmitter<Xmm, Zmm> for Assembler<'a> {
16938    fn vcvtuqq2ph(&mut self, op0: Xmm, op1: Zmm) {
16939        self.emit(
16940            VCVTUQQ2PH512RR,
16941            op0.as_operand(),
16942            op1.as_operand(),
16943            &NOREG,
16944            &NOREG,
16945        );
16946    }
16947}
16948
16949/// `VCVTUQQ2PH_ER`.
16950///
16951/// Supported operand variants:
16952///
16953/// ```text
16954/// +---+----------+
16955/// | # | Operands |
16956/// +---+----------+
16957/// | 1 | Xmm, Zmm |
16958/// +---+----------+
16959/// ```
16960pub trait Vcvtuqq2phErEmitter<A, B> {
16961    fn vcvtuqq2ph_er(&mut self, op0: A, op1: B);
16962}
16963
16964impl<'a> Vcvtuqq2phErEmitter<Xmm, Zmm> for Assembler<'a> {
16965    fn vcvtuqq2ph_er(&mut self, op0: Xmm, op1: Zmm) {
16966        self.emit(
16967            VCVTUQQ2PH512RR_ER,
16968            op0.as_operand(),
16969            op1.as_operand(),
16970            &NOREG,
16971            &NOREG,
16972        );
16973    }
16974}
16975
16976/// `VCVTUQQ2PH_MASK`.
16977///
16978/// Supported operand variants:
16979///
16980/// ```text
16981/// +---+----------+
16982/// | # | Operands |
16983/// +---+----------+
16984/// | 1 | Xmm, Mem |
16985/// | 2 | Xmm, Xmm |
16986/// | 3 | Xmm, Ymm |
16987/// | 4 | Xmm, Zmm |
16988/// +---+----------+
16989/// ```
16990pub trait Vcvtuqq2phMaskEmitter<A, B> {
16991    fn vcvtuqq2ph_mask(&mut self, op0: A, op1: B);
16992}
16993
16994impl<'a> Vcvtuqq2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
16995    fn vcvtuqq2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
16996        self.emit(
16997            VCVTUQQ2PH128RR_MASK,
16998            op0.as_operand(),
16999            op1.as_operand(),
17000            &NOREG,
17001            &NOREG,
17002        );
17003    }
17004}
17005
17006impl<'a> Vcvtuqq2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
17007    fn vcvtuqq2ph_mask(&mut self, op0: Xmm, op1: Mem) {
17008        self.emit(
17009            VCVTUQQ2PH128RM_MASK,
17010            op0.as_operand(),
17011            op1.as_operand(),
17012            &NOREG,
17013            &NOREG,
17014        );
17015    }
17016}
17017
17018impl<'a> Vcvtuqq2phMaskEmitter<Xmm, Ymm> for Assembler<'a> {
17019    fn vcvtuqq2ph_mask(&mut self, op0: Xmm, op1: Ymm) {
17020        self.emit(
17021            VCVTUQQ2PH256RR_MASK,
17022            op0.as_operand(),
17023            op1.as_operand(),
17024            &NOREG,
17025            &NOREG,
17026        );
17027    }
17028}
17029
17030impl<'a> Vcvtuqq2phMaskEmitter<Xmm, Zmm> for Assembler<'a> {
17031    fn vcvtuqq2ph_mask(&mut self, op0: Xmm, op1: Zmm) {
17032        self.emit(
17033            VCVTUQQ2PH512RR_MASK,
17034            op0.as_operand(),
17035            op1.as_operand(),
17036            &NOREG,
17037            &NOREG,
17038        );
17039    }
17040}
17041
17042/// `VCVTUQQ2PH_MASK_ER`.
17043///
17044/// Supported operand variants:
17045///
17046/// ```text
17047/// +---+----------+
17048/// | # | Operands |
17049/// +---+----------+
17050/// | 1 | Xmm, Zmm |
17051/// +---+----------+
17052/// ```
17053pub trait Vcvtuqq2phMaskErEmitter<A, B> {
17054    fn vcvtuqq2ph_mask_er(&mut self, op0: A, op1: B);
17055}
17056
17057impl<'a> Vcvtuqq2phMaskErEmitter<Xmm, Zmm> for Assembler<'a> {
17058    fn vcvtuqq2ph_mask_er(&mut self, op0: Xmm, op1: Zmm) {
17059        self.emit(
17060            VCVTUQQ2PH512RR_MASK_ER,
17061            op0.as_operand(),
17062            op1.as_operand(),
17063            &NOREG,
17064            &NOREG,
17065        );
17066    }
17067}
17068
17069/// `VCVTUQQ2PH_MASKZ`.
17070///
17071/// Supported operand variants:
17072///
17073/// ```text
17074/// +---+----------+
17075/// | # | Operands |
17076/// +---+----------+
17077/// | 1 | Xmm, Mem |
17078/// | 2 | Xmm, Xmm |
17079/// | 3 | Xmm, Ymm |
17080/// | 4 | Xmm, Zmm |
17081/// +---+----------+
17082/// ```
17083pub trait Vcvtuqq2phMaskzEmitter<A, B> {
17084    fn vcvtuqq2ph_maskz(&mut self, op0: A, op1: B);
17085}
17086
17087impl<'a> Vcvtuqq2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
17088    fn vcvtuqq2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
17089        self.emit(
17090            VCVTUQQ2PH128RR_MASKZ,
17091            op0.as_operand(),
17092            op1.as_operand(),
17093            &NOREG,
17094            &NOREG,
17095        );
17096    }
17097}
17098
17099impl<'a> Vcvtuqq2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
17100    fn vcvtuqq2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
17101        self.emit(
17102            VCVTUQQ2PH128RM_MASKZ,
17103            op0.as_operand(),
17104            op1.as_operand(),
17105            &NOREG,
17106            &NOREG,
17107        );
17108    }
17109}
17110
17111impl<'a> Vcvtuqq2phMaskzEmitter<Xmm, Ymm> for Assembler<'a> {
17112    fn vcvtuqq2ph_maskz(&mut self, op0: Xmm, op1: Ymm) {
17113        self.emit(
17114            VCVTUQQ2PH256RR_MASKZ,
17115            op0.as_operand(),
17116            op1.as_operand(),
17117            &NOREG,
17118            &NOREG,
17119        );
17120    }
17121}
17122
17123impl<'a> Vcvtuqq2phMaskzEmitter<Xmm, Zmm> for Assembler<'a> {
17124    fn vcvtuqq2ph_maskz(&mut self, op0: Xmm, op1: Zmm) {
17125        self.emit(
17126            VCVTUQQ2PH512RR_MASKZ,
17127            op0.as_operand(),
17128            op1.as_operand(),
17129            &NOREG,
17130            &NOREG,
17131        );
17132    }
17133}
17134
17135/// `VCVTUQQ2PH_MASKZ_ER`.
17136///
17137/// Supported operand variants:
17138///
17139/// ```text
17140/// +---+----------+
17141/// | # | Operands |
17142/// +---+----------+
17143/// | 1 | Xmm, Zmm |
17144/// +---+----------+
17145/// ```
17146pub trait Vcvtuqq2phMaskzErEmitter<A, B> {
17147    fn vcvtuqq2ph_maskz_er(&mut self, op0: A, op1: B);
17148}
17149
17150impl<'a> Vcvtuqq2phMaskzErEmitter<Xmm, Zmm> for Assembler<'a> {
17151    fn vcvtuqq2ph_maskz_er(&mut self, op0: Xmm, op1: Zmm) {
17152        self.emit(
17153            VCVTUQQ2PH512RR_MASKZ_ER,
17154            op0.as_operand(),
17155            op1.as_operand(),
17156            &NOREG,
17157            &NOREG,
17158        );
17159    }
17160}
17161
17162/// `VCVTUSI2SH`.
17163///
17164/// Supported operand variants:
17165///
17166/// ```text
17167/// +---+---------------+
17168/// | # | Operands      |
17169/// +---+---------------+
17170/// | 1 | Xmm, Xmm, Gpd |
17171/// | 2 | Xmm, Xmm, Gpq |
17172/// | 3 | Xmm, Xmm, Mem |
17173/// +---+---------------+
17174/// ```
17175pub trait Vcvtusi2shEmitter<A, B, C> {
17176    fn vcvtusi2sh(&mut self, op0: A, op1: B, op2: C);
17177}
17178
17179impl<'a> Vcvtusi2shEmitter<Xmm, Xmm, Gpd> for Assembler<'a> {
17180    fn vcvtusi2sh(&mut self, op0: Xmm, op1: Xmm, op2: Gpd) {
17181        self.emit(
17182            VCVTUSI2SH32RRR,
17183            op0.as_operand(),
17184            op1.as_operand(),
17185            op2.as_operand(),
17186            &NOREG,
17187        );
17188    }
17189}
17190
17191impl<'a> Vcvtusi2shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
17192    fn vcvtusi2sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
17193        self.emit(
17194            VCVTUSI2SH32RRM,
17195            op0.as_operand(),
17196            op1.as_operand(),
17197            op2.as_operand(),
17198            &NOREG,
17199        );
17200    }
17201}
17202
17203impl<'a> Vcvtusi2shEmitter<Xmm, Xmm, Gpq> for Assembler<'a> {
17204    fn vcvtusi2sh(&mut self, op0: Xmm, op1: Xmm, op2: Gpq) {
17205        self.emit(
17206            VCVTUSI2SH64RRR,
17207            op0.as_operand(),
17208            op1.as_operand(),
17209            op2.as_operand(),
17210            &NOREG,
17211        );
17212    }
17213}
17214
17215/// `VCVTUSI2SH_ER`.
17216///
17217/// Supported operand variants:
17218///
17219/// ```text
17220/// +---+---------------+
17221/// | # | Operands      |
17222/// +---+---------------+
17223/// | 1 | Xmm, Xmm, Gpd |
17224/// | 2 | Xmm, Xmm, Gpq |
17225/// +---+---------------+
17226/// ```
17227pub trait Vcvtusi2shErEmitter<A, B, C> {
17228    fn vcvtusi2sh_er(&mut self, op0: A, op1: B, op2: C);
17229}
17230
17231impl<'a> Vcvtusi2shErEmitter<Xmm, Xmm, Gpd> for Assembler<'a> {
17232    fn vcvtusi2sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Gpd) {
17233        self.emit(
17234            VCVTUSI2SH32RRR_ER,
17235            op0.as_operand(),
17236            op1.as_operand(),
17237            op2.as_operand(),
17238            &NOREG,
17239        );
17240    }
17241}
17242
17243impl<'a> Vcvtusi2shErEmitter<Xmm, Xmm, Gpq> for Assembler<'a> {
17244    fn vcvtusi2sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Gpq) {
17245        self.emit(
17246            VCVTUSI2SH64RRR_ER,
17247            op0.as_operand(),
17248            op1.as_operand(),
17249            op2.as_operand(),
17250            &NOREG,
17251        );
17252    }
17253}
17254
17255/// `VCVTUW2PH`.
17256///
17257/// Supported operand variants:
17258///
17259/// ```text
17260/// +---+----------+
17261/// | # | Operands |
17262/// +---+----------+
17263/// | 1 | Xmm, Mem |
17264/// | 2 | Xmm, Xmm |
17265/// | 3 | Ymm, Mem |
17266/// | 4 | Ymm, Ymm |
17267/// | 5 | Zmm, Mem |
17268/// | 6 | Zmm, Zmm |
17269/// +---+----------+
17270/// ```
17271pub trait Vcvtuw2phEmitter<A, B> {
17272    fn vcvtuw2ph(&mut self, op0: A, op1: B);
17273}
17274
17275impl<'a> Vcvtuw2phEmitter<Xmm, Xmm> for Assembler<'a> {
17276    fn vcvtuw2ph(&mut self, op0: Xmm, op1: Xmm) {
17277        self.emit(
17278            VCVTUW2PH128RR,
17279            op0.as_operand(),
17280            op1.as_operand(),
17281            &NOREG,
17282            &NOREG,
17283        );
17284    }
17285}
17286
17287impl<'a> Vcvtuw2phEmitter<Xmm, Mem> for Assembler<'a> {
17288    fn vcvtuw2ph(&mut self, op0: Xmm, op1: Mem) {
17289        self.emit(
17290            VCVTUW2PH128RM,
17291            op0.as_operand(),
17292            op1.as_operand(),
17293            &NOREG,
17294            &NOREG,
17295        );
17296    }
17297}
17298
17299impl<'a> Vcvtuw2phEmitter<Ymm, Ymm> for Assembler<'a> {
17300    fn vcvtuw2ph(&mut self, op0: Ymm, op1: Ymm) {
17301        self.emit(
17302            VCVTUW2PH256RR,
17303            op0.as_operand(),
17304            op1.as_operand(),
17305            &NOREG,
17306            &NOREG,
17307        );
17308    }
17309}
17310
17311impl<'a> Vcvtuw2phEmitter<Ymm, Mem> for Assembler<'a> {
17312    fn vcvtuw2ph(&mut self, op0: Ymm, op1: Mem) {
17313        self.emit(
17314            VCVTUW2PH256RM,
17315            op0.as_operand(),
17316            op1.as_operand(),
17317            &NOREG,
17318            &NOREG,
17319        );
17320    }
17321}
17322
17323impl<'a> Vcvtuw2phEmitter<Zmm, Zmm> for Assembler<'a> {
17324    fn vcvtuw2ph(&mut self, op0: Zmm, op1: Zmm) {
17325        self.emit(
17326            VCVTUW2PH512RR,
17327            op0.as_operand(),
17328            op1.as_operand(),
17329            &NOREG,
17330            &NOREG,
17331        );
17332    }
17333}
17334
17335impl<'a> Vcvtuw2phEmitter<Zmm, Mem> for Assembler<'a> {
17336    fn vcvtuw2ph(&mut self, op0: Zmm, op1: Mem) {
17337        self.emit(
17338            VCVTUW2PH512RM,
17339            op0.as_operand(),
17340            op1.as_operand(),
17341            &NOREG,
17342            &NOREG,
17343        );
17344    }
17345}
17346
17347/// `VCVTUW2PH_ER`.
17348///
17349/// Supported operand variants:
17350///
17351/// ```text
17352/// +---+----------+
17353/// | # | Operands |
17354/// +---+----------+
17355/// | 1 | Zmm, Zmm |
17356/// +---+----------+
17357/// ```
17358pub trait Vcvtuw2phErEmitter<A, B> {
17359    fn vcvtuw2ph_er(&mut self, op0: A, op1: B);
17360}
17361
17362impl<'a> Vcvtuw2phErEmitter<Zmm, Zmm> for Assembler<'a> {
17363    fn vcvtuw2ph_er(&mut self, op0: Zmm, op1: Zmm) {
17364        self.emit(
17365            VCVTUW2PH512RR_ER,
17366            op0.as_operand(),
17367            op1.as_operand(),
17368            &NOREG,
17369            &NOREG,
17370        );
17371    }
17372}
17373
17374/// `VCVTUW2PH_MASK`.
17375///
17376/// Supported operand variants:
17377///
17378/// ```text
17379/// +---+----------+
17380/// | # | Operands |
17381/// +---+----------+
17382/// | 1 | Xmm, Mem |
17383/// | 2 | Xmm, Xmm |
17384/// | 3 | Ymm, Mem |
17385/// | 4 | Ymm, Ymm |
17386/// | 5 | Zmm, Mem |
17387/// | 6 | Zmm, Zmm |
17388/// +---+----------+
17389/// ```
17390pub trait Vcvtuw2phMaskEmitter<A, B> {
17391    fn vcvtuw2ph_mask(&mut self, op0: A, op1: B);
17392}
17393
17394impl<'a> Vcvtuw2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
17395    fn vcvtuw2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
17396        self.emit(
17397            VCVTUW2PH128RR_MASK,
17398            op0.as_operand(),
17399            op1.as_operand(),
17400            &NOREG,
17401            &NOREG,
17402        );
17403    }
17404}
17405
17406impl<'a> Vcvtuw2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
17407    fn vcvtuw2ph_mask(&mut self, op0: Xmm, op1: Mem) {
17408        self.emit(
17409            VCVTUW2PH128RM_MASK,
17410            op0.as_operand(),
17411            op1.as_operand(),
17412            &NOREG,
17413            &NOREG,
17414        );
17415    }
17416}
17417
17418impl<'a> Vcvtuw2phMaskEmitter<Ymm, Ymm> for Assembler<'a> {
17419    fn vcvtuw2ph_mask(&mut self, op0: Ymm, op1: Ymm) {
17420        self.emit(
17421            VCVTUW2PH256RR_MASK,
17422            op0.as_operand(),
17423            op1.as_operand(),
17424            &NOREG,
17425            &NOREG,
17426        );
17427    }
17428}
17429
17430impl<'a> Vcvtuw2phMaskEmitter<Ymm, Mem> for Assembler<'a> {
17431    fn vcvtuw2ph_mask(&mut self, op0: Ymm, op1: Mem) {
17432        self.emit(
17433            VCVTUW2PH256RM_MASK,
17434            op0.as_operand(),
17435            op1.as_operand(),
17436            &NOREG,
17437            &NOREG,
17438        );
17439    }
17440}
17441
17442impl<'a> Vcvtuw2phMaskEmitter<Zmm, Zmm> for Assembler<'a> {
17443    fn vcvtuw2ph_mask(&mut self, op0: Zmm, op1: Zmm) {
17444        self.emit(
17445            VCVTUW2PH512RR_MASK,
17446            op0.as_operand(),
17447            op1.as_operand(),
17448            &NOREG,
17449            &NOREG,
17450        );
17451    }
17452}
17453
17454impl<'a> Vcvtuw2phMaskEmitter<Zmm, Mem> for Assembler<'a> {
17455    fn vcvtuw2ph_mask(&mut self, op0: Zmm, op1: Mem) {
17456        self.emit(
17457            VCVTUW2PH512RM_MASK,
17458            op0.as_operand(),
17459            op1.as_operand(),
17460            &NOREG,
17461            &NOREG,
17462        );
17463    }
17464}
17465
17466/// `VCVTUW2PH_MASK_ER`.
17467///
17468/// Supported operand variants:
17469///
17470/// ```text
17471/// +---+----------+
17472/// | # | Operands |
17473/// +---+----------+
17474/// | 1 | Zmm, Zmm |
17475/// +---+----------+
17476/// ```
17477pub trait Vcvtuw2phMaskErEmitter<A, B> {
17478    fn vcvtuw2ph_mask_er(&mut self, op0: A, op1: B);
17479}
17480
17481impl<'a> Vcvtuw2phMaskErEmitter<Zmm, Zmm> for Assembler<'a> {
17482    fn vcvtuw2ph_mask_er(&mut self, op0: Zmm, op1: Zmm) {
17483        self.emit(
17484            VCVTUW2PH512RR_MASK_ER,
17485            op0.as_operand(),
17486            op1.as_operand(),
17487            &NOREG,
17488            &NOREG,
17489        );
17490    }
17491}
17492
17493/// `VCVTUW2PH_MASKZ`.
17494///
17495/// Supported operand variants:
17496///
17497/// ```text
17498/// +---+----------+
17499/// | # | Operands |
17500/// +---+----------+
17501/// | 1 | Xmm, Mem |
17502/// | 2 | Xmm, Xmm |
17503/// | 3 | Ymm, Mem |
17504/// | 4 | Ymm, Ymm |
17505/// | 5 | Zmm, Mem |
17506/// | 6 | Zmm, Zmm |
17507/// +---+----------+
17508/// ```
17509pub trait Vcvtuw2phMaskzEmitter<A, B> {
17510    fn vcvtuw2ph_maskz(&mut self, op0: A, op1: B);
17511}
17512
17513impl<'a> Vcvtuw2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
17514    fn vcvtuw2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
17515        self.emit(
17516            VCVTUW2PH128RR_MASKZ,
17517            op0.as_operand(),
17518            op1.as_operand(),
17519            &NOREG,
17520            &NOREG,
17521        );
17522    }
17523}
17524
17525impl<'a> Vcvtuw2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
17526    fn vcvtuw2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
17527        self.emit(
17528            VCVTUW2PH128RM_MASKZ,
17529            op0.as_operand(),
17530            op1.as_operand(),
17531            &NOREG,
17532            &NOREG,
17533        );
17534    }
17535}
17536
17537impl<'a> Vcvtuw2phMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
17538    fn vcvtuw2ph_maskz(&mut self, op0: Ymm, op1: Ymm) {
17539        self.emit(
17540            VCVTUW2PH256RR_MASKZ,
17541            op0.as_operand(),
17542            op1.as_operand(),
17543            &NOREG,
17544            &NOREG,
17545        );
17546    }
17547}
17548
17549impl<'a> Vcvtuw2phMaskzEmitter<Ymm, Mem> for Assembler<'a> {
17550    fn vcvtuw2ph_maskz(&mut self, op0: Ymm, op1: Mem) {
17551        self.emit(
17552            VCVTUW2PH256RM_MASKZ,
17553            op0.as_operand(),
17554            op1.as_operand(),
17555            &NOREG,
17556            &NOREG,
17557        );
17558    }
17559}
17560
17561impl<'a> Vcvtuw2phMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
17562    fn vcvtuw2ph_maskz(&mut self, op0: Zmm, op1: Zmm) {
17563        self.emit(
17564            VCVTUW2PH512RR_MASKZ,
17565            op0.as_operand(),
17566            op1.as_operand(),
17567            &NOREG,
17568            &NOREG,
17569        );
17570    }
17571}
17572
17573impl<'a> Vcvtuw2phMaskzEmitter<Zmm, Mem> for Assembler<'a> {
17574    fn vcvtuw2ph_maskz(&mut self, op0: Zmm, op1: Mem) {
17575        self.emit(
17576            VCVTUW2PH512RM_MASKZ,
17577            op0.as_operand(),
17578            op1.as_operand(),
17579            &NOREG,
17580            &NOREG,
17581        );
17582    }
17583}
17584
17585/// `VCVTUW2PH_MASKZ_ER`.
17586///
17587/// Supported operand variants:
17588///
17589/// ```text
17590/// +---+----------+
17591/// | # | Operands |
17592/// +---+----------+
17593/// | 1 | Zmm, Zmm |
17594/// +---+----------+
17595/// ```
17596pub trait Vcvtuw2phMaskzErEmitter<A, B> {
17597    fn vcvtuw2ph_maskz_er(&mut self, op0: A, op1: B);
17598}
17599
17600impl<'a> Vcvtuw2phMaskzErEmitter<Zmm, Zmm> for Assembler<'a> {
17601    fn vcvtuw2ph_maskz_er(&mut self, op0: Zmm, op1: Zmm) {
17602        self.emit(
17603            VCVTUW2PH512RR_MASKZ_ER,
17604            op0.as_operand(),
17605            op1.as_operand(),
17606            &NOREG,
17607            &NOREG,
17608        );
17609    }
17610}
17611
17612/// `VCVTW2PH`.
17613///
17614/// Supported operand variants:
17615///
17616/// ```text
17617/// +---+----------+
17618/// | # | Operands |
17619/// +---+----------+
17620/// | 1 | Xmm, Mem |
17621/// | 2 | Xmm, Xmm |
17622/// | 3 | Ymm, Mem |
17623/// | 4 | Ymm, Ymm |
17624/// | 5 | Zmm, Mem |
17625/// | 6 | Zmm, Zmm |
17626/// +---+----------+
17627/// ```
17628pub trait Vcvtw2phEmitter<A, B> {
17629    fn vcvtw2ph(&mut self, op0: A, op1: B);
17630}
17631
17632impl<'a> Vcvtw2phEmitter<Xmm, Xmm> for Assembler<'a> {
17633    fn vcvtw2ph(&mut self, op0: Xmm, op1: Xmm) {
17634        self.emit(
17635            VCVTW2PH128RR,
17636            op0.as_operand(),
17637            op1.as_operand(),
17638            &NOREG,
17639            &NOREG,
17640        );
17641    }
17642}
17643
17644impl<'a> Vcvtw2phEmitter<Xmm, Mem> for Assembler<'a> {
17645    fn vcvtw2ph(&mut self, op0: Xmm, op1: Mem) {
17646        self.emit(
17647            VCVTW2PH128RM,
17648            op0.as_operand(),
17649            op1.as_operand(),
17650            &NOREG,
17651            &NOREG,
17652        );
17653    }
17654}
17655
17656impl<'a> Vcvtw2phEmitter<Ymm, Ymm> for Assembler<'a> {
17657    fn vcvtw2ph(&mut self, op0: Ymm, op1: Ymm) {
17658        self.emit(
17659            VCVTW2PH256RR,
17660            op0.as_operand(),
17661            op1.as_operand(),
17662            &NOREG,
17663            &NOREG,
17664        );
17665    }
17666}
17667
17668impl<'a> Vcvtw2phEmitter<Ymm, Mem> for Assembler<'a> {
17669    fn vcvtw2ph(&mut self, op0: Ymm, op1: Mem) {
17670        self.emit(
17671            VCVTW2PH256RM,
17672            op0.as_operand(),
17673            op1.as_operand(),
17674            &NOREG,
17675            &NOREG,
17676        );
17677    }
17678}
17679
17680impl<'a> Vcvtw2phEmitter<Zmm, Zmm> for Assembler<'a> {
17681    fn vcvtw2ph(&mut self, op0: Zmm, op1: Zmm) {
17682        self.emit(
17683            VCVTW2PH512RR,
17684            op0.as_operand(),
17685            op1.as_operand(),
17686            &NOREG,
17687            &NOREG,
17688        );
17689    }
17690}
17691
17692impl<'a> Vcvtw2phEmitter<Zmm, Mem> for Assembler<'a> {
17693    fn vcvtw2ph(&mut self, op0: Zmm, op1: Mem) {
17694        self.emit(
17695            VCVTW2PH512RM,
17696            op0.as_operand(),
17697            op1.as_operand(),
17698            &NOREG,
17699            &NOREG,
17700        );
17701    }
17702}
17703
17704/// `VCVTW2PH_ER`.
17705///
17706/// Supported operand variants:
17707///
17708/// ```text
17709/// +---+----------+
17710/// | # | Operands |
17711/// +---+----------+
17712/// | 1 | Zmm, Zmm |
17713/// +---+----------+
17714/// ```
17715pub trait Vcvtw2phErEmitter<A, B> {
17716    fn vcvtw2ph_er(&mut self, op0: A, op1: B);
17717}
17718
17719impl<'a> Vcvtw2phErEmitter<Zmm, Zmm> for Assembler<'a> {
17720    fn vcvtw2ph_er(&mut self, op0: Zmm, op1: Zmm) {
17721        self.emit(
17722            VCVTW2PH512RR_ER,
17723            op0.as_operand(),
17724            op1.as_operand(),
17725            &NOREG,
17726            &NOREG,
17727        );
17728    }
17729}
17730
17731/// `VCVTW2PH_MASK`.
17732///
17733/// Supported operand variants:
17734///
17735/// ```text
17736/// +---+----------+
17737/// | # | Operands |
17738/// +---+----------+
17739/// | 1 | Xmm, Mem |
17740/// | 2 | Xmm, Xmm |
17741/// | 3 | Ymm, Mem |
17742/// | 4 | Ymm, Ymm |
17743/// | 5 | Zmm, Mem |
17744/// | 6 | Zmm, Zmm |
17745/// +---+----------+
17746/// ```
17747pub trait Vcvtw2phMaskEmitter<A, B> {
17748    fn vcvtw2ph_mask(&mut self, op0: A, op1: B);
17749}
17750
17751impl<'a> Vcvtw2phMaskEmitter<Xmm, Xmm> for Assembler<'a> {
17752    fn vcvtw2ph_mask(&mut self, op0: Xmm, op1: Xmm) {
17753        self.emit(
17754            VCVTW2PH128RR_MASK,
17755            op0.as_operand(),
17756            op1.as_operand(),
17757            &NOREG,
17758            &NOREG,
17759        );
17760    }
17761}
17762
17763impl<'a> Vcvtw2phMaskEmitter<Xmm, Mem> for Assembler<'a> {
17764    fn vcvtw2ph_mask(&mut self, op0: Xmm, op1: Mem) {
17765        self.emit(
17766            VCVTW2PH128RM_MASK,
17767            op0.as_operand(),
17768            op1.as_operand(),
17769            &NOREG,
17770            &NOREG,
17771        );
17772    }
17773}
17774
17775impl<'a> Vcvtw2phMaskEmitter<Ymm, Ymm> for Assembler<'a> {
17776    fn vcvtw2ph_mask(&mut self, op0: Ymm, op1: Ymm) {
17777        self.emit(
17778            VCVTW2PH256RR_MASK,
17779            op0.as_operand(),
17780            op1.as_operand(),
17781            &NOREG,
17782            &NOREG,
17783        );
17784    }
17785}
17786
17787impl<'a> Vcvtw2phMaskEmitter<Ymm, Mem> for Assembler<'a> {
17788    fn vcvtw2ph_mask(&mut self, op0: Ymm, op1: Mem) {
17789        self.emit(
17790            VCVTW2PH256RM_MASK,
17791            op0.as_operand(),
17792            op1.as_operand(),
17793            &NOREG,
17794            &NOREG,
17795        );
17796    }
17797}
17798
17799impl<'a> Vcvtw2phMaskEmitter<Zmm, Zmm> for Assembler<'a> {
17800    fn vcvtw2ph_mask(&mut self, op0: Zmm, op1: Zmm) {
17801        self.emit(
17802            VCVTW2PH512RR_MASK,
17803            op0.as_operand(),
17804            op1.as_operand(),
17805            &NOREG,
17806            &NOREG,
17807        );
17808    }
17809}
17810
17811impl<'a> Vcvtw2phMaskEmitter<Zmm, Mem> for Assembler<'a> {
17812    fn vcvtw2ph_mask(&mut self, op0: Zmm, op1: Mem) {
17813        self.emit(
17814            VCVTW2PH512RM_MASK,
17815            op0.as_operand(),
17816            op1.as_operand(),
17817            &NOREG,
17818            &NOREG,
17819        );
17820    }
17821}
17822
17823/// `VCVTW2PH_MASK_ER`.
17824///
17825/// Supported operand variants:
17826///
17827/// ```text
17828/// +---+----------+
17829/// | # | Operands |
17830/// +---+----------+
17831/// | 1 | Zmm, Zmm |
17832/// +---+----------+
17833/// ```
17834pub trait Vcvtw2phMaskErEmitter<A, B> {
17835    fn vcvtw2ph_mask_er(&mut self, op0: A, op1: B);
17836}
17837
17838impl<'a> Vcvtw2phMaskErEmitter<Zmm, Zmm> for Assembler<'a> {
17839    fn vcvtw2ph_mask_er(&mut self, op0: Zmm, op1: Zmm) {
17840        self.emit(
17841            VCVTW2PH512RR_MASK_ER,
17842            op0.as_operand(),
17843            op1.as_operand(),
17844            &NOREG,
17845            &NOREG,
17846        );
17847    }
17848}
17849
17850/// `VCVTW2PH_MASKZ`.
17851///
17852/// Supported operand variants:
17853///
17854/// ```text
17855/// +---+----------+
17856/// | # | Operands |
17857/// +---+----------+
17858/// | 1 | Xmm, Mem |
17859/// | 2 | Xmm, Xmm |
17860/// | 3 | Ymm, Mem |
17861/// | 4 | Ymm, Ymm |
17862/// | 5 | Zmm, Mem |
17863/// | 6 | Zmm, Zmm |
17864/// +---+----------+
17865/// ```
17866pub trait Vcvtw2phMaskzEmitter<A, B> {
17867    fn vcvtw2ph_maskz(&mut self, op0: A, op1: B);
17868}
17869
17870impl<'a> Vcvtw2phMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
17871    fn vcvtw2ph_maskz(&mut self, op0: Xmm, op1: Xmm) {
17872        self.emit(
17873            VCVTW2PH128RR_MASKZ,
17874            op0.as_operand(),
17875            op1.as_operand(),
17876            &NOREG,
17877            &NOREG,
17878        );
17879    }
17880}
17881
17882impl<'a> Vcvtw2phMaskzEmitter<Xmm, Mem> for Assembler<'a> {
17883    fn vcvtw2ph_maskz(&mut self, op0: Xmm, op1: Mem) {
17884        self.emit(
17885            VCVTW2PH128RM_MASKZ,
17886            op0.as_operand(),
17887            op1.as_operand(),
17888            &NOREG,
17889            &NOREG,
17890        );
17891    }
17892}
17893
17894impl<'a> Vcvtw2phMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
17895    fn vcvtw2ph_maskz(&mut self, op0: Ymm, op1: Ymm) {
17896        self.emit(
17897            VCVTW2PH256RR_MASKZ,
17898            op0.as_operand(),
17899            op1.as_operand(),
17900            &NOREG,
17901            &NOREG,
17902        );
17903    }
17904}
17905
17906impl<'a> Vcvtw2phMaskzEmitter<Ymm, Mem> for Assembler<'a> {
17907    fn vcvtw2ph_maskz(&mut self, op0: Ymm, op1: Mem) {
17908        self.emit(
17909            VCVTW2PH256RM_MASKZ,
17910            op0.as_operand(),
17911            op1.as_operand(),
17912            &NOREG,
17913            &NOREG,
17914        );
17915    }
17916}
17917
17918impl<'a> Vcvtw2phMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
17919    fn vcvtw2ph_maskz(&mut self, op0: Zmm, op1: Zmm) {
17920        self.emit(
17921            VCVTW2PH512RR_MASKZ,
17922            op0.as_operand(),
17923            op1.as_operand(),
17924            &NOREG,
17925            &NOREG,
17926        );
17927    }
17928}
17929
17930impl<'a> Vcvtw2phMaskzEmitter<Zmm, Mem> for Assembler<'a> {
17931    fn vcvtw2ph_maskz(&mut self, op0: Zmm, op1: Mem) {
17932        self.emit(
17933            VCVTW2PH512RM_MASKZ,
17934            op0.as_operand(),
17935            op1.as_operand(),
17936            &NOREG,
17937            &NOREG,
17938        );
17939    }
17940}
17941
17942/// `VCVTW2PH_MASKZ_ER`.
17943///
17944/// Supported operand variants:
17945///
17946/// ```text
17947/// +---+----------+
17948/// | # | Operands |
17949/// +---+----------+
17950/// | 1 | Zmm, Zmm |
17951/// +---+----------+
17952/// ```
17953pub trait Vcvtw2phMaskzErEmitter<A, B> {
17954    fn vcvtw2ph_maskz_er(&mut self, op0: A, op1: B);
17955}
17956
17957impl<'a> Vcvtw2phMaskzErEmitter<Zmm, Zmm> for Assembler<'a> {
17958    fn vcvtw2ph_maskz_er(&mut self, op0: Zmm, op1: Zmm) {
17959        self.emit(
17960            VCVTW2PH512RR_MASKZ_ER,
17961            op0.as_operand(),
17962            op1.as_operand(),
17963            &NOREG,
17964            &NOREG,
17965        );
17966    }
17967}
17968
17969/// `VDIVPH`.
17970///
17971/// Supported operand variants:
17972///
17973/// ```text
17974/// +---+---------------+
17975/// | # | Operands      |
17976/// +---+---------------+
17977/// | 1 | Xmm, Xmm, Mem |
17978/// | 2 | Xmm, Xmm, Xmm |
17979/// | 3 | Ymm, Ymm, Mem |
17980/// | 4 | Ymm, Ymm, Ymm |
17981/// | 5 | Zmm, Zmm, Mem |
17982/// | 6 | Zmm, Zmm, Zmm |
17983/// +---+---------------+
17984/// ```
17985pub trait VdivphEmitter<A, B, C> {
17986    fn vdivph(&mut self, op0: A, op1: B, op2: C);
17987}
17988
17989impl<'a> VdivphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
17990    fn vdivph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
17991        self.emit(
17992            VDIVPH128RRR,
17993            op0.as_operand(),
17994            op1.as_operand(),
17995            op2.as_operand(),
17996            &NOREG,
17997        );
17998    }
17999}
18000
18001impl<'a> VdivphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18002    fn vdivph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18003        self.emit(
18004            VDIVPH128RRM,
18005            op0.as_operand(),
18006            op1.as_operand(),
18007            op2.as_operand(),
18008            &NOREG,
18009        );
18010    }
18011}
18012
18013impl<'a> VdivphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
18014    fn vdivph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
18015        self.emit(
18016            VDIVPH256RRR,
18017            op0.as_operand(),
18018            op1.as_operand(),
18019            op2.as_operand(),
18020            &NOREG,
18021        );
18022    }
18023}
18024
18025impl<'a> VdivphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
18026    fn vdivph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
18027        self.emit(
18028            VDIVPH256RRM,
18029            op0.as_operand(),
18030            op1.as_operand(),
18031            op2.as_operand(),
18032            &NOREG,
18033        );
18034    }
18035}
18036
18037impl<'a> VdivphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18038    fn vdivph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18039        self.emit(
18040            VDIVPH512RRR,
18041            op0.as_operand(),
18042            op1.as_operand(),
18043            op2.as_operand(),
18044            &NOREG,
18045        );
18046    }
18047}
18048
18049impl<'a> VdivphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
18050    fn vdivph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
18051        self.emit(
18052            VDIVPH512RRM,
18053            op0.as_operand(),
18054            op1.as_operand(),
18055            op2.as_operand(),
18056            &NOREG,
18057        );
18058    }
18059}
18060
18061/// `VDIVPH_ER`.
18062///
18063/// Supported operand variants:
18064///
18065/// ```text
18066/// +---+---------------+
18067/// | # | Operands      |
18068/// +---+---------------+
18069/// | 1 | Zmm, Zmm, Zmm |
18070/// +---+---------------+
18071/// ```
18072pub trait VdivphErEmitter<A, B, C> {
18073    fn vdivph_er(&mut self, op0: A, op1: B, op2: C);
18074}
18075
18076impl<'a> VdivphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18077    fn vdivph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18078        self.emit(
18079            VDIVPH512RRR_ER,
18080            op0.as_operand(),
18081            op1.as_operand(),
18082            op2.as_operand(),
18083            &NOREG,
18084        );
18085    }
18086}
18087
18088/// `VDIVPH_MASK`.
18089///
18090/// Supported operand variants:
18091///
18092/// ```text
18093/// +---+---------------+
18094/// | # | Operands      |
18095/// +---+---------------+
18096/// | 1 | Xmm, Xmm, Mem |
18097/// | 2 | Xmm, Xmm, Xmm |
18098/// | 3 | Ymm, Ymm, Mem |
18099/// | 4 | Ymm, Ymm, Ymm |
18100/// | 5 | Zmm, Zmm, Mem |
18101/// | 6 | Zmm, Zmm, Zmm |
18102/// +---+---------------+
18103/// ```
18104pub trait VdivphMaskEmitter<A, B, C> {
18105    fn vdivph_mask(&mut self, op0: A, op1: B, op2: C);
18106}
18107
18108impl<'a> VdivphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18109    fn vdivph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18110        self.emit(
18111            VDIVPH128RRR_MASK,
18112            op0.as_operand(),
18113            op1.as_operand(),
18114            op2.as_operand(),
18115            &NOREG,
18116        );
18117    }
18118}
18119
18120impl<'a> VdivphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18121    fn vdivph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18122        self.emit(
18123            VDIVPH128RRM_MASK,
18124            op0.as_operand(),
18125            op1.as_operand(),
18126            op2.as_operand(),
18127            &NOREG,
18128        );
18129    }
18130}
18131
18132impl<'a> VdivphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
18133    fn vdivph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
18134        self.emit(
18135            VDIVPH256RRR_MASK,
18136            op0.as_operand(),
18137            op1.as_operand(),
18138            op2.as_operand(),
18139            &NOREG,
18140        );
18141    }
18142}
18143
18144impl<'a> VdivphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
18145    fn vdivph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
18146        self.emit(
18147            VDIVPH256RRM_MASK,
18148            op0.as_operand(),
18149            op1.as_operand(),
18150            op2.as_operand(),
18151            &NOREG,
18152        );
18153    }
18154}
18155
18156impl<'a> VdivphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18157    fn vdivph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18158        self.emit(
18159            VDIVPH512RRR_MASK,
18160            op0.as_operand(),
18161            op1.as_operand(),
18162            op2.as_operand(),
18163            &NOREG,
18164        );
18165    }
18166}
18167
18168impl<'a> VdivphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
18169    fn vdivph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
18170        self.emit(
18171            VDIVPH512RRM_MASK,
18172            op0.as_operand(),
18173            op1.as_operand(),
18174            op2.as_operand(),
18175            &NOREG,
18176        );
18177    }
18178}
18179
18180/// `VDIVPH_MASK_ER`.
18181///
18182/// Supported operand variants:
18183///
18184/// ```text
18185/// +---+---------------+
18186/// | # | Operands      |
18187/// +---+---------------+
18188/// | 1 | Zmm, Zmm, Zmm |
18189/// +---+---------------+
18190/// ```
18191pub trait VdivphMaskErEmitter<A, B, C> {
18192    fn vdivph_mask_er(&mut self, op0: A, op1: B, op2: C);
18193}
18194
18195impl<'a> VdivphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18196    fn vdivph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18197        self.emit(
18198            VDIVPH512RRR_MASK_ER,
18199            op0.as_operand(),
18200            op1.as_operand(),
18201            op2.as_operand(),
18202            &NOREG,
18203        );
18204    }
18205}
18206
18207/// `VDIVPH_MASKZ`.
18208///
18209/// Supported operand variants:
18210///
18211/// ```text
18212/// +---+---------------+
18213/// | # | Operands      |
18214/// +---+---------------+
18215/// | 1 | Xmm, Xmm, Mem |
18216/// | 2 | Xmm, Xmm, Xmm |
18217/// | 3 | Ymm, Ymm, Mem |
18218/// | 4 | Ymm, Ymm, Ymm |
18219/// | 5 | Zmm, Zmm, Mem |
18220/// | 6 | Zmm, Zmm, Zmm |
18221/// +---+---------------+
18222/// ```
18223pub trait VdivphMaskzEmitter<A, B, C> {
18224    fn vdivph_maskz(&mut self, op0: A, op1: B, op2: C);
18225}
18226
18227impl<'a> VdivphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18228    fn vdivph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18229        self.emit(
18230            VDIVPH128RRR_MASKZ,
18231            op0.as_operand(),
18232            op1.as_operand(),
18233            op2.as_operand(),
18234            &NOREG,
18235        );
18236    }
18237}
18238
18239impl<'a> VdivphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18240    fn vdivph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18241        self.emit(
18242            VDIVPH128RRM_MASKZ,
18243            op0.as_operand(),
18244            op1.as_operand(),
18245            op2.as_operand(),
18246            &NOREG,
18247        );
18248    }
18249}
18250
18251impl<'a> VdivphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
18252    fn vdivph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
18253        self.emit(
18254            VDIVPH256RRR_MASKZ,
18255            op0.as_operand(),
18256            op1.as_operand(),
18257            op2.as_operand(),
18258            &NOREG,
18259        );
18260    }
18261}
18262
18263impl<'a> VdivphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
18264    fn vdivph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
18265        self.emit(
18266            VDIVPH256RRM_MASKZ,
18267            op0.as_operand(),
18268            op1.as_operand(),
18269            op2.as_operand(),
18270            &NOREG,
18271        );
18272    }
18273}
18274
18275impl<'a> VdivphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18276    fn vdivph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18277        self.emit(
18278            VDIVPH512RRR_MASKZ,
18279            op0.as_operand(),
18280            op1.as_operand(),
18281            op2.as_operand(),
18282            &NOREG,
18283        );
18284    }
18285}
18286
18287impl<'a> VdivphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
18288    fn vdivph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
18289        self.emit(
18290            VDIVPH512RRM_MASKZ,
18291            op0.as_operand(),
18292            op1.as_operand(),
18293            op2.as_operand(),
18294            &NOREG,
18295        );
18296    }
18297}
18298
18299/// `VDIVPH_MASKZ_ER`.
18300///
18301/// Supported operand variants:
18302///
18303/// ```text
18304/// +---+---------------+
18305/// | # | Operands      |
18306/// +---+---------------+
18307/// | 1 | Zmm, Zmm, Zmm |
18308/// +---+---------------+
18309/// ```
18310pub trait VdivphMaskzErEmitter<A, B, C> {
18311    fn vdivph_maskz_er(&mut self, op0: A, op1: B, op2: C);
18312}
18313
18314impl<'a> VdivphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18315    fn vdivph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18316        self.emit(
18317            VDIVPH512RRR_MASKZ_ER,
18318            op0.as_operand(),
18319            op1.as_operand(),
18320            op2.as_operand(),
18321            &NOREG,
18322        );
18323    }
18324}
18325
18326/// `VDIVSH`.
18327///
18328/// Supported operand variants:
18329///
18330/// ```text
18331/// +---+---------------+
18332/// | # | Operands      |
18333/// +---+---------------+
18334/// | 1 | Xmm, Xmm, Mem |
18335/// | 2 | Xmm, Xmm, Xmm |
18336/// +---+---------------+
18337/// ```
18338pub trait VdivshEmitter<A, B, C> {
18339    fn vdivsh(&mut self, op0: A, op1: B, op2: C);
18340}
18341
18342impl<'a> VdivshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18343    fn vdivsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18344        self.emit(
18345            VDIVSHRRR,
18346            op0.as_operand(),
18347            op1.as_operand(),
18348            op2.as_operand(),
18349            &NOREG,
18350        );
18351    }
18352}
18353
18354impl<'a> VdivshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18355    fn vdivsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18356        self.emit(
18357            VDIVSHRRM,
18358            op0.as_operand(),
18359            op1.as_operand(),
18360            op2.as_operand(),
18361            &NOREG,
18362        );
18363    }
18364}
18365
18366/// `VDIVSH_ER`.
18367///
18368/// Supported operand variants:
18369///
18370/// ```text
18371/// +---+---------------+
18372/// | # | Operands      |
18373/// +---+---------------+
18374/// | 1 | Xmm, Xmm, Xmm |
18375/// +---+---------------+
18376/// ```
18377pub trait VdivshErEmitter<A, B, C> {
18378    fn vdivsh_er(&mut self, op0: A, op1: B, op2: C);
18379}
18380
18381impl<'a> VdivshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18382    fn vdivsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18383        self.emit(
18384            VDIVSHRRR_ER,
18385            op0.as_operand(),
18386            op1.as_operand(),
18387            op2.as_operand(),
18388            &NOREG,
18389        );
18390    }
18391}
18392
18393/// `VDIVSH_MASK`.
18394///
18395/// Supported operand variants:
18396///
18397/// ```text
18398/// +---+---------------+
18399/// | # | Operands      |
18400/// +---+---------------+
18401/// | 1 | Xmm, Xmm, Mem |
18402/// | 2 | Xmm, Xmm, Xmm |
18403/// +---+---------------+
18404/// ```
18405pub trait VdivshMaskEmitter<A, B, C> {
18406    fn vdivsh_mask(&mut self, op0: A, op1: B, op2: C);
18407}
18408
18409impl<'a> VdivshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18410    fn vdivsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18411        self.emit(
18412            VDIVSHRRR_MASK,
18413            op0.as_operand(),
18414            op1.as_operand(),
18415            op2.as_operand(),
18416            &NOREG,
18417        );
18418    }
18419}
18420
18421impl<'a> VdivshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18422    fn vdivsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18423        self.emit(
18424            VDIVSHRRM_MASK,
18425            op0.as_operand(),
18426            op1.as_operand(),
18427            op2.as_operand(),
18428            &NOREG,
18429        );
18430    }
18431}
18432
18433/// `VDIVSH_MASK_ER`.
18434///
18435/// Supported operand variants:
18436///
18437/// ```text
18438/// +---+---------------+
18439/// | # | Operands      |
18440/// +---+---------------+
18441/// | 1 | Xmm, Xmm, Xmm |
18442/// +---+---------------+
18443/// ```
18444pub trait VdivshMaskErEmitter<A, B, C> {
18445    fn vdivsh_mask_er(&mut self, op0: A, op1: B, op2: C);
18446}
18447
18448impl<'a> VdivshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18449    fn vdivsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18450        self.emit(
18451            VDIVSHRRR_MASK_ER,
18452            op0.as_operand(),
18453            op1.as_operand(),
18454            op2.as_operand(),
18455            &NOREG,
18456        );
18457    }
18458}
18459
18460/// `VDIVSH_MASKZ`.
18461///
18462/// Supported operand variants:
18463///
18464/// ```text
18465/// +---+---------------+
18466/// | # | Operands      |
18467/// +---+---------------+
18468/// | 1 | Xmm, Xmm, Mem |
18469/// | 2 | Xmm, Xmm, Xmm |
18470/// +---+---------------+
18471/// ```
18472pub trait VdivshMaskzEmitter<A, B, C> {
18473    fn vdivsh_maskz(&mut self, op0: A, op1: B, op2: C);
18474}
18475
18476impl<'a> VdivshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18477    fn vdivsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18478        self.emit(
18479            VDIVSHRRR_MASKZ,
18480            op0.as_operand(),
18481            op1.as_operand(),
18482            op2.as_operand(),
18483            &NOREG,
18484        );
18485    }
18486}
18487
18488impl<'a> VdivshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18489    fn vdivsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18490        self.emit(
18491            VDIVSHRRM_MASKZ,
18492            op0.as_operand(),
18493            op1.as_operand(),
18494            op2.as_operand(),
18495            &NOREG,
18496        );
18497    }
18498}
18499
18500/// `VDIVSH_MASKZ_ER`.
18501///
18502/// Supported operand variants:
18503///
18504/// ```text
18505/// +---+---------------+
18506/// | # | Operands      |
18507/// +---+---------------+
18508/// | 1 | Xmm, Xmm, Xmm |
18509/// +---+---------------+
18510/// ```
18511pub trait VdivshMaskzErEmitter<A, B, C> {
18512    fn vdivsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
18513}
18514
18515impl<'a> VdivshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18516    fn vdivsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18517        self.emit(
18518            VDIVSHRRR_MASKZ_ER,
18519            op0.as_operand(),
18520            op1.as_operand(),
18521            op2.as_operand(),
18522            &NOREG,
18523        );
18524    }
18525}
18526
18527/// `VERR`.
18528///
18529/// Supported operand variants:
18530///
18531/// ```text
18532/// +---+----------+
18533/// | # | Operands |
18534/// +---+----------+
18535/// | 1 | Gpd      |
18536/// | 2 | Mem      |
18537/// +---+----------+
18538/// ```
18539pub trait VerrEmitter<A> {
18540    fn verr(&mut self, op0: A);
18541}
18542
18543impl<'a> VerrEmitter<Gpd> for Assembler<'a> {
18544    fn verr(&mut self, op0: Gpd) {
18545        self.emit(VERRR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
18546    }
18547}
18548
18549impl<'a> VerrEmitter<Mem> for Assembler<'a> {
18550    fn verr(&mut self, op0: Mem) {
18551        self.emit(VERRM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
18552    }
18553}
18554
18555/// `VERW`.
18556///
18557/// Supported operand variants:
18558///
18559/// ```text
18560/// +---+----------+
18561/// | # | Operands |
18562/// +---+----------+
18563/// | 1 | Gpd      |
18564/// | 2 | Mem      |
18565/// +---+----------+
18566/// ```
18567pub trait VerwEmitter<A> {
18568    fn verw(&mut self, op0: A);
18569}
18570
18571impl<'a> VerwEmitter<Gpd> for Assembler<'a> {
18572    fn verw(&mut self, op0: Gpd) {
18573        self.emit(VERWR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
18574    }
18575}
18576
18577impl<'a> VerwEmitter<Mem> for Assembler<'a> {
18578    fn verw(&mut self, op0: Mem) {
18579        self.emit(VERWM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
18580    }
18581}
18582
18583/// `VFCMADDCPH`.
18584///
18585/// Supported operand variants:
18586///
18587/// ```text
18588/// +---+---------------+
18589/// | # | Operands      |
18590/// +---+---------------+
18591/// | 1 | Xmm, Xmm, Mem |
18592/// | 2 | Xmm, Xmm, Xmm |
18593/// | 3 | Ymm, Ymm, Mem |
18594/// | 4 | Ymm, Ymm, Ymm |
18595/// | 5 | Zmm, Zmm, Mem |
18596/// | 6 | Zmm, Zmm, Zmm |
18597/// +---+---------------+
18598/// ```
18599pub trait VfcmaddcphEmitter<A, B, C> {
18600    fn vfcmaddcph(&mut self, op0: A, op1: B, op2: C);
18601}
18602
18603impl<'a> VfcmaddcphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18604    fn vfcmaddcph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18605        self.emit(
18606            VFCMADDCPH128RRR,
18607            op0.as_operand(),
18608            op1.as_operand(),
18609            op2.as_operand(),
18610            &NOREG,
18611        );
18612    }
18613}
18614
18615impl<'a> VfcmaddcphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18616    fn vfcmaddcph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18617        self.emit(
18618            VFCMADDCPH128RRM,
18619            op0.as_operand(),
18620            op1.as_operand(),
18621            op2.as_operand(),
18622            &NOREG,
18623        );
18624    }
18625}
18626
18627impl<'a> VfcmaddcphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
18628    fn vfcmaddcph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
18629        self.emit(
18630            VFCMADDCPH256RRR,
18631            op0.as_operand(),
18632            op1.as_operand(),
18633            op2.as_operand(),
18634            &NOREG,
18635        );
18636    }
18637}
18638
18639impl<'a> VfcmaddcphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
18640    fn vfcmaddcph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
18641        self.emit(
18642            VFCMADDCPH256RRM,
18643            op0.as_operand(),
18644            op1.as_operand(),
18645            op2.as_operand(),
18646            &NOREG,
18647        );
18648    }
18649}
18650
18651impl<'a> VfcmaddcphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18652    fn vfcmaddcph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18653        self.emit(
18654            VFCMADDCPH512RRR,
18655            op0.as_operand(),
18656            op1.as_operand(),
18657            op2.as_operand(),
18658            &NOREG,
18659        );
18660    }
18661}
18662
18663impl<'a> VfcmaddcphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
18664    fn vfcmaddcph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
18665        self.emit(
18666            VFCMADDCPH512RRM,
18667            op0.as_operand(),
18668            op1.as_operand(),
18669            op2.as_operand(),
18670            &NOREG,
18671        );
18672    }
18673}
18674
18675/// `VFCMADDCPH_ER`.
18676///
18677/// Supported operand variants:
18678///
18679/// ```text
18680/// +---+---------------+
18681/// | # | Operands      |
18682/// +---+---------------+
18683/// | 1 | Zmm, Zmm, Zmm |
18684/// +---+---------------+
18685/// ```
18686pub trait VfcmaddcphErEmitter<A, B, C> {
18687    fn vfcmaddcph_er(&mut self, op0: A, op1: B, op2: C);
18688}
18689
18690impl<'a> VfcmaddcphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18691    fn vfcmaddcph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18692        self.emit(
18693            VFCMADDCPH512RRR_ER,
18694            op0.as_operand(),
18695            op1.as_operand(),
18696            op2.as_operand(),
18697            &NOREG,
18698        );
18699    }
18700}
18701
18702/// `VFCMADDCPH_MASK`.
18703///
18704/// Supported operand variants:
18705///
18706/// ```text
18707/// +---+---------------+
18708/// | # | Operands      |
18709/// +---+---------------+
18710/// | 1 | Xmm, Xmm, Mem |
18711/// | 2 | Xmm, Xmm, Xmm |
18712/// | 3 | Ymm, Ymm, Mem |
18713/// | 4 | Ymm, Ymm, Ymm |
18714/// | 5 | Zmm, Zmm, Mem |
18715/// | 6 | Zmm, Zmm, Zmm |
18716/// +---+---------------+
18717/// ```
18718pub trait VfcmaddcphMaskEmitter<A, B, C> {
18719    fn vfcmaddcph_mask(&mut self, op0: A, op1: B, op2: C);
18720}
18721
18722impl<'a> VfcmaddcphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18723    fn vfcmaddcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18724        self.emit(
18725            VFCMADDCPH128RRR_MASK,
18726            op0.as_operand(),
18727            op1.as_operand(),
18728            op2.as_operand(),
18729            &NOREG,
18730        );
18731    }
18732}
18733
18734impl<'a> VfcmaddcphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18735    fn vfcmaddcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18736        self.emit(
18737            VFCMADDCPH128RRM_MASK,
18738            op0.as_operand(),
18739            op1.as_operand(),
18740            op2.as_operand(),
18741            &NOREG,
18742        );
18743    }
18744}
18745
18746impl<'a> VfcmaddcphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
18747    fn vfcmaddcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
18748        self.emit(
18749            VFCMADDCPH256RRR_MASK,
18750            op0.as_operand(),
18751            op1.as_operand(),
18752            op2.as_operand(),
18753            &NOREG,
18754        );
18755    }
18756}
18757
18758impl<'a> VfcmaddcphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
18759    fn vfcmaddcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
18760        self.emit(
18761            VFCMADDCPH256RRM_MASK,
18762            op0.as_operand(),
18763            op1.as_operand(),
18764            op2.as_operand(),
18765            &NOREG,
18766        );
18767    }
18768}
18769
18770impl<'a> VfcmaddcphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18771    fn vfcmaddcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18772        self.emit(
18773            VFCMADDCPH512RRR_MASK,
18774            op0.as_operand(),
18775            op1.as_operand(),
18776            op2.as_operand(),
18777            &NOREG,
18778        );
18779    }
18780}
18781
18782impl<'a> VfcmaddcphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
18783    fn vfcmaddcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
18784        self.emit(
18785            VFCMADDCPH512RRM_MASK,
18786            op0.as_operand(),
18787            op1.as_operand(),
18788            op2.as_operand(),
18789            &NOREG,
18790        );
18791    }
18792}
18793
18794/// `VFCMADDCPH_MASK_ER`.
18795///
18796/// Supported operand variants:
18797///
18798/// ```text
18799/// +---+---------------+
18800/// | # | Operands      |
18801/// +---+---------------+
18802/// | 1 | Zmm, Zmm, Zmm |
18803/// +---+---------------+
18804/// ```
18805pub trait VfcmaddcphMaskErEmitter<A, B, C> {
18806    fn vfcmaddcph_mask_er(&mut self, op0: A, op1: B, op2: C);
18807}
18808
18809impl<'a> VfcmaddcphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18810    fn vfcmaddcph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18811        self.emit(
18812            VFCMADDCPH512RRR_MASK_ER,
18813            op0.as_operand(),
18814            op1.as_operand(),
18815            op2.as_operand(),
18816            &NOREG,
18817        );
18818    }
18819}
18820
18821/// `VFCMADDCPH_MASKZ`.
18822///
18823/// Supported operand variants:
18824///
18825/// ```text
18826/// +---+---------------+
18827/// | # | Operands      |
18828/// +---+---------------+
18829/// | 1 | Xmm, Xmm, Mem |
18830/// | 2 | Xmm, Xmm, Xmm |
18831/// | 3 | Ymm, Ymm, Mem |
18832/// | 4 | Ymm, Ymm, Ymm |
18833/// | 5 | Zmm, Zmm, Mem |
18834/// | 6 | Zmm, Zmm, Zmm |
18835/// +---+---------------+
18836/// ```
18837pub trait VfcmaddcphMaskzEmitter<A, B, C> {
18838    fn vfcmaddcph_maskz(&mut self, op0: A, op1: B, op2: C);
18839}
18840
18841impl<'a> VfcmaddcphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18842    fn vfcmaddcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18843        self.emit(
18844            VFCMADDCPH128RRR_MASKZ,
18845            op0.as_operand(),
18846            op1.as_operand(),
18847            op2.as_operand(),
18848            &NOREG,
18849        );
18850    }
18851}
18852
18853impl<'a> VfcmaddcphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18854    fn vfcmaddcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18855        self.emit(
18856            VFCMADDCPH128RRM_MASKZ,
18857            op0.as_operand(),
18858            op1.as_operand(),
18859            op2.as_operand(),
18860            &NOREG,
18861        );
18862    }
18863}
18864
18865impl<'a> VfcmaddcphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
18866    fn vfcmaddcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
18867        self.emit(
18868            VFCMADDCPH256RRR_MASKZ,
18869            op0.as_operand(),
18870            op1.as_operand(),
18871            op2.as_operand(),
18872            &NOREG,
18873        );
18874    }
18875}
18876
18877impl<'a> VfcmaddcphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
18878    fn vfcmaddcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
18879        self.emit(
18880            VFCMADDCPH256RRM_MASKZ,
18881            op0.as_operand(),
18882            op1.as_operand(),
18883            op2.as_operand(),
18884            &NOREG,
18885        );
18886    }
18887}
18888
18889impl<'a> VfcmaddcphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18890    fn vfcmaddcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18891        self.emit(
18892            VFCMADDCPH512RRR_MASKZ,
18893            op0.as_operand(),
18894            op1.as_operand(),
18895            op2.as_operand(),
18896            &NOREG,
18897        );
18898    }
18899}
18900
18901impl<'a> VfcmaddcphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
18902    fn vfcmaddcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
18903        self.emit(
18904            VFCMADDCPH512RRM_MASKZ,
18905            op0.as_operand(),
18906            op1.as_operand(),
18907            op2.as_operand(),
18908            &NOREG,
18909        );
18910    }
18911}
18912
18913/// `VFCMADDCPH_MASKZ_ER`.
18914///
18915/// Supported operand variants:
18916///
18917/// ```text
18918/// +---+---------------+
18919/// | # | Operands      |
18920/// +---+---------------+
18921/// | 1 | Zmm, Zmm, Zmm |
18922/// +---+---------------+
18923/// ```
18924pub trait VfcmaddcphMaskzErEmitter<A, B, C> {
18925    fn vfcmaddcph_maskz_er(&mut self, op0: A, op1: B, op2: C);
18926}
18927
18928impl<'a> VfcmaddcphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
18929    fn vfcmaddcph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
18930        self.emit(
18931            VFCMADDCPH512RRR_MASKZ_ER,
18932            op0.as_operand(),
18933            op1.as_operand(),
18934            op2.as_operand(),
18935            &NOREG,
18936        );
18937    }
18938}
18939
18940/// `VFCMADDCSH`.
18941///
18942/// Supported operand variants:
18943///
18944/// ```text
18945/// +---+---------------+
18946/// | # | Operands      |
18947/// +---+---------------+
18948/// | 1 | Xmm, Xmm, Mem |
18949/// | 2 | Xmm, Xmm, Xmm |
18950/// +---+---------------+
18951/// ```
18952pub trait VfcmaddcshEmitter<A, B, C> {
18953    fn vfcmaddcsh(&mut self, op0: A, op1: B, op2: C);
18954}
18955
18956impl<'a> VfcmaddcshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18957    fn vfcmaddcsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18958        self.emit(
18959            VFCMADDCSHRRR,
18960            op0.as_operand(),
18961            op1.as_operand(),
18962            op2.as_operand(),
18963            &NOREG,
18964        );
18965    }
18966}
18967
18968impl<'a> VfcmaddcshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
18969    fn vfcmaddcsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
18970        self.emit(
18971            VFCMADDCSHRRM,
18972            op0.as_operand(),
18973            op1.as_operand(),
18974            op2.as_operand(),
18975            &NOREG,
18976        );
18977    }
18978}
18979
18980/// `VFCMADDCSH_ER`.
18981///
18982/// Supported operand variants:
18983///
18984/// ```text
18985/// +---+---------------+
18986/// | # | Operands      |
18987/// +---+---------------+
18988/// | 1 | Xmm, Xmm, Xmm |
18989/// +---+---------------+
18990/// ```
18991pub trait VfcmaddcshErEmitter<A, B, C> {
18992    fn vfcmaddcsh_er(&mut self, op0: A, op1: B, op2: C);
18993}
18994
18995impl<'a> VfcmaddcshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
18996    fn vfcmaddcsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
18997        self.emit(
18998            VFCMADDCSHRRR_ER,
18999            op0.as_operand(),
19000            op1.as_operand(),
19001            op2.as_operand(),
19002            &NOREG,
19003        );
19004    }
19005}
19006
19007/// `VFCMADDCSH_MASK`.
19008///
19009/// Supported operand variants:
19010///
19011/// ```text
19012/// +---+---------------+
19013/// | # | Operands      |
19014/// +---+---------------+
19015/// | 1 | Xmm, Xmm, Mem |
19016/// | 2 | Xmm, Xmm, Xmm |
19017/// +---+---------------+
19018/// ```
19019pub trait VfcmaddcshMaskEmitter<A, B, C> {
19020    fn vfcmaddcsh_mask(&mut self, op0: A, op1: B, op2: C);
19021}
19022
19023impl<'a> VfcmaddcshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19024    fn vfcmaddcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19025        self.emit(
19026            VFCMADDCSHRRR_MASK,
19027            op0.as_operand(),
19028            op1.as_operand(),
19029            op2.as_operand(),
19030            &NOREG,
19031        );
19032    }
19033}
19034
19035impl<'a> VfcmaddcshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19036    fn vfcmaddcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19037        self.emit(
19038            VFCMADDCSHRRM_MASK,
19039            op0.as_operand(),
19040            op1.as_operand(),
19041            op2.as_operand(),
19042            &NOREG,
19043        );
19044    }
19045}
19046
19047/// `VFCMADDCSH_MASK_ER`.
19048///
19049/// Supported operand variants:
19050///
19051/// ```text
19052/// +---+---------------+
19053/// | # | Operands      |
19054/// +---+---------------+
19055/// | 1 | Xmm, Xmm, Xmm |
19056/// +---+---------------+
19057/// ```
19058pub trait VfcmaddcshMaskErEmitter<A, B, C> {
19059    fn vfcmaddcsh_mask_er(&mut self, op0: A, op1: B, op2: C);
19060}
19061
19062impl<'a> VfcmaddcshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19063    fn vfcmaddcsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19064        self.emit(
19065            VFCMADDCSHRRR_MASK_ER,
19066            op0.as_operand(),
19067            op1.as_operand(),
19068            op2.as_operand(),
19069            &NOREG,
19070        );
19071    }
19072}
19073
19074/// `VFCMADDCSH_MASKZ`.
19075///
19076/// Supported operand variants:
19077///
19078/// ```text
19079/// +---+---------------+
19080/// | # | Operands      |
19081/// +---+---------------+
19082/// | 1 | Xmm, Xmm, Mem |
19083/// | 2 | Xmm, Xmm, Xmm |
19084/// +---+---------------+
19085/// ```
19086pub trait VfcmaddcshMaskzEmitter<A, B, C> {
19087    fn vfcmaddcsh_maskz(&mut self, op0: A, op1: B, op2: C);
19088}
19089
19090impl<'a> VfcmaddcshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19091    fn vfcmaddcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19092        self.emit(
19093            VFCMADDCSHRRR_MASKZ,
19094            op0.as_operand(),
19095            op1.as_operand(),
19096            op2.as_operand(),
19097            &NOREG,
19098        );
19099    }
19100}
19101
19102impl<'a> VfcmaddcshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19103    fn vfcmaddcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19104        self.emit(
19105            VFCMADDCSHRRM_MASKZ,
19106            op0.as_operand(),
19107            op1.as_operand(),
19108            op2.as_operand(),
19109            &NOREG,
19110        );
19111    }
19112}
19113
19114/// `VFCMADDCSH_MASKZ_ER`.
19115///
19116/// Supported operand variants:
19117///
19118/// ```text
19119/// +---+---------------+
19120/// | # | Operands      |
19121/// +---+---------------+
19122/// | 1 | Xmm, Xmm, Xmm |
19123/// +---+---------------+
19124/// ```
19125pub trait VfcmaddcshMaskzErEmitter<A, B, C> {
19126    fn vfcmaddcsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
19127}
19128
19129impl<'a> VfcmaddcshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19130    fn vfcmaddcsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19131        self.emit(
19132            VFCMADDCSHRRR_MASKZ_ER,
19133            op0.as_operand(),
19134            op1.as_operand(),
19135            op2.as_operand(),
19136            &NOREG,
19137        );
19138    }
19139}
19140
19141/// `VFCMULCPH`.
19142///
19143/// Supported operand variants:
19144///
19145/// ```text
19146/// +---+---------------+
19147/// | # | Operands      |
19148/// +---+---------------+
19149/// | 1 | Xmm, Xmm, Mem |
19150/// | 2 | Xmm, Xmm, Xmm |
19151/// | 3 | Ymm, Ymm, Mem |
19152/// | 4 | Ymm, Ymm, Ymm |
19153/// | 5 | Zmm, Zmm, Mem |
19154/// | 6 | Zmm, Zmm, Zmm |
19155/// +---+---------------+
19156/// ```
19157pub trait VfcmulcphEmitter<A, B, C> {
19158    fn vfcmulcph(&mut self, op0: A, op1: B, op2: C);
19159}
19160
19161impl<'a> VfcmulcphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19162    fn vfcmulcph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19163        self.emit(
19164            VFCMULCPH128RRR,
19165            op0.as_operand(),
19166            op1.as_operand(),
19167            op2.as_operand(),
19168            &NOREG,
19169        );
19170    }
19171}
19172
19173impl<'a> VfcmulcphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19174    fn vfcmulcph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19175        self.emit(
19176            VFCMULCPH128RRM,
19177            op0.as_operand(),
19178            op1.as_operand(),
19179            op2.as_operand(),
19180            &NOREG,
19181        );
19182    }
19183}
19184
19185impl<'a> VfcmulcphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
19186    fn vfcmulcph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
19187        self.emit(
19188            VFCMULCPH256RRR,
19189            op0.as_operand(),
19190            op1.as_operand(),
19191            op2.as_operand(),
19192            &NOREG,
19193        );
19194    }
19195}
19196
19197impl<'a> VfcmulcphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
19198    fn vfcmulcph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
19199        self.emit(
19200            VFCMULCPH256RRM,
19201            op0.as_operand(),
19202            op1.as_operand(),
19203            op2.as_operand(),
19204            &NOREG,
19205        );
19206    }
19207}
19208
19209impl<'a> VfcmulcphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19210    fn vfcmulcph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19211        self.emit(
19212            VFCMULCPH512RRR,
19213            op0.as_operand(),
19214            op1.as_operand(),
19215            op2.as_operand(),
19216            &NOREG,
19217        );
19218    }
19219}
19220
19221impl<'a> VfcmulcphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
19222    fn vfcmulcph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
19223        self.emit(
19224            VFCMULCPH512RRM,
19225            op0.as_operand(),
19226            op1.as_operand(),
19227            op2.as_operand(),
19228            &NOREG,
19229        );
19230    }
19231}
19232
19233/// `VFCMULCPH_ER`.
19234///
19235/// Supported operand variants:
19236///
19237/// ```text
19238/// +---+---------------+
19239/// | # | Operands      |
19240/// +---+---------------+
19241/// | 1 | Zmm, Zmm, Zmm |
19242/// +---+---------------+
19243/// ```
19244pub trait VfcmulcphErEmitter<A, B, C> {
19245    fn vfcmulcph_er(&mut self, op0: A, op1: B, op2: C);
19246}
19247
19248impl<'a> VfcmulcphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19249    fn vfcmulcph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19250        self.emit(
19251            VFCMULCPH512RRR_ER,
19252            op0.as_operand(),
19253            op1.as_operand(),
19254            op2.as_operand(),
19255            &NOREG,
19256        );
19257    }
19258}
19259
19260/// `VFCMULCPH_MASK`.
19261///
19262/// Supported operand variants:
19263///
19264/// ```text
19265/// +---+---------------+
19266/// | # | Operands      |
19267/// +---+---------------+
19268/// | 1 | Xmm, Xmm, Mem |
19269/// | 2 | Xmm, Xmm, Xmm |
19270/// | 3 | Ymm, Ymm, Mem |
19271/// | 4 | Ymm, Ymm, Ymm |
19272/// | 5 | Zmm, Zmm, Mem |
19273/// | 6 | Zmm, Zmm, Zmm |
19274/// +---+---------------+
19275/// ```
19276pub trait VfcmulcphMaskEmitter<A, B, C> {
19277    fn vfcmulcph_mask(&mut self, op0: A, op1: B, op2: C);
19278}
19279
19280impl<'a> VfcmulcphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19281    fn vfcmulcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19282        self.emit(
19283            VFCMULCPH128RRR_MASK,
19284            op0.as_operand(),
19285            op1.as_operand(),
19286            op2.as_operand(),
19287            &NOREG,
19288        );
19289    }
19290}
19291
19292impl<'a> VfcmulcphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19293    fn vfcmulcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19294        self.emit(
19295            VFCMULCPH128RRM_MASK,
19296            op0.as_operand(),
19297            op1.as_operand(),
19298            op2.as_operand(),
19299            &NOREG,
19300        );
19301    }
19302}
19303
19304impl<'a> VfcmulcphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
19305    fn vfcmulcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
19306        self.emit(
19307            VFCMULCPH256RRR_MASK,
19308            op0.as_operand(),
19309            op1.as_operand(),
19310            op2.as_operand(),
19311            &NOREG,
19312        );
19313    }
19314}
19315
19316impl<'a> VfcmulcphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
19317    fn vfcmulcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
19318        self.emit(
19319            VFCMULCPH256RRM_MASK,
19320            op0.as_operand(),
19321            op1.as_operand(),
19322            op2.as_operand(),
19323            &NOREG,
19324        );
19325    }
19326}
19327
19328impl<'a> VfcmulcphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19329    fn vfcmulcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19330        self.emit(
19331            VFCMULCPH512RRR_MASK,
19332            op0.as_operand(),
19333            op1.as_operand(),
19334            op2.as_operand(),
19335            &NOREG,
19336        );
19337    }
19338}
19339
19340impl<'a> VfcmulcphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
19341    fn vfcmulcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
19342        self.emit(
19343            VFCMULCPH512RRM_MASK,
19344            op0.as_operand(),
19345            op1.as_operand(),
19346            op2.as_operand(),
19347            &NOREG,
19348        );
19349    }
19350}
19351
19352/// `VFCMULCPH_MASK_ER`.
19353///
19354/// Supported operand variants:
19355///
19356/// ```text
19357/// +---+---------------+
19358/// | # | Operands      |
19359/// +---+---------------+
19360/// | 1 | Zmm, Zmm, Zmm |
19361/// +---+---------------+
19362/// ```
19363pub trait VfcmulcphMaskErEmitter<A, B, C> {
19364    fn vfcmulcph_mask_er(&mut self, op0: A, op1: B, op2: C);
19365}
19366
19367impl<'a> VfcmulcphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19368    fn vfcmulcph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19369        self.emit(
19370            VFCMULCPH512RRR_MASK_ER,
19371            op0.as_operand(),
19372            op1.as_operand(),
19373            op2.as_operand(),
19374            &NOREG,
19375        );
19376    }
19377}
19378
19379/// `VFCMULCPH_MASKZ`.
19380///
19381/// Supported operand variants:
19382///
19383/// ```text
19384/// +---+---------------+
19385/// | # | Operands      |
19386/// +---+---------------+
19387/// | 1 | Xmm, Xmm, Mem |
19388/// | 2 | Xmm, Xmm, Xmm |
19389/// | 3 | Ymm, Ymm, Mem |
19390/// | 4 | Ymm, Ymm, Ymm |
19391/// | 5 | Zmm, Zmm, Mem |
19392/// | 6 | Zmm, Zmm, Zmm |
19393/// +---+---------------+
19394/// ```
19395pub trait VfcmulcphMaskzEmitter<A, B, C> {
19396    fn vfcmulcph_maskz(&mut self, op0: A, op1: B, op2: C);
19397}
19398
19399impl<'a> VfcmulcphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19400    fn vfcmulcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19401        self.emit(
19402            VFCMULCPH128RRR_MASKZ,
19403            op0.as_operand(),
19404            op1.as_operand(),
19405            op2.as_operand(),
19406            &NOREG,
19407        );
19408    }
19409}
19410
19411impl<'a> VfcmulcphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19412    fn vfcmulcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19413        self.emit(
19414            VFCMULCPH128RRM_MASKZ,
19415            op0.as_operand(),
19416            op1.as_operand(),
19417            op2.as_operand(),
19418            &NOREG,
19419        );
19420    }
19421}
19422
19423impl<'a> VfcmulcphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
19424    fn vfcmulcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
19425        self.emit(
19426            VFCMULCPH256RRR_MASKZ,
19427            op0.as_operand(),
19428            op1.as_operand(),
19429            op2.as_operand(),
19430            &NOREG,
19431        );
19432    }
19433}
19434
19435impl<'a> VfcmulcphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
19436    fn vfcmulcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
19437        self.emit(
19438            VFCMULCPH256RRM_MASKZ,
19439            op0.as_operand(),
19440            op1.as_operand(),
19441            op2.as_operand(),
19442            &NOREG,
19443        );
19444    }
19445}
19446
19447impl<'a> VfcmulcphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19448    fn vfcmulcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19449        self.emit(
19450            VFCMULCPH512RRR_MASKZ,
19451            op0.as_operand(),
19452            op1.as_operand(),
19453            op2.as_operand(),
19454            &NOREG,
19455        );
19456    }
19457}
19458
19459impl<'a> VfcmulcphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
19460    fn vfcmulcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
19461        self.emit(
19462            VFCMULCPH512RRM_MASKZ,
19463            op0.as_operand(),
19464            op1.as_operand(),
19465            op2.as_operand(),
19466            &NOREG,
19467        );
19468    }
19469}
19470
19471/// `VFCMULCPH_MASKZ_ER`.
19472///
19473/// Supported operand variants:
19474///
19475/// ```text
19476/// +---+---------------+
19477/// | # | Operands      |
19478/// +---+---------------+
19479/// | 1 | Zmm, Zmm, Zmm |
19480/// +---+---------------+
19481/// ```
19482pub trait VfcmulcphMaskzErEmitter<A, B, C> {
19483    fn vfcmulcph_maskz_er(&mut self, op0: A, op1: B, op2: C);
19484}
19485
19486impl<'a> VfcmulcphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19487    fn vfcmulcph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19488        self.emit(
19489            VFCMULCPH512RRR_MASKZ_ER,
19490            op0.as_operand(),
19491            op1.as_operand(),
19492            op2.as_operand(),
19493            &NOREG,
19494        );
19495    }
19496}
19497
19498/// `VFCMULCSH`.
19499///
19500/// Supported operand variants:
19501///
19502/// ```text
19503/// +---+---------------+
19504/// | # | Operands      |
19505/// +---+---------------+
19506/// | 1 | Xmm, Xmm, Mem |
19507/// | 2 | Xmm, Xmm, Xmm |
19508/// +---+---------------+
19509/// ```
19510pub trait VfcmulcshEmitter<A, B, C> {
19511    fn vfcmulcsh(&mut self, op0: A, op1: B, op2: C);
19512}
19513
19514impl<'a> VfcmulcshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19515    fn vfcmulcsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19516        self.emit(
19517            VFCMULCSHRRR,
19518            op0.as_operand(),
19519            op1.as_operand(),
19520            op2.as_operand(),
19521            &NOREG,
19522        );
19523    }
19524}
19525
19526impl<'a> VfcmulcshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19527    fn vfcmulcsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19528        self.emit(
19529            VFCMULCSHRRM,
19530            op0.as_operand(),
19531            op1.as_operand(),
19532            op2.as_operand(),
19533            &NOREG,
19534        );
19535    }
19536}
19537
19538/// `VFCMULCSH_ER`.
19539///
19540/// Supported operand variants:
19541///
19542/// ```text
19543/// +---+---------------+
19544/// | # | Operands      |
19545/// +---+---------------+
19546/// | 1 | Xmm, Xmm, Xmm |
19547/// +---+---------------+
19548/// ```
19549pub trait VfcmulcshErEmitter<A, B, C> {
19550    fn vfcmulcsh_er(&mut self, op0: A, op1: B, op2: C);
19551}
19552
19553impl<'a> VfcmulcshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19554    fn vfcmulcsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19555        self.emit(
19556            VFCMULCSHRRR_ER,
19557            op0.as_operand(),
19558            op1.as_operand(),
19559            op2.as_operand(),
19560            &NOREG,
19561        );
19562    }
19563}
19564
19565/// `VFCMULCSH_MASK`.
19566///
19567/// Supported operand variants:
19568///
19569/// ```text
19570/// +---+---------------+
19571/// | # | Operands      |
19572/// +---+---------------+
19573/// | 1 | Xmm, Xmm, Mem |
19574/// | 2 | Xmm, Xmm, Xmm |
19575/// +---+---------------+
19576/// ```
19577pub trait VfcmulcshMaskEmitter<A, B, C> {
19578    fn vfcmulcsh_mask(&mut self, op0: A, op1: B, op2: C);
19579}
19580
19581impl<'a> VfcmulcshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19582    fn vfcmulcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19583        self.emit(
19584            VFCMULCSHRRR_MASK,
19585            op0.as_operand(),
19586            op1.as_operand(),
19587            op2.as_operand(),
19588            &NOREG,
19589        );
19590    }
19591}
19592
19593impl<'a> VfcmulcshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19594    fn vfcmulcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19595        self.emit(
19596            VFCMULCSHRRM_MASK,
19597            op0.as_operand(),
19598            op1.as_operand(),
19599            op2.as_operand(),
19600            &NOREG,
19601        );
19602    }
19603}
19604
19605/// `VFCMULCSH_MASK_ER`.
19606///
19607/// Supported operand variants:
19608///
19609/// ```text
19610/// +---+---------------+
19611/// | # | Operands      |
19612/// +---+---------------+
19613/// | 1 | Xmm, Xmm, Xmm |
19614/// +---+---------------+
19615/// ```
19616pub trait VfcmulcshMaskErEmitter<A, B, C> {
19617    fn vfcmulcsh_mask_er(&mut self, op0: A, op1: B, op2: C);
19618}
19619
19620impl<'a> VfcmulcshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19621    fn vfcmulcsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19622        self.emit(
19623            VFCMULCSHRRR_MASK_ER,
19624            op0.as_operand(),
19625            op1.as_operand(),
19626            op2.as_operand(),
19627            &NOREG,
19628        );
19629    }
19630}
19631
19632/// `VFCMULCSH_MASKZ`.
19633///
19634/// Supported operand variants:
19635///
19636/// ```text
19637/// +---+---------------+
19638/// | # | Operands      |
19639/// +---+---------------+
19640/// | 1 | Xmm, Xmm, Mem |
19641/// | 2 | Xmm, Xmm, Xmm |
19642/// +---+---------------+
19643/// ```
19644pub trait VfcmulcshMaskzEmitter<A, B, C> {
19645    fn vfcmulcsh_maskz(&mut self, op0: A, op1: B, op2: C);
19646}
19647
19648impl<'a> VfcmulcshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19649    fn vfcmulcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19650        self.emit(
19651            VFCMULCSHRRR_MASKZ,
19652            op0.as_operand(),
19653            op1.as_operand(),
19654            op2.as_operand(),
19655            &NOREG,
19656        );
19657    }
19658}
19659
19660impl<'a> VfcmulcshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19661    fn vfcmulcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19662        self.emit(
19663            VFCMULCSHRRM_MASKZ,
19664            op0.as_operand(),
19665            op1.as_operand(),
19666            op2.as_operand(),
19667            &NOREG,
19668        );
19669    }
19670}
19671
19672/// `VFCMULCSH_MASKZ_ER`.
19673///
19674/// Supported operand variants:
19675///
19676/// ```text
19677/// +---+---------------+
19678/// | # | Operands      |
19679/// +---+---------------+
19680/// | 1 | Xmm, Xmm, Xmm |
19681/// +---+---------------+
19682/// ```
19683pub trait VfcmulcshMaskzErEmitter<A, B, C> {
19684    fn vfcmulcsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
19685}
19686
19687impl<'a> VfcmulcshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19688    fn vfcmulcsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19689        self.emit(
19690            VFCMULCSHRRR_MASKZ_ER,
19691            op0.as_operand(),
19692            op1.as_operand(),
19693            op2.as_operand(),
19694            &NOREG,
19695        );
19696    }
19697}
19698
19699/// `VFMADD132PH`.
19700///
19701/// Supported operand variants:
19702///
19703/// ```text
19704/// +---+---------------+
19705/// | # | Operands      |
19706/// +---+---------------+
19707/// | 1 | Xmm, Xmm, Mem |
19708/// | 2 | Xmm, Xmm, Xmm |
19709/// | 3 | Ymm, Ymm, Mem |
19710/// | 4 | Ymm, Ymm, Ymm |
19711/// | 5 | Zmm, Zmm, Mem |
19712/// | 6 | Zmm, Zmm, Zmm |
19713/// +---+---------------+
19714/// ```
19715pub trait Vfmadd132phEmitter<A, B, C> {
19716    fn vfmadd132ph(&mut self, op0: A, op1: B, op2: C);
19717}
19718
19719impl<'a> Vfmadd132phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19720    fn vfmadd132ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19721        self.emit(
19722            VFMADD132PH128RRR,
19723            op0.as_operand(),
19724            op1.as_operand(),
19725            op2.as_operand(),
19726            &NOREG,
19727        );
19728    }
19729}
19730
19731impl<'a> Vfmadd132phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19732    fn vfmadd132ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19733        self.emit(
19734            VFMADD132PH128RRM,
19735            op0.as_operand(),
19736            op1.as_operand(),
19737            op2.as_operand(),
19738            &NOREG,
19739        );
19740    }
19741}
19742
19743impl<'a> Vfmadd132phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
19744    fn vfmadd132ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
19745        self.emit(
19746            VFMADD132PH256RRR,
19747            op0.as_operand(),
19748            op1.as_operand(),
19749            op2.as_operand(),
19750            &NOREG,
19751        );
19752    }
19753}
19754
19755impl<'a> Vfmadd132phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
19756    fn vfmadd132ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
19757        self.emit(
19758            VFMADD132PH256RRM,
19759            op0.as_operand(),
19760            op1.as_operand(),
19761            op2.as_operand(),
19762            &NOREG,
19763        );
19764    }
19765}
19766
19767impl<'a> Vfmadd132phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19768    fn vfmadd132ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19769        self.emit(
19770            VFMADD132PH512RRR,
19771            op0.as_operand(),
19772            op1.as_operand(),
19773            op2.as_operand(),
19774            &NOREG,
19775        );
19776    }
19777}
19778
19779impl<'a> Vfmadd132phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
19780    fn vfmadd132ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
19781        self.emit(
19782            VFMADD132PH512RRM,
19783            op0.as_operand(),
19784            op1.as_operand(),
19785            op2.as_operand(),
19786            &NOREG,
19787        );
19788    }
19789}
19790
19791/// `VFMADD132PH_ER`.
19792///
19793/// Supported operand variants:
19794///
19795/// ```text
19796/// +---+---------------+
19797/// | # | Operands      |
19798/// +---+---------------+
19799/// | 1 | Zmm, Zmm, Zmm |
19800/// +---+---------------+
19801/// ```
19802pub trait Vfmadd132phErEmitter<A, B, C> {
19803    fn vfmadd132ph_er(&mut self, op0: A, op1: B, op2: C);
19804}
19805
19806impl<'a> Vfmadd132phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19807    fn vfmadd132ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19808        self.emit(
19809            VFMADD132PH512RRR_ER,
19810            op0.as_operand(),
19811            op1.as_operand(),
19812            op2.as_operand(),
19813            &NOREG,
19814        );
19815    }
19816}
19817
19818/// `VFMADD132PH_MASK`.
19819///
19820/// Supported operand variants:
19821///
19822/// ```text
19823/// +---+---------------+
19824/// | # | Operands      |
19825/// +---+---------------+
19826/// | 1 | Xmm, Xmm, Mem |
19827/// | 2 | Xmm, Xmm, Xmm |
19828/// | 3 | Ymm, Ymm, Mem |
19829/// | 4 | Ymm, Ymm, Ymm |
19830/// | 5 | Zmm, Zmm, Mem |
19831/// | 6 | Zmm, Zmm, Zmm |
19832/// +---+---------------+
19833/// ```
19834pub trait Vfmadd132phMaskEmitter<A, B, C> {
19835    fn vfmadd132ph_mask(&mut self, op0: A, op1: B, op2: C);
19836}
19837
19838impl<'a> Vfmadd132phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19839    fn vfmadd132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19840        self.emit(
19841            VFMADD132PH128RRR_MASK,
19842            op0.as_operand(),
19843            op1.as_operand(),
19844            op2.as_operand(),
19845            &NOREG,
19846        );
19847    }
19848}
19849
19850impl<'a> Vfmadd132phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19851    fn vfmadd132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19852        self.emit(
19853            VFMADD132PH128RRM_MASK,
19854            op0.as_operand(),
19855            op1.as_operand(),
19856            op2.as_operand(),
19857            &NOREG,
19858        );
19859    }
19860}
19861
19862impl<'a> Vfmadd132phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
19863    fn vfmadd132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
19864        self.emit(
19865            VFMADD132PH256RRR_MASK,
19866            op0.as_operand(),
19867            op1.as_operand(),
19868            op2.as_operand(),
19869            &NOREG,
19870        );
19871    }
19872}
19873
19874impl<'a> Vfmadd132phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
19875    fn vfmadd132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
19876        self.emit(
19877            VFMADD132PH256RRM_MASK,
19878            op0.as_operand(),
19879            op1.as_operand(),
19880            op2.as_operand(),
19881            &NOREG,
19882        );
19883    }
19884}
19885
19886impl<'a> Vfmadd132phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19887    fn vfmadd132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19888        self.emit(
19889            VFMADD132PH512RRR_MASK,
19890            op0.as_operand(),
19891            op1.as_operand(),
19892            op2.as_operand(),
19893            &NOREG,
19894        );
19895    }
19896}
19897
19898impl<'a> Vfmadd132phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
19899    fn vfmadd132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
19900        self.emit(
19901            VFMADD132PH512RRM_MASK,
19902            op0.as_operand(),
19903            op1.as_operand(),
19904            op2.as_operand(),
19905            &NOREG,
19906        );
19907    }
19908}
19909
19910/// `VFMADD132PH_MASK_ER`.
19911///
19912/// Supported operand variants:
19913///
19914/// ```text
19915/// +---+---------------+
19916/// | # | Operands      |
19917/// +---+---------------+
19918/// | 1 | Zmm, Zmm, Zmm |
19919/// +---+---------------+
19920/// ```
19921pub trait Vfmadd132phMaskErEmitter<A, B, C> {
19922    fn vfmadd132ph_mask_er(&mut self, op0: A, op1: B, op2: C);
19923}
19924
19925impl<'a> Vfmadd132phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
19926    fn vfmadd132ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
19927        self.emit(
19928            VFMADD132PH512RRR_MASK_ER,
19929            op0.as_operand(),
19930            op1.as_operand(),
19931            op2.as_operand(),
19932            &NOREG,
19933        );
19934    }
19935}
19936
19937/// `VFMADD132PH_MASKZ`.
19938///
19939/// Supported operand variants:
19940///
19941/// ```text
19942/// +---+---------------+
19943/// | # | Operands      |
19944/// +---+---------------+
19945/// | 1 | Xmm, Xmm, Mem |
19946/// | 2 | Xmm, Xmm, Xmm |
19947/// | 3 | Ymm, Ymm, Mem |
19948/// | 4 | Ymm, Ymm, Ymm |
19949/// | 5 | Zmm, Zmm, Mem |
19950/// | 6 | Zmm, Zmm, Zmm |
19951/// +---+---------------+
19952/// ```
19953pub trait Vfmadd132phMaskzEmitter<A, B, C> {
19954    fn vfmadd132ph_maskz(&mut self, op0: A, op1: B, op2: C);
19955}
19956
19957impl<'a> Vfmadd132phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
19958    fn vfmadd132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
19959        self.emit(
19960            VFMADD132PH128RRR_MASKZ,
19961            op0.as_operand(),
19962            op1.as_operand(),
19963            op2.as_operand(),
19964            &NOREG,
19965        );
19966    }
19967}
19968
19969impl<'a> Vfmadd132phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
19970    fn vfmadd132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
19971        self.emit(
19972            VFMADD132PH128RRM_MASKZ,
19973            op0.as_operand(),
19974            op1.as_operand(),
19975            op2.as_operand(),
19976            &NOREG,
19977        );
19978    }
19979}
19980
19981impl<'a> Vfmadd132phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
19982    fn vfmadd132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
19983        self.emit(
19984            VFMADD132PH256RRR_MASKZ,
19985            op0.as_operand(),
19986            op1.as_operand(),
19987            op2.as_operand(),
19988            &NOREG,
19989        );
19990    }
19991}
19992
19993impl<'a> Vfmadd132phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
19994    fn vfmadd132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
19995        self.emit(
19996            VFMADD132PH256RRM_MASKZ,
19997            op0.as_operand(),
19998            op1.as_operand(),
19999            op2.as_operand(),
20000            &NOREG,
20001        );
20002    }
20003}
20004
20005impl<'a> Vfmadd132phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20006    fn vfmadd132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20007        self.emit(
20008            VFMADD132PH512RRR_MASKZ,
20009            op0.as_operand(),
20010            op1.as_operand(),
20011            op2.as_operand(),
20012            &NOREG,
20013        );
20014    }
20015}
20016
20017impl<'a> Vfmadd132phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
20018    fn vfmadd132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
20019        self.emit(
20020            VFMADD132PH512RRM_MASKZ,
20021            op0.as_operand(),
20022            op1.as_operand(),
20023            op2.as_operand(),
20024            &NOREG,
20025        );
20026    }
20027}
20028
20029/// `VFMADD132PH_MASKZ_ER`.
20030///
20031/// Supported operand variants:
20032///
20033/// ```text
20034/// +---+---------------+
20035/// | # | Operands      |
20036/// +---+---------------+
20037/// | 1 | Zmm, Zmm, Zmm |
20038/// +---+---------------+
20039/// ```
20040pub trait Vfmadd132phMaskzErEmitter<A, B, C> {
20041    fn vfmadd132ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
20042}
20043
20044impl<'a> Vfmadd132phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20045    fn vfmadd132ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20046        self.emit(
20047            VFMADD132PH512RRR_MASKZ_ER,
20048            op0.as_operand(),
20049            op1.as_operand(),
20050            op2.as_operand(),
20051            &NOREG,
20052        );
20053    }
20054}
20055
20056/// `VFMADD132SH`.
20057///
20058/// Supported operand variants:
20059///
20060/// ```text
20061/// +---+---------------+
20062/// | # | Operands      |
20063/// +---+---------------+
20064/// | 1 | Xmm, Xmm, Mem |
20065/// | 2 | Xmm, Xmm, Xmm |
20066/// +---+---------------+
20067/// ```
20068pub trait Vfmadd132shEmitter<A, B, C> {
20069    fn vfmadd132sh(&mut self, op0: A, op1: B, op2: C);
20070}
20071
20072impl<'a> Vfmadd132shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20073    fn vfmadd132sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20074        self.emit(
20075            VFMADD132SHRRR,
20076            op0.as_operand(),
20077            op1.as_operand(),
20078            op2.as_operand(),
20079            &NOREG,
20080        );
20081    }
20082}
20083
20084impl<'a> Vfmadd132shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20085    fn vfmadd132sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20086        self.emit(
20087            VFMADD132SHRRM,
20088            op0.as_operand(),
20089            op1.as_operand(),
20090            op2.as_operand(),
20091            &NOREG,
20092        );
20093    }
20094}
20095
20096/// `VFMADD132SH_ER`.
20097///
20098/// Supported operand variants:
20099///
20100/// ```text
20101/// +---+---------------+
20102/// | # | Operands      |
20103/// +---+---------------+
20104/// | 1 | Xmm, Xmm, Xmm |
20105/// +---+---------------+
20106/// ```
20107pub trait Vfmadd132shErEmitter<A, B, C> {
20108    fn vfmadd132sh_er(&mut self, op0: A, op1: B, op2: C);
20109}
20110
20111impl<'a> Vfmadd132shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20112    fn vfmadd132sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20113        self.emit(
20114            VFMADD132SHRRR_ER,
20115            op0.as_operand(),
20116            op1.as_operand(),
20117            op2.as_operand(),
20118            &NOREG,
20119        );
20120    }
20121}
20122
20123/// `VFMADD132SH_MASK`.
20124///
20125/// Supported operand variants:
20126///
20127/// ```text
20128/// +---+---------------+
20129/// | # | Operands      |
20130/// +---+---------------+
20131/// | 1 | Xmm, Xmm, Mem |
20132/// | 2 | Xmm, Xmm, Xmm |
20133/// +---+---------------+
20134/// ```
20135pub trait Vfmadd132shMaskEmitter<A, B, C> {
20136    fn vfmadd132sh_mask(&mut self, op0: A, op1: B, op2: C);
20137}
20138
20139impl<'a> Vfmadd132shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20140    fn vfmadd132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20141        self.emit(
20142            VFMADD132SHRRR_MASK,
20143            op0.as_operand(),
20144            op1.as_operand(),
20145            op2.as_operand(),
20146            &NOREG,
20147        );
20148    }
20149}
20150
20151impl<'a> Vfmadd132shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20152    fn vfmadd132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20153        self.emit(
20154            VFMADD132SHRRM_MASK,
20155            op0.as_operand(),
20156            op1.as_operand(),
20157            op2.as_operand(),
20158            &NOREG,
20159        );
20160    }
20161}
20162
20163/// `VFMADD132SH_MASK_ER`.
20164///
20165/// Supported operand variants:
20166///
20167/// ```text
20168/// +---+---------------+
20169/// | # | Operands      |
20170/// +---+---------------+
20171/// | 1 | Xmm, Xmm, Xmm |
20172/// +---+---------------+
20173/// ```
20174pub trait Vfmadd132shMaskErEmitter<A, B, C> {
20175    fn vfmadd132sh_mask_er(&mut self, op0: A, op1: B, op2: C);
20176}
20177
20178impl<'a> Vfmadd132shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20179    fn vfmadd132sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20180        self.emit(
20181            VFMADD132SHRRR_MASK_ER,
20182            op0.as_operand(),
20183            op1.as_operand(),
20184            op2.as_operand(),
20185            &NOREG,
20186        );
20187    }
20188}
20189
20190/// `VFMADD132SH_MASKZ`.
20191///
20192/// Supported operand variants:
20193///
20194/// ```text
20195/// +---+---------------+
20196/// | # | Operands      |
20197/// +---+---------------+
20198/// | 1 | Xmm, Xmm, Mem |
20199/// | 2 | Xmm, Xmm, Xmm |
20200/// +---+---------------+
20201/// ```
20202pub trait Vfmadd132shMaskzEmitter<A, B, C> {
20203    fn vfmadd132sh_maskz(&mut self, op0: A, op1: B, op2: C);
20204}
20205
20206impl<'a> Vfmadd132shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20207    fn vfmadd132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20208        self.emit(
20209            VFMADD132SHRRR_MASKZ,
20210            op0.as_operand(),
20211            op1.as_operand(),
20212            op2.as_operand(),
20213            &NOREG,
20214        );
20215    }
20216}
20217
20218impl<'a> Vfmadd132shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20219    fn vfmadd132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20220        self.emit(
20221            VFMADD132SHRRM_MASKZ,
20222            op0.as_operand(),
20223            op1.as_operand(),
20224            op2.as_operand(),
20225            &NOREG,
20226        );
20227    }
20228}
20229
20230/// `VFMADD132SH_MASKZ_ER`.
20231///
20232/// Supported operand variants:
20233///
20234/// ```text
20235/// +---+---------------+
20236/// | # | Operands      |
20237/// +---+---------------+
20238/// | 1 | Xmm, Xmm, Xmm |
20239/// +---+---------------+
20240/// ```
20241pub trait Vfmadd132shMaskzErEmitter<A, B, C> {
20242    fn vfmadd132sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
20243}
20244
20245impl<'a> Vfmadd132shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20246    fn vfmadd132sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20247        self.emit(
20248            VFMADD132SHRRR_MASKZ_ER,
20249            op0.as_operand(),
20250            op1.as_operand(),
20251            op2.as_operand(),
20252            &NOREG,
20253        );
20254    }
20255}
20256
20257/// `VFMADD213PH`.
20258///
20259/// Supported operand variants:
20260///
20261/// ```text
20262/// +---+---------------+
20263/// | # | Operands      |
20264/// +---+---------------+
20265/// | 1 | Xmm, Xmm, Mem |
20266/// | 2 | Xmm, Xmm, Xmm |
20267/// | 3 | Ymm, Ymm, Mem |
20268/// | 4 | Ymm, Ymm, Ymm |
20269/// | 5 | Zmm, Zmm, Mem |
20270/// | 6 | Zmm, Zmm, Zmm |
20271/// +---+---------------+
20272/// ```
20273pub trait Vfmadd213phEmitter<A, B, C> {
20274    fn vfmadd213ph(&mut self, op0: A, op1: B, op2: C);
20275}
20276
20277impl<'a> Vfmadd213phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20278    fn vfmadd213ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20279        self.emit(
20280            VFMADD213PH128RRR,
20281            op0.as_operand(),
20282            op1.as_operand(),
20283            op2.as_operand(),
20284            &NOREG,
20285        );
20286    }
20287}
20288
20289impl<'a> Vfmadd213phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20290    fn vfmadd213ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20291        self.emit(
20292            VFMADD213PH128RRM,
20293            op0.as_operand(),
20294            op1.as_operand(),
20295            op2.as_operand(),
20296            &NOREG,
20297        );
20298    }
20299}
20300
20301impl<'a> Vfmadd213phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
20302    fn vfmadd213ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
20303        self.emit(
20304            VFMADD213PH256RRR,
20305            op0.as_operand(),
20306            op1.as_operand(),
20307            op2.as_operand(),
20308            &NOREG,
20309        );
20310    }
20311}
20312
20313impl<'a> Vfmadd213phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
20314    fn vfmadd213ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
20315        self.emit(
20316            VFMADD213PH256RRM,
20317            op0.as_operand(),
20318            op1.as_operand(),
20319            op2.as_operand(),
20320            &NOREG,
20321        );
20322    }
20323}
20324
20325impl<'a> Vfmadd213phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20326    fn vfmadd213ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20327        self.emit(
20328            VFMADD213PH512RRR,
20329            op0.as_operand(),
20330            op1.as_operand(),
20331            op2.as_operand(),
20332            &NOREG,
20333        );
20334    }
20335}
20336
20337impl<'a> Vfmadd213phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
20338    fn vfmadd213ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
20339        self.emit(
20340            VFMADD213PH512RRM,
20341            op0.as_operand(),
20342            op1.as_operand(),
20343            op2.as_operand(),
20344            &NOREG,
20345        );
20346    }
20347}
20348
20349/// `VFMADD213PH_ER`.
20350///
20351/// Supported operand variants:
20352///
20353/// ```text
20354/// +---+---------------+
20355/// | # | Operands      |
20356/// +---+---------------+
20357/// | 1 | Zmm, Zmm, Zmm |
20358/// +---+---------------+
20359/// ```
20360pub trait Vfmadd213phErEmitter<A, B, C> {
20361    fn vfmadd213ph_er(&mut self, op0: A, op1: B, op2: C);
20362}
20363
20364impl<'a> Vfmadd213phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20365    fn vfmadd213ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20366        self.emit(
20367            VFMADD213PH512RRR_ER,
20368            op0.as_operand(),
20369            op1.as_operand(),
20370            op2.as_operand(),
20371            &NOREG,
20372        );
20373    }
20374}
20375
20376/// `VFMADD213PH_MASK`.
20377///
20378/// Supported operand variants:
20379///
20380/// ```text
20381/// +---+---------------+
20382/// | # | Operands      |
20383/// +---+---------------+
20384/// | 1 | Xmm, Xmm, Mem |
20385/// | 2 | Xmm, Xmm, Xmm |
20386/// | 3 | Ymm, Ymm, Mem |
20387/// | 4 | Ymm, Ymm, Ymm |
20388/// | 5 | Zmm, Zmm, Mem |
20389/// | 6 | Zmm, Zmm, Zmm |
20390/// +---+---------------+
20391/// ```
20392pub trait Vfmadd213phMaskEmitter<A, B, C> {
20393    fn vfmadd213ph_mask(&mut self, op0: A, op1: B, op2: C);
20394}
20395
20396impl<'a> Vfmadd213phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20397    fn vfmadd213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20398        self.emit(
20399            VFMADD213PH128RRR_MASK,
20400            op0.as_operand(),
20401            op1.as_operand(),
20402            op2.as_operand(),
20403            &NOREG,
20404        );
20405    }
20406}
20407
20408impl<'a> Vfmadd213phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20409    fn vfmadd213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20410        self.emit(
20411            VFMADD213PH128RRM_MASK,
20412            op0.as_operand(),
20413            op1.as_operand(),
20414            op2.as_operand(),
20415            &NOREG,
20416        );
20417    }
20418}
20419
20420impl<'a> Vfmadd213phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
20421    fn vfmadd213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
20422        self.emit(
20423            VFMADD213PH256RRR_MASK,
20424            op0.as_operand(),
20425            op1.as_operand(),
20426            op2.as_operand(),
20427            &NOREG,
20428        );
20429    }
20430}
20431
20432impl<'a> Vfmadd213phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
20433    fn vfmadd213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
20434        self.emit(
20435            VFMADD213PH256RRM_MASK,
20436            op0.as_operand(),
20437            op1.as_operand(),
20438            op2.as_operand(),
20439            &NOREG,
20440        );
20441    }
20442}
20443
20444impl<'a> Vfmadd213phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20445    fn vfmadd213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20446        self.emit(
20447            VFMADD213PH512RRR_MASK,
20448            op0.as_operand(),
20449            op1.as_operand(),
20450            op2.as_operand(),
20451            &NOREG,
20452        );
20453    }
20454}
20455
20456impl<'a> Vfmadd213phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
20457    fn vfmadd213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
20458        self.emit(
20459            VFMADD213PH512RRM_MASK,
20460            op0.as_operand(),
20461            op1.as_operand(),
20462            op2.as_operand(),
20463            &NOREG,
20464        );
20465    }
20466}
20467
20468/// `VFMADD213PH_MASK_ER`.
20469///
20470/// Supported operand variants:
20471///
20472/// ```text
20473/// +---+---------------+
20474/// | # | Operands      |
20475/// +---+---------------+
20476/// | 1 | Zmm, Zmm, Zmm |
20477/// +---+---------------+
20478/// ```
20479pub trait Vfmadd213phMaskErEmitter<A, B, C> {
20480    fn vfmadd213ph_mask_er(&mut self, op0: A, op1: B, op2: C);
20481}
20482
20483impl<'a> Vfmadd213phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20484    fn vfmadd213ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20485        self.emit(
20486            VFMADD213PH512RRR_MASK_ER,
20487            op0.as_operand(),
20488            op1.as_operand(),
20489            op2.as_operand(),
20490            &NOREG,
20491        );
20492    }
20493}
20494
20495/// `VFMADD213PH_MASKZ`.
20496///
20497/// Supported operand variants:
20498///
20499/// ```text
20500/// +---+---------------+
20501/// | # | Operands      |
20502/// +---+---------------+
20503/// | 1 | Xmm, Xmm, Mem |
20504/// | 2 | Xmm, Xmm, Xmm |
20505/// | 3 | Ymm, Ymm, Mem |
20506/// | 4 | Ymm, Ymm, Ymm |
20507/// | 5 | Zmm, Zmm, Mem |
20508/// | 6 | Zmm, Zmm, Zmm |
20509/// +---+---------------+
20510/// ```
20511pub trait Vfmadd213phMaskzEmitter<A, B, C> {
20512    fn vfmadd213ph_maskz(&mut self, op0: A, op1: B, op2: C);
20513}
20514
20515impl<'a> Vfmadd213phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20516    fn vfmadd213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20517        self.emit(
20518            VFMADD213PH128RRR_MASKZ,
20519            op0.as_operand(),
20520            op1.as_operand(),
20521            op2.as_operand(),
20522            &NOREG,
20523        );
20524    }
20525}
20526
20527impl<'a> Vfmadd213phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20528    fn vfmadd213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20529        self.emit(
20530            VFMADD213PH128RRM_MASKZ,
20531            op0.as_operand(),
20532            op1.as_operand(),
20533            op2.as_operand(),
20534            &NOREG,
20535        );
20536    }
20537}
20538
20539impl<'a> Vfmadd213phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
20540    fn vfmadd213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
20541        self.emit(
20542            VFMADD213PH256RRR_MASKZ,
20543            op0.as_operand(),
20544            op1.as_operand(),
20545            op2.as_operand(),
20546            &NOREG,
20547        );
20548    }
20549}
20550
20551impl<'a> Vfmadd213phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
20552    fn vfmadd213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
20553        self.emit(
20554            VFMADD213PH256RRM_MASKZ,
20555            op0.as_operand(),
20556            op1.as_operand(),
20557            op2.as_operand(),
20558            &NOREG,
20559        );
20560    }
20561}
20562
20563impl<'a> Vfmadd213phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20564    fn vfmadd213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20565        self.emit(
20566            VFMADD213PH512RRR_MASKZ,
20567            op0.as_operand(),
20568            op1.as_operand(),
20569            op2.as_operand(),
20570            &NOREG,
20571        );
20572    }
20573}
20574
20575impl<'a> Vfmadd213phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
20576    fn vfmadd213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
20577        self.emit(
20578            VFMADD213PH512RRM_MASKZ,
20579            op0.as_operand(),
20580            op1.as_operand(),
20581            op2.as_operand(),
20582            &NOREG,
20583        );
20584    }
20585}
20586
20587/// `VFMADD213PH_MASKZ_ER`.
20588///
20589/// Supported operand variants:
20590///
20591/// ```text
20592/// +---+---------------+
20593/// | # | Operands      |
20594/// +---+---------------+
20595/// | 1 | Zmm, Zmm, Zmm |
20596/// +---+---------------+
20597/// ```
20598pub trait Vfmadd213phMaskzErEmitter<A, B, C> {
20599    fn vfmadd213ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
20600}
20601
20602impl<'a> Vfmadd213phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20603    fn vfmadd213ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20604        self.emit(
20605            VFMADD213PH512RRR_MASKZ_ER,
20606            op0.as_operand(),
20607            op1.as_operand(),
20608            op2.as_operand(),
20609            &NOREG,
20610        );
20611    }
20612}
20613
20614/// `VFMADD213SH`.
20615///
20616/// Supported operand variants:
20617///
20618/// ```text
20619/// +---+---------------+
20620/// | # | Operands      |
20621/// +---+---------------+
20622/// | 1 | Xmm, Xmm, Mem |
20623/// | 2 | Xmm, Xmm, Xmm |
20624/// +---+---------------+
20625/// ```
20626pub trait Vfmadd213shEmitter<A, B, C> {
20627    fn vfmadd213sh(&mut self, op0: A, op1: B, op2: C);
20628}
20629
20630impl<'a> Vfmadd213shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20631    fn vfmadd213sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20632        self.emit(
20633            VFMADD213SHRRR,
20634            op0.as_operand(),
20635            op1.as_operand(),
20636            op2.as_operand(),
20637            &NOREG,
20638        );
20639    }
20640}
20641
20642impl<'a> Vfmadd213shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20643    fn vfmadd213sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20644        self.emit(
20645            VFMADD213SHRRM,
20646            op0.as_operand(),
20647            op1.as_operand(),
20648            op2.as_operand(),
20649            &NOREG,
20650        );
20651    }
20652}
20653
20654/// `VFMADD213SH_ER`.
20655///
20656/// Supported operand variants:
20657///
20658/// ```text
20659/// +---+---------------+
20660/// | # | Operands      |
20661/// +---+---------------+
20662/// | 1 | Xmm, Xmm, Xmm |
20663/// +---+---------------+
20664/// ```
20665pub trait Vfmadd213shErEmitter<A, B, C> {
20666    fn vfmadd213sh_er(&mut self, op0: A, op1: B, op2: C);
20667}
20668
20669impl<'a> Vfmadd213shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20670    fn vfmadd213sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20671        self.emit(
20672            VFMADD213SHRRR_ER,
20673            op0.as_operand(),
20674            op1.as_operand(),
20675            op2.as_operand(),
20676            &NOREG,
20677        );
20678    }
20679}
20680
20681/// `VFMADD213SH_MASK`.
20682///
20683/// Supported operand variants:
20684///
20685/// ```text
20686/// +---+---------------+
20687/// | # | Operands      |
20688/// +---+---------------+
20689/// | 1 | Xmm, Xmm, Mem |
20690/// | 2 | Xmm, Xmm, Xmm |
20691/// +---+---------------+
20692/// ```
20693pub trait Vfmadd213shMaskEmitter<A, B, C> {
20694    fn vfmadd213sh_mask(&mut self, op0: A, op1: B, op2: C);
20695}
20696
20697impl<'a> Vfmadd213shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20698    fn vfmadd213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20699        self.emit(
20700            VFMADD213SHRRR_MASK,
20701            op0.as_operand(),
20702            op1.as_operand(),
20703            op2.as_operand(),
20704            &NOREG,
20705        );
20706    }
20707}
20708
20709impl<'a> Vfmadd213shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20710    fn vfmadd213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20711        self.emit(
20712            VFMADD213SHRRM_MASK,
20713            op0.as_operand(),
20714            op1.as_operand(),
20715            op2.as_operand(),
20716            &NOREG,
20717        );
20718    }
20719}
20720
20721/// `VFMADD213SH_MASK_ER`.
20722///
20723/// Supported operand variants:
20724///
20725/// ```text
20726/// +---+---------------+
20727/// | # | Operands      |
20728/// +---+---------------+
20729/// | 1 | Xmm, Xmm, Xmm |
20730/// +---+---------------+
20731/// ```
20732pub trait Vfmadd213shMaskErEmitter<A, B, C> {
20733    fn vfmadd213sh_mask_er(&mut self, op0: A, op1: B, op2: C);
20734}
20735
20736impl<'a> Vfmadd213shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20737    fn vfmadd213sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20738        self.emit(
20739            VFMADD213SHRRR_MASK_ER,
20740            op0.as_operand(),
20741            op1.as_operand(),
20742            op2.as_operand(),
20743            &NOREG,
20744        );
20745    }
20746}
20747
20748/// `VFMADD213SH_MASKZ`.
20749///
20750/// Supported operand variants:
20751///
20752/// ```text
20753/// +---+---------------+
20754/// | # | Operands      |
20755/// +---+---------------+
20756/// | 1 | Xmm, Xmm, Mem |
20757/// | 2 | Xmm, Xmm, Xmm |
20758/// +---+---------------+
20759/// ```
20760pub trait Vfmadd213shMaskzEmitter<A, B, C> {
20761    fn vfmadd213sh_maskz(&mut self, op0: A, op1: B, op2: C);
20762}
20763
20764impl<'a> Vfmadd213shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20765    fn vfmadd213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20766        self.emit(
20767            VFMADD213SHRRR_MASKZ,
20768            op0.as_operand(),
20769            op1.as_operand(),
20770            op2.as_operand(),
20771            &NOREG,
20772        );
20773    }
20774}
20775
20776impl<'a> Vfmadd213shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20777    fn vfmadd213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20778        self.emit(
20779            VFMADD213SHRRM_MASKZ,
20780            op0.as_operand(),
20781            op1.as_operand(),
20782            op2.as_operand(),
20783            &NOREG,
20784        );
20785    }
20786}
20787
20788/// `VFMADD213SH_MASKZ_ER`.
20789///
20790/// Supported operand variants:
20791///
20792/// ```text
20793/// +---+---------------+
20794/// | # | Operands      |
20795/// +---+---------------+
20796/// | 1 | Xmm, Xmm, Xmm |
20797/// +---+---------------+
20798/// ```
20799pub trait Vfmadd213shMaskzErEmitter<A, B, C> {
20800    fn vfmadd213sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
20801}
20802
20803impl<'a> Vfmadd213shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20804    fn vfmadd213sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20805        self.emit(
20806            VFMADD213SHRRR_MASKZ_ER,
20807            op0.as_operand(),
20808            op1.as_operand(),
20809            op2.as_operand(),
20810            &NOREG,
20811        );
20812    }
20813}
20814
20815/// `VFMADD231PH`.
20816///
20817/// Supported operand variants:
20818///
20819/// ```text
20820/// +---+---------------+
20821/// | # | Operands      |
20822/// +---+---------------+
20823/// | 1 | Xmm, Xmm, Mem |
20824/// | 2 | Xmm, Xmm, Xmm |
20825/// | 3 | Ymm, Ymm, Mem |
20826/// | 4 | Ymm, Ymm, Ymm |
20827/// | 5 | Zmm, Zmm, Mem |
20828/// | 6 | Zmm, Zmm, Zmm |
20829/// +---+---------------+
20830/// ```
20831pub trait Vfmadd231phEmitter<A, B, C> {
20832    fn vfmadd231ph(&mut self, op0: A, op1: B, op2: C);
20833}
20834
20835impl<'a> Vfmadd231phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20836    fn vfmadd231ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20837        self.emit(
20838            VFMADD231PH128RRR,
20839            op0.as_operand(),
20840            op1.as_operand(),
20841            op2.as_operand(),
20842            &NOREG,
20843        );
20844    }
20845}
20846
20847impl<'a> Vfmadd231phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20848    fn vfmadd231ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20849        self.emit(
20850            VFMADD231PH128RRM,
20851            op0.as_operand(),
20852            op1.as_operand(),
20853            op2.as_operand(),
20854            &NOREG,
20855        );
20856    }
20857}
20858
20859impl<'a> Vfmadd231phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
20860    fn vfmadd231ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
20861        self.emit(
20862            VFMADD231PH256RRR,
20863            op0.as_operand(),
20864            op1.as_operand(),
20865            op2.as_operand(),
20866            &NOREG,
20867        );
20868    }
20869}
20870
20871impl<'a> Vfmadd231phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
20872    fn vfmadd231ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
20873        self.emit(
20874            VFMADD231PH256RRM,
20875            op0.as_operand(),
20876            op1.as_operand(),
20877            op2.as_operand(),
20878            &NOREG,
20879        );
20880    }
20881}
20882
20883impl<'a> Vfmadd231phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20884    fn vfmadd231ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20885        self.emit(
20886            VFMADD231PH512RRR,
20887            op0.as_operand(),
20888            op1.as_operand(),
20889            op2.as_operand(),
20890            &NOREG,
20891        );
20892    }
20893}
20894
20895impl<'a> Vfmadd231phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
20896    fn vfmadd231ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
20897        self.emit(
20898            VFMADD231PH512RRM,
20899            op0.as_operand(),
20900            op1.as_operand(),
20901            op2.as_operand(),
20902            &NOREG,
20903        );
20904    }
20905}
20906
20907/// `VFMADD231PH_ER`.
20908///
20909/// Supported operand variants:
20910///
20911/// ```text
20912/// +---+---------------+
20913/// | # | Operands      |
20914/// +---+---------------+
20915/// | 1 | Zmm, Zmm, Zmm |
20916/// +---+---------------+
20917/// ```
20918pub trait Vfmadd231phErEmitter<A, B, C> {
20919    fn vfmadd231ph_er(&mut self, op0: A, op1: B, op2: C);
20920}
20921
20922impl<'a> Vfmadd231phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
20923    fn vfmadd231ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
20924        self.emit(
20925            VFMADD231PH512RRR_ER,
20926            op0.as_operand(),
20927            op1.as_operand(),
20928            op2.as_operand(),
20929            &NOREG,
20930        );
20931    }
20932}
20933
20934/// `VFMADD231PH_MASK`.
20935///
20936/// Supported operand variants:
20937///
20938/// ```text
20939/// +---+---------------+
20940/// | # | Operands      |
20941/// +---+---------------+
20942/// | 1 | Xmm, Xmm, Mem |
20943/// | 2 | Xmm, Xmm, Xmm |
20944/// | 3 | Ymm, Ymm, Mem |
20945/// | 4 | Ymm, Ymm, Ymm |
20946/// | 5 | Zmm, Zmm, Mem |
20947/// | 6 | Zmm, Zmm, Zmm |
20948/// +---+---------------+
20949/// ```
20950pub trait Vfmadd231phMaskEmitter<A, B, C> {
20951    fn vfmadd231ph_mask(&mut self, op0: A, op1: B, op2: C);
20952}
20953
20954impl<'a> Vfmadd231phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
20955    fn vfmadd231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
20956        self.emit(
20957            VFMADD231PH128RRR_MASK,
20958            op0.as_operand(),
20959            op1.as_operand(),
20960            op2.as_operand(),
20961            &NOREG,
20962        );
20963    }
20964}
20965
20966impl<'a> Vfmadd231phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
20967    fn vfmadd231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
20968        self.emit(
20969            VFMADD231PH128RRM_MASK,
20970            op0.as_operand(),
20971            op1.as_operand(),
20972            op2.as_operand(),
20973            &NOREG,
20974        );
20975    }
20976}
20977
20978impl<'a> Vfmadd231phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
20979    fn vfmadd231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
20980        self.emit(
20981            VFMADD231PH256RRR_MASK,
20982            op0.as_operand(),
20983            op1.as_operand(),
20984            op2.as_operand(),
20985            &NOREG,
20986        );
20987    }
20988}
20989
20990impl<'a> Vfmadd231phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
20991    fn vfmadd231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
20992        self.emit(
20993            VFMADD231PH256RRM_MASK,
20994            op0.as_operand(),
20995            op1.as_operand(),
20996            op2.as_operand(),
20997            &NOREG,
20998        );
20999    }
21000}
21001
21002impl<'a> Vfmadd231phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21003    fn vfmadd231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21004        self.emit(
21005            VFMADD231PH512RRR_MASK,
21006            op0.as_operand(),
21007            op1.as_operand(),
21008            op2.as_operand(),
21009            &NOREG,
21010        );
21011    }
21012}
21013
21014impl<'a> Vfmadd231phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
21015    fn vfmadd231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
21016        self.emit(
21017            VFMADD231PH512RRM_MASK,
21018            op0.as_operand(),
21019            op1.as_operand(),
21020            op2.as_operand(),
21021            &NOREG,
21022        );
21023    }
21024}
21025
21026/// `VFMADD231PH_MASK_ER`.
21027///
21028/// Supported operand variants:
21029///
21030/// ```text
21031/// +---+---------------+
21032/// | # | Operands      |
21033/// +---+---------------+
21034/// | 1 | Zmm, Zmm, Zmm |
21035/// +---+---------------+
21036/// ```
21037pub trait Vfmadd231phMaskErEmitter<A, B, C> {
21038    fn vfmadd231ph_mask_er(&mut self, op0: A, op1: B, op2: C);
21039}
21040
21041impl<'a> Vfmadd231phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21042    fn vfmadd231ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21043        self.emit(
21044            VFMADD231PH512RRR_MASK_ER,
21045            op0.as_operand(),
21046            op1.as_operand(),
21047            op2.as_operand(),
21048            &NOREG,
21049        );
21050    }
21051}
21052
21053/// `VFMADD231PH_MASKZ`.
21054///
21055/// Supported operand variants:
21056///
21057/// ```text
21058/// +---+---------------+
21059/// | # | Operands      |
21060/// +---+---------------+
21061/// | 1 | Xmm, Xmm, Mem |
21062/// | 2 | Xmm, Xmm, Xmm |
21063/// | 3 | Ymm, Ymm, Mem |
21064/// | 4 | Ymm, Ymm, Ymm |
21065/// | 5 | Zmm, Zmm, Mem |
21066/// | 6 | Zmm, Zmm, Zmm |
21067/// +---+---------------+
21068/// ```
21069pub trait Vfmadd231phMaskzEmitter<A, B, C> {
21070    fn vfmadd231ph_maskz(&mut self, op0: A, op1: B, op2: C);
21071}
21072
21073impl<'a> Vfmadd231phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21074    fn vfmadd231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21075        self.emit(
21076            VFMADD231PH128RRR_MASKZ,
21077            op0.as_operand(),
21078            op1.as_operand(),
21079            op2.as_operand(),
21080            &NOREG,
21081        );
21082    }
21083}
21084
21085impl<'a> Vfmadd231phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21086    fn vfmadd231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21087        self.emit(
21088            VFMADD231PH128RRM_MASKZ,
21089            op0.as_operand(),
21090            op1.as_operand(),
21091            op2.as_operand(),
21092            &NOREG,
21093        );
21094    }
21095}
21096
21097impl<'a> Vfmadd231phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
21098    fn vfmadd231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
21099        self.emit(
21100            VFMADD231PH256RRR_MASKZ,
21101            op0.as_operand(),
21102            op1.as_operand(),
21103            op2.as_operand(),
21104            &NOREG,
21105        );
21106    }
21107}
21108
21109impl<'a> Vfmadd231phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
21110    fn vfmadd231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
21111        self.emit(
21112            VFMADD231PH256RRM_MASKZ,
21113            op0.as_operand(),
21114            op1.as_operand(),
21115            op2.as_operand(),
21116            &NOREG,
21117        );
21118    }
21119}
21120
21121impl<'a> Vfmadd231phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21122    fn vfmadd231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21123        self.emit(
21124            VFMADD231PH512RRR_MASKZ,
21125            op0.as_operand(),
21126            op1.as_operand(),
21127            op2.as_operand(),
21128            &NOREG,
21129        );
21130    }
21131}
21132
21133impl<'a> Vfmadd231phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
21134    fn vfmadd231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
21135        self.emit(
21136            VFMADD231PH512RRM_MASKZ,
21137            op0.as_operand(),
21138            op1.as_operand(),
21139            op2.as_operand(),
21140            &NOREG,
21141        );
21142    }
21143}
21144
21145/// `VFMADD231PH_MASKZ_ER`.
21146///
21147/// Supported operand variants:
21148///
21149/// ```text
21150/// +---+---------------+
21151/// | # | Operands      |
21152/// +---+---------------+
21153/// | 1 | Zmm, Zmm, Zmm |
21154/// +---+---------------+
21155/// ```
21156pub trait Vfmadd231phMaskzErEmitter<A, B, C> {
21157    fn vfmadd231ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
21158}
21159
21160impl<'a> Vfmadd231phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21161    fn vfmadd231ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21162        self.emit(
21163            VFMADD231PH512RRR_MASKZ_ER,
21164            op0.as_operand(),
21165            op1.as_operand(),
21166            op2.as_operand(),
21167            &NOREG,
21168        );
21169    }
21170}
21171
21172/// `VFMADD231SH`.
21173///
21174/// Supported operand variants:
21175///
21176/// ```text
21177/// +---+---------------+
21178/// | # | Operands      |
21179/// +---+---------------+
21180/// | 1 | Xmm, Xmm, Mem |
21181/// | 2 | Xmm, Xmm, Xmm |
21182/// +---+---------------+
21183/// ```
21184pub trait Vfmadd231shEmitter<A, B, C> {
21185    fn vfmadd231sh(&mut self, op0: A, op1: B, op2: C);
21186}
21187
21188impl<'a> Vfmadd231shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21189    fn vfmadd231sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21190        self.emit(
21191            VFMADD231SHRRR,
21192            op0.as_operand(),
21193            op1.as_operand(),
21194            op2.as_operand(),
21195            &NOREG,
21196        );
21197    }
21198}
21199
21200impl<'a> Vfmadd231shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21201    fn vfmadd231sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21202        self.emit(
21203            VFMADD231SHRRM,
21204            op0.as_operand(),
21205            op1.as_operand(),
21206            op2.as_operand(),
21207            &NOREG,
21208        );
21209    }
21210}
21211
21212/// `VFMADD231SH_ER`.
21213///
21214/// Supported operand variants:
21215///
21216/// ```text
21217/// +---+---------------+
21218/// | # | Operands      |
21219/// +---+---------------+
21220/// | 1 | Xmm, Xmm, Xmm |
21221/// +---+---------------+
21222/// ```
21223pub trait Vfmadd231shErEmitter<A, B, C> {
21224    fn vfmadd231sh_er(&mut self, op0: A, op1: B, op2: C);
21225}
21226
21227impl<'a> Vfmadd231shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21228    fn vfmadd231sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21229        self.emit(
21230            VFMADD231SHRRR_ER,
21231            op0.as_operand(),
21232            op1.as_operand(),
21233            op2.as_operand(),
21234            &NOREG,
21235        );
21236    }
21237}
21238
21239/// `VFMADD231SH_MASK`.
21240///
21241/// Supported operand variants:
21242///
21243/// ```text
21244/// +---+---------------+
21245/// | # | Operands      |
21246/// +---+---------------+
21247/// | 1 | Xmm, Xmm, Mem |
21248/// | 2 | Xmm, Xmm, Xmm |
21249/// +---+---------------+
21250/// ```
21251pub trait Vfmadd231shMaskEmitter<A, B, C> {
21252    fn vfmadd231sh_mask(&mut self, op0: A, op1: B, op2: C);
21253}
21254
21255impl<'a> Vfmadd231shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21256    fn vfmadd231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21257        self.emit(
21258            VFMADD231SHRRR_MASK,
21259            op0.as_operand(),
21260            op1.as_operand(),
21261            op2.as_operand(),
21262            &NOREG,
21263        );
21264    }
21265}
21266
21267impl<'a> Vfmadd231shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21268    fn vfmadd231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21269        self.emit(
21270            VFMADD231SHRRM_MASK,
21271            op0.as_operand(),
21272            op1.as_operand(),
21273            op2.as_operand(),
21274            &NOREG,
21275        );
21276    }
21277}
21278
21279/// `VFMADD231SH_MASK_ER`.
21280///
21281/// Supported operand variants:
21282///
21283/// ```text
21284/// +---+---------------+
21285/// | # | Operands      |
21286/// +---+---------------+
21287/// | 1 | Xmm, Xmm, Xmm |
21288/// +---+---------------+
21289/// ```
21290pub trait Vfmadd231shMaskErEmitter<A, B, C> {
21291    fn vfmadd231sh_mask_er(&mut self, op0: A, op1: B, op2: C);
21292}
21293
21294impl<'a> Vfmadd231shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21295    fn vfmadd231sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21296        self.emit(
21297            VFMADD231SHRRR_MASK_ER,
21298            op0.as_operand(),
21299            op1.as_operand(),
21300            op2.as_operand(),
21301            &NOREG,
21302        );
21303    }
21304}
21305
21306/// `VFMADD231SH_MASKZ`.
21307///
21308/// Supported operand variants:
21309///
21310/// ```text
21311/// +---+---------------+
21312/// | # | Operands      |
21313/// +---+---------------+
21314/// | 1 | Xmm, Xmm, Mem |
21315/// | 2 | Xmm, Xmm, Xmm |
21316/// +---+---------------+
21317/// ```
21318pub trait Vfmadd231shMaskzEmitter<A, B, C> {
21319    fn vfmadd231sh_maskz(&mut self, op0: A, op1: B, op2: C);
21320}
21321
21322impl<'a> Vfmadd231shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21323    fn vfmadd231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21324        self.emit(
21325            VFMADD231SHRRR_MASKZ,
21326            op0.as_operand(),
21327            op1.as_operand(),
21328            op2.as_operand(),
21329            &NOREG,
21330        );
21331    }
21332}
21333
21334impl<'a> Vfmadd231shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21335    fn vfmadd231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21336        self.emit(
21337            VFMADD231SHRRM_MASKZ,
21338            op0.as_operand(),
21339            op1.as_operand(),
21340            op2.as_operand(),
21341            &NOREG,
21342        );
21343    }
21344}
21345
21346/// `VFMADD231SH_MASKZ_ER`.
21347///
21348/// Supported operand variants:
21349///
21350/// ```text
21351/// +---+---------------+
21352/// | # | Operands      |
21353/// +---+---------------+
21354/// | 1 | Xmm, Xmm, Xmm |
21355/// +---+---------------+
21356/// ```
21357pub trait Vfmadd231shMaskzErEmitter<A, B, C> {
21358    fn vfmadd231sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
21359}
21360
21361impl<'a> Vfmadd231shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21362    fn vfmadd231sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21363        self.emit(
21364            VFMADD231SHRRR_MASKZ_ER,
21365            op0.as_operand(),
21366            op1.as_operand(),
21367            op2.as_operand(),
21368            &NOREG,
21369        );
21370    }
21371}
21372
21373/// `VFMADDCPH`.
21374///
21375/// Supported operand variants:
21376///
21377/// ```text
21378/// +---+---------------+
21379/// | # | Operands      |
21380/// +---+---------------+
21381/// | 1 | Xmm, Xmm, Mem |
21382/// | 2 | Xmm, Xmm, Xmm |
21383/// | 3 | Ymm, Ymm, Mem |
21384/// | 4 | Ymm, Ymm, Ymm |
21385/// | 5 | Zmm, Zmm, Mem |
21386/// | 6 | Zmm, Zmm, Zmm |
21387/// +---+---------------+
21388/// ```
21389pub trait VfmaddcphEmitter<A, B, C> {
21390    fn vfmaddcph(&mut self, op0: A, op1: B, op2: C);
21391}
21392
21393impl<'a> VfmaddcphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21394    fn vfmaddcph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21395        self.emit(
21396            VFMADDCPH128RRR,
21397            op0.as_operand(),
21398            op1.as_operand(),
21399            op2.as_operand(),
21400            &NOREG,
21401        );
21402    }
21403}
21404
21405impl<'a> VfmaddcphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21406    fn vfmaddcph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21407        self.emit(
21408            VFMADDCPH128RRM,
21409            op0.as_operand(),
21410            op1.as_operand(),
21411            op2.as_operand(),
21412            &NOREG,
21413        );
21414    }
21415}
21416
21417impl<'a> VfmaddcphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
21418    fn vfmaddcph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
21419        self.emit(
21420            VFMADDCPH256RRR,
21421            op0.as_operand(),
21422            op1.as_operand(),
21423            op2.as_operand(),
21424            &NOREG,
21425        );
21426    }
21427}
21428
21429impl<'a> VfmaddcphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
21430    fn vfmaddcph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
21431        self.emit(
21432            VFMADDCPH256RRM,
21433            op0.as_operand(),
21434            op1.as_operand(),
21435            op2.as_operand(),
21436            &NOREG,
21437        );
21438    }
21439}
21440
21441impl<'a> VfmaddcphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21442    fn vfmaddcph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21443        self.emit(
21444            VFMADDCPH512RRR,
21445            op0.as_operand(),
21446            op1.as_operand(),
21447            op2.as_operand(),
21448            &NOREG,
21449        );
21450    }
21451}
21452
21453impl<'a> VfmaddcphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
21454    fn vfmaddcph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
21455        self.emit(
21456            VFMADDCPH512RRM,
21457            op0.as_operand(),
21458            op1.as_operand(),
21459            op2.as_operand(),
21460            &NOREG,
21461        );
21462    }
21463}
21464
21465/// `VFMADDCPH_ER`.
21466///
21467/// Supported operand variants:
21468///
21469/// ```text
21470/// +---+---------------+
21471/// | # | Operands      |
21472/// +---+---------------+
21473/// | 1 | Zmm, Zmm, Zmm |
21474/// +---+---------------+
21475/// ```
21476pub trait VfmaddcphErEmitter<A, B, C> {
21477    fn vfmaddcph_er(&mut self, op0: A, op1: B, op2: C);
21478}
21479
21480impl<'a> VfmaddcphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21481    fn vfmaddcph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21482        self.emit(
21483            VFMADDCPH512RRR_ER,
21484            op0.as_operand(),
21485            op1.as_operand(),
21486            op2.as_operand(),
21487            &NOREG,
21488        );
21489    }
21490}
21491
21492/// `VFMADDCPH_MASK`.
21493///
21494/// Supported operand variants:
21495///
21496/// ```text
21497/// +---+---------------+
21498/// | # | Operands      |
21499/// +---+---------------+
21500/// | 1 | Xmm, Xmm, Mem |
21501/// | 2 | Xmm, Xmm, Xmm |
21502/// | 3 | Ymm, Ymm, Mem |
21503/// | 4 | Ymm, Ymm, Ymm |
21504/// | 5 | Zmm, Zmm, Mem |
21505/// | 6 | Zmm, Zmm, Zmm |
21506/// +---+---------------+
21507/// ```
21508pub trait VfmaddcphMaskEmitter<A, B, C> {
21509    fn vfmaddcph_mask(&mut self, op0: A, op1: B, op2: C);
21510}
21511
21512impl<'a> VfmaddcphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21513    fn vfmaddcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21514        self.emit(
21515            VFMADDCPH128RRR_MASK,
21516            op0.as_operand(),
21517            op1.as_operand(),
21518            op2.as_operand(),
21519            &NOREG,
21520        );
21521    }
21522}
21523
21524impl<'a> VfmaddcphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21525    fn vfmaddcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21526        self.emit(
21527            VFMADDCPH128RRM_MASK,
21528            op0.as_operand(),
21529            op1.as_operand(),
21530            op2.as_operand(),
21531            &NOREG,
21532        );
21533    }
21534}
21535
21536impl<'a> VfmaddcphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
21537    fn vfmaddcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
21538        self.emit(
21539            VFMADDCPH256RRR_MASK,
21540            op0.as_operand(),
21541            op1.as_operand(),
21542            op2.as_operand(),
21543            &NOREG,
21544        );
21545    }
21546}
21547
21548impl<'a> VfmaddcphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
21549    fn vfmaddcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
21550        self.emit(
21551            VFMADDCPH256RRM_MASK,
21552            op0.as_operand(),
21553            op1.as_operand(),
21554            op2.as_operand(),
21555            &NOREG,
21556        );
21557    }
21558}
21559
21560impl<'a> VfmaddcphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21561    fn vfmaddcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21562        self.emit(
21563            VFMADDCPH512RRR_MASK,
21564            op0.as_operand(),
21565            op1.as_operand(),
21566            op2.as_operand(),
21567            &NOREG,
21568        );
21569    }
21570}
21571
21572impl<'a> VfmaddcphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
21573    fn vfmaddcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
21574        self.emit(
21575            VFMADDCPH512RRM_MASK,
21576            op0.as_operand(),
21577            op1.as_operand(),
21578            op2.as_operand(),
21579            &NOREG,
21580        );
21581    }
21582}
21583
21584/// `VFMADDCPH_MASK_ER`.
21585///
21586/// Supported operand variants:
21587///
21588/// ```text
21589/// +---+---------------+
21590/// | # | Operands      |
21591/// +---+---------------+
21592/// | 1 | Zmm, Zmm, Zmm |
21593/// +---+---------------+
21594/// ```
21595pub trait VfmaddcphMaskErEmitter<A, B, C> {
21596    fn vfmaddcph_mask_er(&mut self, op0: A, op1: B, op2: C);
21597}
21598
21599impl<'a> VfmaddcphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21600    fn vfmaddcph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21601        self.emit(
21602            VFMADDCPH512RRR_MASK_ER,
21603            op0.as_operand(),
21604            op1.as_operand(),
21605            op2.as_operand(),
21606            &NOREG,
21607        );
21608    }
21609}
21610
21611/// `VFMADDCPH_MASKZ`.
21612///
21613/// Supported operand variants:
21614///
21615/// ```text
21616/// +---+---------------+
21617/// | # | Operands      |
21618/// +---+---------------+
21619/// | 1 | Xmm, Xmm, Mem |
21620/// | 2 | Xmm, Xmm, Xmm |
21621/// | 3 | Ymm, Ymm, Mem |
21622/// | 4 | Ymm, Ymm, Ymm |
21623/// | 5 | Zmm, Zmm, Mem |
21624/// | 6 | Zmm, Zmm, Zmm |
21625/// +---+---------------+
21626/// ```
21627pub trait VfmaddcphMaskzEmitter<A, B, C> {
21628    fn vfmaddcph_maskz(&mut self, op0: A, op1: B, op2: C);
21629}
21630
21631impl<'a> VfmaddcphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21632    fn vfmaddcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21633        self.emit(
21634            VFMADDCPH128RRR_MASKZ,
21635            op0.as_operand(),
21636            op1.as_operand(),
21637            op2.as_operand(),
21638            &NOREG,
21639        );
21640    }
21641}
21642
21643impl<'a> VfmaddcphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21644    fn vfmaddcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21645        self.emit(
21646            VFMADDCPH128RRM_MASKZ,
21647            op0.as_operand(),
21648            op1.as_operand(),
21649            op2.as_operand(),
21650            &NOREG,
21651        );
21652    }
21653}
21654
21655impl<'a> VfmaddcphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
21656    fn vfmaddcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
21657        self.emit(
21658            VFMADDCPH256RRR_MASKZ,
21659            op0.as_operand(),
21660            op1.as_operand(),
21661            op2.as_operand(),
21662            &NOREG,
21663        );
21664    }
21665}
21666
21667impl<'a> VfmaddcphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
21668    fn vfmaddcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
21669        self.emit(
21670            VFMADDCPH256RRM_MASKZ,
21671            op0.as_operand(),
21672            op1.as_operand(),
21673            op2.as_operand(),
21674            &NOREG,
21675        );
21676    }
21677}
21678
21679impl<'a> VfmaddcphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21680    fn vfmaddcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21681        self.emit(
21682            VFMADDCPH512RRR_MASKZ,
21683            op0.as_operand(),
21684            op1.as_operand(),
21685            op2.as_operand(),
21686            &NOREG,
21687        );
21688    }
21689}
21690
21691impl<'a> VfmaddcphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
21692    fn vfmaddcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
21693        self.emit(
21694            VFMADDCPH512RRM_MASKZ,
21695            op0.as_operand(),
21696            op1.as_operand(),
21697            op2.as_operand(),
21698            &NOREG,
21699        );
21700    }
21701}
21702
21703/// `VFMADDCPH_MASKZ_ER`.
21704///
21705/// Supported operand variants:
21706///
21707/// ```text
21708/// +---+---------------+
21709/// | # | Operands      |
21710/// +---+---------------+
21711/// | 1 | Zmm, Zmm, Zmm |
21712/// +---+---------------+
21713/// ```
21714pub trait VfmaddcphMaskzErEmitter<A, B, C> {
21715    fn vfmaddcph_maskz_er(&mut self, op0: A, op1: B, op2: C);
21716}
21717
21718impl<'a> VfmaddcphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
21719    fn vfmaddcph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
21720        self.emit(
21721            VFMADDCPH512RRR_MASKZ_ER,
21722            op0.as_operand(),
21723            op1.as_operand(),
21724            op2.as_operand(),
21725            &NOREG,
21726        );
21727    }
21728}
21729
21730/// `VFMADDCSH`.
21731///
21732/// Supported operand variants:
21733///
21734/// ```text
21735/// +---+---------------+
21736/// | # | Operands      |
21737/// +---+---------------+
21738/// | 1 | Xmm, Xmm, Mem |
21739/// | 2 | Xmm, Xmm, Xmm |
21740/// +---+---------------+
21741/// ```
21742pub trait VfmaddcshEmitter<A, B, C> {
21743    fn vfmaddcsh(&mut self, op0: A, op1: B, op2: C);
21744}
21745
21746impl<'a> VfmaddcshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21747    fn vfmaddcsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21748        self.emit(
21749            VFMADDCSHRRR,
21750            op0.as_operand(),
21751            op1.as_operand(),
21752            op2.as_operand(),
21753            &NOREG,
21754        );
21755    }
21756}
21757
21758impl<'a> VfmaddcshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21759    fn vfmaddcsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21760        self.emit(
21761            VFMADDCSHRRM,
21762            op0.as_operand(),
21763            op1.as_operand(),
21764            op2.as_operand(),
21765            &NOREG,
21766        );
21767    }
21768}
21769
21770/// `VFMADDCSH_ER`.
21771///
21772/// Supported operand variants:
21773///
21774/// ```text
21775/// +---+---------------+
21776/// | # | Operands      |
21777/// +---+---------------+
21778/// | 1 | Xmm, Xmm, Xmm |
21779/// +---+---------------+
21780/// ```
21781pub trait VfmaddcshErEmitter<A, B, C> {
21782    fn vfmaddcsh_er(&mut self, op0: A, op1: B, op2: C);
21783}
21784
21785impl<'a> VfmaddcshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21786    fn vfmaddcsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21787        self.emit(
21788            VFMADDCSHRRR_ER,
21789            op0.as_operand(),
21790            op1.as_operand(),
21791            op2.as_operand(),
21792            &NOREG,
21793        );
21794    }
21795}
21796
21797/// `VFMADDCSH_MASK`.
21798///
21799/// Supported operand variants:
21800///
21801/// ```text
21802/// +---+---------------+
21803/// | # | Operands      |
21804/// +---+---------------+
21805/// | 1 | Xmm, Xmm, Mem |
21806/// | 2 | Xmm, Xmm, Xmm |
21807/// +---+---------------+
21808/// ```
21809pub trait VfmaddcshMaskEmitter<A, B, C> {
21810    fn vfmaddcsh_mask(&mut self, op0: A, op1: B, op2: C);
21811}
21812
21813impl<'a> VfmaddcshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21814    fn vfmaddcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21815        self.emit(
21816            VFMADDCSHRRR_MASK,
21817            op0.as_operand(),
21818            op1.as_operand(),
21819            op2.as_operand(),
21820            &NOREG,
21821        );
21822    }
21823}
21824
21825impl<'a> VfmaddcshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21826    fn vfmaddcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21827        self.emit(
21828            VFMADDCSHRRM_MASK,
21829            op0.as_operand(),
21830            op1.as_operand(),
21831            op2.as_operand(),
21832            &NOREG,
21833        );
21834    }
21835}
21836
21837/// `VFMADDCSH_MASK_ER`.
21838///
21839/// Supported operand variants:
21840///
21841/// ```text
21842/// +---+---------------+
21843/// | # | Operands      |
21844/// +---+---------------+
21845/// | 1 | Xmm, Xmm, Xmm |
21846/// +---+---------------+
21847/// ```
21848pub trait VfmaddcshMaskErEmitter<A, B, C> {
21849    fn vfmaddcsh_mask_er(&mut self, op0: A, op1: B, op2: C);
21850}
21851
21852impl<'a> VfmaddcshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21853    fn vfmaddcsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21854        self.emit(
21855            VFMADDCSHRRR_MASK_ER,
21856            op0.as_operand(),
21857            op1.as_operand(),
21858            op2.as_operand(),
21859            &NOREG,
21860        );
21861    }
21862}
21863
21864/// `VFMADDCSH_MASKZ`.
21865///
21866/// Supported operand variants:
21867///
21868/// ```text
21869/// +---+---------------+
21870/// | # | Operands      |
21871/// +---+---------------+
21872/// | 1 | Xmm, Xmm, Mem |
21873/// | 2 | Xmm, Xmm, Xmm |
21874/// +---+---------------+
21875/// ```
21876pub trait VfmaddcshMaskzEmitter<A, B, C> {
21877    fn vfmaddcsh_maskz(&mut self, op0: A, op1: B, op2: C);
21878}
21879
21880impl<'a> VfmaddcshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21881    fn vfmaddcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21882        self.emit(
21883            VFMADDCSHRRR_MASKZ,
21884            op0.as_operand(),
21885            op1.as_operand(),
21886            op2.as_operand(),
21887            &NOREG,
21888        );
21889    }
21890}
21891
21892impl<'a> VfmaddcshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21893    fn vfmaddcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21894        self.emit(
21895            VFMADDCSHRRM_MASKZ,
21896            op0.as_operand(),
21897            op1.as_operand(),
21898            op2.as_operand(),
21899            &NOREG,
21900        );
21901    }
21902}
21903
21904/// `VFMADDCSH_MASKZ_ER`.
21905///
21906/// Supported operand variants:
21907///
21908/// ```text
21909/// +---+---------------+
21910/// | # | Operands      |
21911/// +---+---------------+
21912/// | 1 | Xmm, Xmm, Xmm |
21913/// +---+---------------+
21914/// ```
21915pub trait VfmaddcshMaskzErEmitter<A, B, C> {
21916    fn vfmaddcsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
21917}
21918
21919impl<'a> VfmaddcshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21920    fn vfmaddcsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21921        self.emit(
21922            VFMADDCSHRRR_MASKZ_ER,
21923            op0.as_operand(),
21924            op1.as_operand(),
21925            op2.as_operand(),
21926            &NOREG,
21927        );
21928    }
21929}
21930
21931/// `VFMADDSUB132PH`.
21932///
21933/// Supported operand variants:
21934///
21935/// ```text
21936/// +---+---------------+
21937/// | # | Operands      |
21938/// +---+---------------+
21939/// | 1 | Xmm, Xmm, Mem |
21940/// | 2 | Xmm, Xmm, Xmm |
21941/// | 3 | Ymm, Ymm, Mem |
21942/// | 4 | Ymm, Ymm, Ymm |
21943/// | 5 | Zmm, Zmm, Mem |
21944/// | 6 | Zmm, Zmm, Zmm |
21945/// +---+---------------+
21946/// ```
21947pub trait Vfmaddsub132phEmitter<A, B, C> {
21948    fn vfmaddsub132ph(&mut self, op0: A, op1: B, op2: C);
21949}
21950
21951impl<'a> Vfmaddsub132phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
21952    fn vfmaddsub132ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
21953        self.emit(
21954            VFMADDSUB132PH128RRR,
21955            op0.as_operand(),
21956            op1.as_operand(),
21957            op2.as_operand(),
21958            &NOREG,
21959        );
21960    }
21961}
21962
21963impl<'a> Vfmaddsub132phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
21964    fn vfmaddsub132ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
21965        self.emit(
21966            VFMADDSUB132PH128RRM,
21967            op0.as_operand(),
21968            op1.as_operand(),
21969            op2.as_operand(),
21970            &NOREG,
21971        );
21972    }
21973}
21974
21975impl<'a> Vfmaddsub132phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
21976    fn vfmaddsub132ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
21977        self.emit(
21978            VFMADDSUB132PH256RRR,
21979            op0.as_operand(),
21980            op1.as_operand(),
21981            op2.as_operand(),
21982            &NOREG,
21983        );
21984    }
21985}
21986
21987impl<'a> Vfmaddsub132phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
21988    fn vfmaddsub132ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
21989        self.emit(
21990            VFMADDSUB132PH256RRM,
21991            op0.as_operand(),
21992            op1.as_operand(),
21993            op2.as_operand(),
21994            &NOREG,
21995        );
21996    }
21997}
21998
21999impl<'a> Vfmaddsub132phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22000    fn vfmaddsub132ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22001        self.emit(
22002            VFMADDSUB132PH512RRR,
22003            op0.as_operand(),
22004            op1.as_operand(),
22005            op2.as_operand(),
22006            &NOREG,
22007        );
22008    }
22009}
22010
22011impl<'a> Vfmaddsub132phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22012    fn vfmaddsub132ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22013        self.emit(
22014            VFMADDSUB132PH512RRM,
22015            op0.as_operand(),
22016            op1.as_operand(),
22017            op2.as_operand(),
22018            &NOREG,
22019        );
22020    }
22021}
22022
22023/// `VFMADDSUB132PH_ER`.
22024///
22025/// Supported operand variants:
22026///
22027/// ```text
22028/// +---+---------------+
22029/// | # | Operands      |
22030/// +---+---------------+
22031/// | 1 | Zmm, Zmm, Zmm |
22032/// +---+---------------+
22033/// ```
22034pub trait Vfmaddsub132phErEmitter<A, B, C> {
22035    fn vfmaddsub132ph_er(&mut self, op0: A, op1: B, op2: C);
22036}
22037
22038impl<'a> Vfmaddsub132phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22039    fn vfmaddsub132ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22040        self.emit(
22041            VFMADDSUB132PH512RRR_ER,
22042            op0.as_operand(),
22043            op1.as_operand(),
22044            op2.as_operand(),
22045            &NOREG,
22046        );
22047    }
22048}
22049
22050/// `VFMADDSUB132PH_MASK`.
22051///
22052/// Supported operand variants:
22053///
22054/// ```text
22055/// +---+---------------+
22056/// | # | Operands      |
22057/// +---+---------------+
22058/// | 1 | Xmm, Xmm, Mem |
22059/// | 2 | Xmm, Xmm, Xmm |
22060/// | 3 | Ymm, Ymm, Mem |
22061/// | 4 | Ymm, Ymm, Ymm |
22062/// | 5 | Zmm, Zmm, Mem |
22063/// | 6 | Zmm, Zmm, Zmm |
22064/// +---+---------------+
22065/// ```
22066pub trait Vfmaddsub132phMaskEmitter<A, B, C> {
22067    fn vfmaddsub132ph_mask(&mut self, op0: A, op1: B, op2: C);
22068}
22069
22070impl<'a> Vfmaddsub132phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22071    fn vfmaddsub132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22072        self.emit(
22073            VFMADDSUB132PH128RRR_MASK,
22074            op0.as_operand(),
22075            op1.as_operand(),
22076            op2.as_operand(),
22077            &NOREG,
22078        );
22079    }
22080}
22081
22082impl<'a> Vfmaddsub132phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22083    fn vfmaddsub132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22084        self.emit(
22085            VFMADDSUB132PH128RRM_MASK,
22086            op0.as_operand(),
22087            op1.as_operand(),
22088            op2.as_operand(),
22089            &NOREG,
22090        );
22091    }
22092}
22093
22094impl<'a> Vfmaddsub132phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22095    fn vfmaddsub132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22096        self.emit(
22097            VFMADDSUB132PH256RRR_MASK,
22098            op0.as_operand(),
22099            op1.as_operand(),
22100            op2.as_operand(),
22101            &NOREG,
22102        );
22103    }
22104}
22105
22106impl<'a> Vfmaddsub132phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22107    fn vfmaddsub132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22108        self.emit(
22109            VFMADDSUB132PH256RRM_MASK,
22110            op0.as_operand(),
22111            op1.as_operand(),
22112            op2.as_operand(),
22113            &NOREG,
22114        );
22115    }
22116}
22117
22118impl<'a> Vfmaddsub132phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22119    fn vfmaddsub132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22120        self.emit(
22121            VFMADDSUB132PH512RRR_MASK,
22122            op0.as_operand(),
22123            op1.as_operand(),
22124            op2.as_operand(),
22125            &NOREG,
22126        );
22127    }
22128}
22129
22130impl<'a> Vfmaddsub132phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22131    fn vfmaddsub132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22132        self.emit(
22133            VFMADDSUB132PH512RRM_MASK,
22134            op0.as_operand(),
22135            op1.as_operand(),
22136            op2.as_operand(),
22137            &NOREG,
22138        );
22139    }
22140}
22141
22142/// `VFMADDSUB132PH_MASK_ER`.
22143///
22144/// Supported operand variants:
22145///
22146/// ```text
22147/// +---+---------------+
22148/// | # | Operands      |
22149/// +---+---------------+
22150/// | 1 | Zmm, Zmm, Zmm |
22151/// +---+---------------+
22152/// ```
22153pub trait Vfmaddsub132phMaskErEmitter<A, B, C> {
22154    fn vfmaddsub132ph_mask_er(&mut self, op0: A, op1: B, op2: C);
22155}
22156
22157impl<'a> Vfmaddsub132phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22158    fn vfmaddsub132ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22159        self.emit(
22160            VFMADDSUB132PH512RRR_MASK_ER,
22161            op0.as_operand(),
22162            op1.as_operand(),
22163            op2.as_operand(),
22164            &NOREG,
22165        );
22166    }
22167}
22168
22169/// `VFMADDSUB132PH_MASKZ`.
22170///
22171/// Supported operand variants:
22172///
22173/// ```text
22174/// +---+---------------+
22175/// | # | Operands      |
22176/// +---+---------------+
22177/// | 1 | Xmm, Xmm, Mem |
22178/// | 2 | Xmm, Xmm, Xmm |
22179/// | 3 | Ymm, Ymm, Mem |
22180/// | 4 | Ymm, Ymm, Ymm |
22181/// | 5 | Zmm, Zmm, Mem |
22182/// | 6 | Zmm, Zmm, Zmm |
22183/// +---+---------------+
22184/// ```
22185pub trait Vfmaddsub132phMaskzEmitter<A, B, C> {
22186    fn vfmaddsub132ph_maskz(&mut self, op0: A, op1: B, op2: C);
22187}
22188
22189impl<'a> Vfmaddsub132phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22190    fn vfmaddsub132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22191        self.emit(
22192            VFMADDSUB132PH128RRR_MASKZ,
22193            op0.as_operand(),
22194            op1.as_operand(),
22195            op2.as_operand(),
22196            &NOREG,
22197        );
22198    }
22199}
22200
22201impl<'a> Vfmaddsub132phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22202    fn vfmaddsub132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22203        self.emit(
22204            VFMADDSUB132PH128RRM_MASKZ,
22205            op0.as_operand(),
22206            op1.as_operand(),
22207            op2.as_operand(),
22208            &NOREG,
22209        );
22210    }
22211}
22212
22213impl<'a> Vfmaddsub132phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22214    fn vfmaddsub132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22215        self.emit(
22216            VFMADDSUB132PH256RRR_MASKZ,
22217            op0.as_operand(),
22218            op1.as_operand(),
22219            op2.as_operand(),
22220            &NOREG,
22221        );
22222    }
22223}
22224
22225impl<'a> Vfmaddsub132phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22226    fn vfmaddsub132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22227        self.emit(
22228            VFMADDSUB132PH256RRM_MASKZ,
22229            op0.as_operand(),
22230            op1.as_operand(),
22231            op2.as_operand(),
22232            &NOREG,
22233        );
22234    }
22235}
22236
22237impl<'a> Vfmaddsub132phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22238    fn vfmaddsub132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22239        self.emit(
22240            VFMADDSUB132PH512RRR_MASKZ,
22241            op0.as_operand(),
22242            op1.as_operand(),
22243            op2.as_operand(),
22244            &NOREG,
22245        );
22246    }
22247}
22248
22249impl<'a> Vfmaddsub132phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22250    fn vfmaddsub132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22251        self.emit(
22252            VFMADDSUB132PH512RRM_MASKZ,
22253            op0.as_operand(),
22254            op1.as_operand(),
22255            op2.as_operand(),
22256            &NOREG,
22257        );
22258    }
22259}
22260
22261/// `VFMADDSUB132PH_MASKZ_ER`.
22262///
22263/// Supported operand variants:
22264///
22265/// ```text
22266/// +---+---------------+
22267/// | # | Operands      |
22268/// +---+---------------+
22269/// | 1 | Zmm, Zmm, Zmm |
22270/// +---+---------------+
22271/// ```
22272pub trait Vfmaddsub132phMaskzErEmitter<A, B, C> {
22273    fn vfmaddsub132ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
22274}
22275
22276impl<'a> Vfmaddsub132phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22277    fn vfmaddsub132ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22278        self.emit(
22279            VFMADDSUB132PH512RRR_MASKZ_ER,
22280            op0.as_operand(),
22281            op1.as_operand(),
22282            op2.as_operand(),
22283            &NOREG,
22284        );
22285    }
22286}
22287
22288/// `VFMADDSUB213PH`.
22289///
22290/// Supported operand variants:
22291///
22292/// ```text
22293/// +---+---------------+
22294/// | # | Operands      |
22295/// +---+---------------+
22296/// | 1 | Xmm, Xmm, Mem |
22297/// | 2 | Xmm, Xmm, Xmm |
22298/// | 3 | Ymm, Ymm, Mem |
22299/// | 4 | Ymm, Ymm, Ymm |
22300/// | 5 | Zmm, Zmm, Mem |
22301/// | 6 | Zmm, Zmm, Zmm |
22302/// +---+---------------+
22303/// ```
22304pub trait Vfmaddsub213phEmitter<A, B, C> {
22305    fn vfmaddsub213ph(&mut self, op0: A, op1: B, op2: C);
22306}
22307
22308impl<'a> Vfmaddsub213phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22309    fn vfmaddsub213ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22310        self.emit(
22311            VFMADDSUB213PH128RRR,
22312            op0.as_operand(),
22313            op1.as_operand(),
22314            op2.as_operand(),
22315            &NOREG,
22316        );
22317    }
22318}
22319
22320impl<'a> Vfmaddsub213phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22321    fn vfmaddsub213ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22322        self.emit(
22323            VFMADDSUB213PH128RRM,
22324            op0.as_operand(),
22325            op1.as_operand(),
22326            op2.as_operand(),
22327            &NOREG,
22328        );
22329    }
22330}
22331
22332impl<'a> Vfmaddsub213phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22333    fn vfmaddsub213ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22334        self.emit(
22335            VFMADDSUB213PH256RRR,
22336            op0.as_operand(),
22337            op1.as_operand(),
22338            op2.as_operand(),
22339            &NOREG,
22340        );
22341    }
22342}
22343
22344impl<'a> Vfmaddsub213phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22345    fn vfmaddsub213ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22346        self.emit(
22347            VFMADDSUB213PH256RRM,
22348            op0.as_operand(),
22349            op1.as_operand(),
22350            op2.as_operand(),
22351            &NOREG,
22352        );
22353    }
22354}
22355
22356impl<'a> Vfmaddsub213phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22357    fn vfmaddsub213ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22358        self.emit(
22359            VFMADDSUB213PH512RRR,
22360            op0.as_operand(),
22361            op1.as_operand(),
22362            op2.as_operand(),
22363            &NOREG,
22364        );
22365    }
22366}
22367
22368impl<'a> Vfmaddsub213phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22369    fn vfmaddsub213ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22370        self.emit(
22371            VFMADDSUB213PH512RRM,
22372            op0.as_operand(),
22373            op1.as_operand(),
22374            op2.as_operand(),
22375            &NOREG,
22376        );
22377    }
22378}
22379
22380/// `VFMADDSUB213PH_ER`.
22381///
22382/// Supported operand variants:
22383///
22384/// ```text
22385/// +---+---------------+
22386/// | # | Operands      |
22387/// +---+---------------+
22388/// | 1 | Zmm, Zmm, Zmm |
22389/// +---+---------------+
22390/// ```
22391pub trait Vfmaddsub213phErEmitter<A, B, C> {
22392    fn vfmaddsub213ph_er(&mut self, op0: A, op1: B, op2: C);
22393}
22394
22395impl<'a> Vfmaddsub213phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22396    fn vfmaddsub213ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22397        self.emit(
22398            VFMADDSUB213PH512RRR_ER,
22399            op0.as_operand(),
22400            op1.as_operand(),
22401            op2.as_operand(),
22402            &NOREG,
22403        );
22404    }
22405}
22406
22407/// `VFMADDSUB213PH_MASK`.
22408///
22409/// Supported operand variants:
22410///
22411/// ```text
22412/// +---+---------------+
22413/// | # | Operands      |
22414/// +---+---------------+
22415/// | 1 | Xmm, Xmm, Mem |
22416/// | 2 | Xmm, Xmm, Xmm |
22417/// | 3 | Ymm, Ymm, Mem |
22418/// | 4 | Ymm, Ymm, Ymm |
22419/// | 5 | Zmm, Zmm, Mem |
22420/// | 6 | Zmm, Zmm, Zmm |
22421/// +---+---------------+
22422/// ```
22423pub trait Vfmaddsub213phMaskEmitter<A, B, C> {
22424    fn vfmaddsub213ph_mask(&mut self, op0: A, op1: B, op2: C);
22425}
22426
22427impl<'a> Vfmaddsub213phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22428    fn vfmaddsub213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22429        self.emit(
22430            VFMADDSUB213PH128RRR_MASK,
22431            op0.as_operand(),
22432            op1.as_operand(),
22433            op2.as_operand(),
22434            &NOREG,
22435        );
22436    }
22437}
22438
22439impl<'a> Vfmaddsub213phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22440    fn vfmaddsub213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22441        self.emit(
22442            VFMADDSUB213PH128RRM_MASK,
22443            op0.as_operand(),
22444            op1.as_operand(),
22445            op2.as_operand(),
22446            &NOREG,
22447        );
22448    }
22449}
22450
22451impl<'a> Vfmaddsub213phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22452    fn vfmaddsub213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22453        self.emit(
22454            VFMADDSUB213PH256RRR_MASK,
22455            op0.as_operand(),
22456            op1.as_operand(),
22457            op2.as_operand(),
22458            &NOREG,
22459        );
22460    }
22461}
22462
22463impl<'a> Vfmaddsub213phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22464    fn vfmaddsub213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22465        self.emit(
22466            VFMADDSUB213PH256RRM_MASK,
22467            op0.as_operand(),
22468            op1.as_operand(),
22469            op2.as_operand(),
22470            &NOREG,
22471        );
22472    }
22473}
22474
22475impl<'a> Vfmaddsub213phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22476    fn vfmaddsub213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22477        self.emit(
22478            VFMADDSUB213PH512RRR_MASK,
22479            op0.as_operand(),
22480            op1.as_operand(),
22481            op2.as_operand(),
22482            &NOREG,
22483        );
22484    }
22485}
22486
22487impl<'a> Vfmaddsub213phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22488    fn vfmaddsub213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22489        self.emit(
22490            VFMADDSUB213PH512RRM_MASK,
22491            op0.as_operand(),
22492            op1.as_operand(),
22493            op2.as_operand(),
22494            &NOREG,
22495        );
22496    }
22497}
22498
22499/// `VFMADDSUB213PH_MASK_ER`.
22500///
22501/// Supported operand variants:
22502///
22503/// ```text
22504/// +---+---------------+
22505/// | # | Operands      |
22506/// +---+---------------+
22507/// | 1 | Zmm, Zmm, Zmm |
22508/// +---+---------------+
22509/// ```
22510pub trait Vfmaddsub213phMaskErEmitter<A, B, C> {
22511    fn vfmaddsub213ph_mask_er(&mut self, op0: A, op1: B, op2: C);
22512}
22513
22514impl<'a> Vfmaddsub213phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22515    fn vfmaddsub213ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22516        self.emit(
22517            VFMADDSUB213PH512RRR_MASK_ER,
22518            op0.as_operand(),
22519            op1.as_operand(),
22520            op2.as_operand(),
22521            &NOREG,
22522        );
22523    }
22524}
22525
22526/// `VFMADDSUB213PH_MASKZ`.
22527///
22528/// Supported operand variants:
22529///
22530/// ```text
22531/// +---+---------------+
22532/// | # | Operands      |
22533/// +---+---------------+
22534/// | 1 | Xmm, Xmm, Mem |
22535/// | 2 | Xmm, Xmm, Xmm |
22536/// | 3 | Ymm, Ymm, Mem |
22537/// | 4 | Ymm, Ymm, Ymm |
22538/// | 5 | Zmm, Zmm, Mem |
22539/// | 6 | Zmm, Zmm, Zmm |
22540/// +---+---------------+
22541/// ```
22542pub trait Vfmaddsub213phMaskzEmitter<A, B, C> {
22543    fn vfmaddsub213ph_maskz(&mut self, op0: A, op1: B, op2: C);
22544}
22545
22546impl<'a> Vfmaddsub213phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22547    fn vfmaddsub213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22548        self.emit(
22549            VFMADDSUB213PH128RRR_MASKZ,
22550            op0.as_operand(),
22551            op1.as_operand(),
22552            op2.as_operand(),
22553            &NOREG,
22554        );
22555    }
22556}
22557
22558impl<'a> Vfmaddsub213phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22559    fn vfmaddsub213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22560        self.emit(
22561            VFMADDSUB213PH128RRM_MASKZ,
22562            op0.as_operand(),
22563            op1.as_operand(),
22564            op2.as_operand(),
22565            &NOREG,
22566        );
22567    }
22568}
22569
22570impl<'a> Vfmaddsub213phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22571    fn vfmaddsub213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22572        self.emit(
22573            VFMADDSUB213PH256RRR_MASKZ,
22574            op0.as_operand(),
22575            op1.as_operand(),
22576            op2.as_operand(),
22577            &NOREG,
22578        );
22579    }
22580}
22581
22582impl<'a> Vfmaddsub213phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22583    fn vfmaddsub213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22584        self.emit(
22585            VFMADDSUB213PH256RRM_MASKZ,
22586            op0.as_operand(),
22587            op1.as_operand(),
22588            op2.as_operand(),
22589            &NOREG,
22590        );
22591    }
22592}
22593
22594impl<'a> Vfmaddsub213phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22595    fn vfmaddsub213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22596        self.emit(
22597            VFMADDSUB213PH512RRR_MASKZ,
22598            op0.as_operand(),
22599            op1.as_operand(),
22600            op2.as_operand(),
22601            &NOREG,
22602        );
22603    }
22604}
22605
22606impl<'a> Vfmaddsub213phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22607    fn vfmaddsub213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22608        self.emit(
22609            VFMADDSUB213PH512RRM_MASKZ,
22610            op0.as_operand(),
22611            op1.as_operand(),
22612            op2.as_operand(),
22613            &NOREG,
22614        );
22615    }
22616}
22617
22618/// `VFMADDSUB213PH_MASKZ_ER`.
22619///
22620/// Supported operand variants:
22621///
22622/// ```text
22623/// +---+---------------+
22624/// | # | Operands      |
22625/// +---+---------------+
22626/// | 1 | Zmm, Zmm, Zmm |
22627/// +---+---------------+
22628/// ```
22629pub trait Vfmaddsub213phMaskzErEmitter<A, B, C> {
22630    fn vfmaddsub213ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
22631}
22632
22633impl<'a> Vfmaddsub213phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22634    fn vfmaddsub213ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22635        self.emit(
22636            VFMADDSUB213PH512RRR_MASKZ_ER,
22637            op0.as_operand(),
22638            op1.as_operand(),
22639            op2.as_operand(),
22640            &NOREG,
22641        );
22642    }
22643}
22644
22645/// `VFMADDSUB231PH`.
22646///
22647/// Supported operand variants:
22648///
22649/// ```text
22650/// +---+---------------+
22651/// | # | Operands      |
22652/// +---+---------------+
22653/// | 1 | Xmm, Xmm, Mem |
22654/// | 2 | Xmm, Xmm, Xmm |
22655/// | 3 | Ymm, Ymm, Mem |
22656/// | 4 | Ymm, Ymm, Ymm |
22657/// | 5 | Zmm, Zmm, Mem |
22658/// | 6 | Zmm, Zmm, Zmm |
22659/// +---+---------------+
22660/// ```
22661pub trait Vfmaddsub231phEmitter<A, B, C> {
22662    fn vfmaddsub231ph(&mut self, op0: A, op1: B, op2: C);
22663}
22664
22665impl<'a> Vfmaddsub231phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22666    fn vfmaddsub231ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22667        self.emit(
22668            VFMADDSUB231PH128RRR,
22669            op0.as_operand(),
22670            op1.as_operand(),
22671            op2.as_operand(),
22672            &NOREG,
22673        );
22674    }
22675}
22676
22677impl<'a> Vfmaddsub231phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22678    fn vfmaddsub231ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22679        self.emit(
22680            VFMADDSUB231PH128RRM,
22681            op0.as_operand(),
22682            op1.as_operand(),
22683            op2.as_operand(),
22684            &NOREG,
22685        );
22686    }
22687}
22688
22689impl<'a> Vfmaddsub231phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22690    fn vfmaddsub231ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22691        self.emit(
22692            VFMADDSUB231PH256RRR,
22693            op0.as_operand(),
22694            op1.as_operand(),
22695            op2.as_operand(),
22696            &NOREG,
22697        );
22698    }
22699}
22700
22701impl<'a> Vfmaddsub231phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22702    fn vfmaddsub231ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22703        self.emit(
22704            VFMADDSUB231PH256RRM,
22705            op0.as_operand(),
22706            op1.as_operand(),
22707            op2.as_operand(),
22708            &NOREG,
22709        );
22710    }
22711}
22712
22713impl<'a> Vfmaddsub231phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22714    fn vfmaddsub231ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22715        self.emit(
22716            VFMADDSUB231PH512RRR,
22717            op0.as_operand(),
22718            op1.as_operand(),
22719            op2.as_operand(),
22720            &NOREG,
22721        );
22722    }
22723}
22724
22725impl<'a> Vfmaddsub231phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22726    fn vfmaddsub231ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22727        self.emit(
22728            VFMADDSUB231PH512RRM,
22729            op0.as_operand(),
22730            op1.as_operand(),
22731            op2.as_operand(),
22732            &NOREG,
22733        );
22734    }
22735}
22736
22737/// `VFMADDSUB231PH_ER`.
22738///
22739/// Supported operand variants:
22740///
22741/// ```text
22742/// +---+---------------+
22743/// | # | Operands      |
22744/// +---+---------------+
22745/// | 1 | Zmm, Zmm, Zmm |
22746/// +---+---------------+
22747/// ```
22748pub trait Vfmaddsub231phErEmitter<A, B, C> {
22749    fn vfmaddsub231ph_er(&mut self, op0: A, op1: B, op2: C);
22750}
22751
22752impl<'a> Vfmaddsub231phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22753    fn vfmaddsub231ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22754        self.emit(
22755            VFMADDSUB231PH512RRR_ER,
22756            op0.as_operand(),
22757            op1.as_operand(),
22758            op2.as_operand(),
22759            &NOREG,
22760        );
22761    }
22762}
22763
22764/// `VFMADDSUB231PH_MASK`.
22765///
22766/// Supported operand variants:
22767///
22768/// ```text
22769/// +---+---------------+
22770/// | # | Operands      |
22771/// +---+---------------+
22772/// | 1 | Xmm, Xmm, Mem |
22773/// | 2 | Xmm, Xmm, Xmm |
22774/// | 3 | Ymm, Ymm, Mem |
22775/// | 4 | Ymm, Ymm, Ymm |
22776/// | 5 | Zmm, Zmm, Mem |
22777/// | 6 | Zmm, Zmm, Zmm |
22778/// +---+---------------+
22779/// ```
22780pub trait Vfmaddsub231phMaskEmitter<A, B, C> {
22781    fn vfmaddsub231ph_mask(&mut self, op0: A, op1: B, op2: C);
22782}
22783
22784impl<'a> Vfmaddsub231phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22785    fn vfmaddsub231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22786        self.emit(
22787            VFMADDSUB231PH128RRR_MASK,
22788            op0.as_operand(),
22789            op1.as_operand(),
22790            op2.as_operand(),
22791            &NOREG,
22792        );
22793    }
22794}
22795
22796impl<'a> Vfmaddsub231phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22797    fn vfmaddsub231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22798        self.emit(
22799            VFMADDSUB231PH128RRM_MASK,
22800            op0.as_operand(),
22801            op1.as_operand(),
22802            op2.as_operand(),
22803            &NOREG,
22804        );
22805    }
22806}
22807
22808impl<'a> Vfmaddsub231phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22809    fn vfmaddsub231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22810        self.emit(
22811            VFMADDSUB231PH256RRR_MASK,
22812            op0.as_operand(),
22813            op1.as_operand(),
22814            op2.as_operand(),
22815            &NOREG,
22816        );
22817    }
22818}
22819
22820impl<'a> Vfmaddsub231phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22821    fn vfmaddsub231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22822        self.emit(
22823            VFMADDSUB231PH256RRM_MASK,
22824            op0.as_operand(),
22825            op1.as_operand(),
22826            op2.as_operand(),
22827            &NOREG,
22828        );
22829    }
22830}
22831
22832impl<'a> Vfmaddsub231phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22833    fn vfmaddsub231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22834        self.emit(
22835            VFMADDSUB231PH512RRR_MASK,
22836            op0.as_operand(),
22837            op1.as_operand(),
22838            op2.as_operand(),
22839            &NOREG,
22840        );
22841    }
22842}
22843
22844impl<'a> Vfmaddsub231phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22845    fn vfmaddsub231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22846        self.emit(
22847            VFMADDSUB231PH512RRM_MASK,
22848            op0.as_operand(),
22849            op1.as_operand(),
22850            op2.as_operand(),
22851            &NOREG,
22852        );
22853    }
22854}
22855
22856/// `VFMADDSUB231PH_MASK_ER`.
22857///
22858/// Supported operand variants:
22859///
22860/// ```text
22861/// +---+---------------+
22862/// | # | Operands      |
22863/// +---+---------------+
22864/// | 1 | Zmm, Zmm, Zmm |
22865/// +---+---------------+
22866/// ```
22867pub trait Vfmaddsub231phMaskErEmitter<A, B, C> {
22868    fn vfmaddsub231ph_mask_er(&mut self, op0: A, op1: B, op2: C);
22869}
22870
22871impl<'a> Vfmaddsub231phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22872    fn vfmaddsub231ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22873        self.emit(
22874            VFMADDSUB231PH512RRR_MASK_ER,
22875            op0.as_operand(),
22876            op1.as_operand(),
22877            op2.as_operand(),
22878            &NOREG,
22879        );
22880    }
22881}
22882
22883/// `VFMADDSUB231PH_MASKZ`.
22884///
22885/// Supported operand variants:
22886///
22887/// ```text
22888/// +---+---------------+
22889/// | # | Operands      |
22890/// +---+---------------+
22891/// | 1 | Xmm, Xmm, Mem |
22892/// | 2 | Xmm, Xmm, Xmm |
22893/// | 3 | Ymm, Ymm, Mem |
22894/// | 4 | Ymm, Ymm, Ymm |
22895/// | 5 | Zmm, Zmm, Mem |
22896/// | 6 | Zmm, Zmm, Zmm |
22897/// +---+---------------+
22898/// ```
22899pub trait Vfmaddsub231phMaskzEmitter<A, B, C> {
22900    fn vfmaddsub231ph_maskz(&mut self, op0: A, op1: B, op2: C);
22901}
22902
22903impl<'a> Vfmaddsub231phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
22904    fn vfmaddsub231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
22905        self.emit(
22906            VFMADDSUB231PH128RRR_MASKZ,
22907            op0.as_operand(),
22908            op1.as_operand(),
22909            op2.as_operand(),
22910            &NOREG,
22911        );
22912    }
22913}
22914
22915impl<'a> Vfmaddsub231phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
22916    fn vfmaddsub231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
22917        self.emit(
22918            VFMADDSUB231PH128RRM_MASKZ,
22919            op0.as_operand(),
22920            op1.as_operand(),
22921            op2.as_operand(),
22922            &NOREG,
22923        );
22924    }
22925}
22926
22927impl<'a> Vfmaddsub231phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
22928    fn vfmaddsub231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
22929        self.emit(
22930            VFMADDSUB231PH256RRR_MASKZ,
22931            op0.as_operand(),
22932            op1.as_operand(),
22933            op2.as_operand(),
22934            &NOREG,
22935        );
22936    }
22937}
22938
22939impl<'a> Vfmaddsub231phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
22940    fn vfmaddsub231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
22941        self.emit(
22942            VFMADDSUB231PH256RRM_MASKZ,
22943            op0.as_operand(),
22944            op1.as_operand(),
22945            op2.as_operand(),
22946            &NOREG,
22947        );
22948    }
22949}
22950
22951impl<'a> Vfmaddsub231phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22952    fn vfmaddsub231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22953        self.emit(
22954            VFMADDSUB231PH512RRR_MASKZ,
22955            op0.as_operand(),
22956            op1.as_operand(),
22957            op2.as_operand(),
22958            &NOREG,
22959        );
22960    }
22961}
22962
22963impl<'a> Vfmaddsub231phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
22964    fn vfmaddsub231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
22965        self.emit(
22966            VFMADDSUB231PH512RRM_MASKZ,
22967            op0.as_operand(),
22968            op1.as_operand(),
22969            op2.as_operand(),
22970            &NOREG,
22971        );
22972    }
22973}
22974
22975/// `VFMADDSUB231PH_MASKZ_ER`.
22976///
22977/// Supported operand variants:
22978///
22979/// ```text
22980/// +---+---------------+
22981/// | # | Operands      |
22982/// +---+---------------+
22983/// | 1 | Zmm, Zmm, Zmm |
22984/// +---+---------------+
22985/// ```
22986pub trait Vfmaddsub231phMaskzErEmitter<A, B, C> {
22987    fn vfmaddsub231ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
22988}
22989
22990impl<'a> Vfmaddsub231phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
22991    fn vfmaddsub231ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
22992        self.emit(
22993            VFMADDSUB231PH512RRR_MASKZ_ER,
22994            op0.as_operand(),
22995            op1.as_operand(),
22996            op2.as_operand(),
22997            &NOREG,
22998        );
22999    }
23000}
23001
23002/// `VFMSUB132PH`.
23003///
23004/// Supported operand variants:
23005///
23006/// ```text
23007/// +---+---------------+
23008/// | # | Operands      |
23009/// +---+---------------+
23010/// | 1 | Xmm, Xmm, Mem |
23011/// | 2 | Xmm, Xmm, Xmm |
23012/// | 3 | Ymm, Ymm, Mem |
23013/// | 4 | Ymm, Ymm, Ymm |
23014/// | 5 | Zmm, Zmm, Mem |
23015/// | 6 | Zmm, Zmm, Zmm |
23016/// +---+---------------+
23017/// ```
23018pub trait Vfmsub132phEmitter<A, B, C> {
23019    fn vfmsub132ph(&mut self, op0: A, op1: B, op2: C);
23020}
23021
23022impl<'a> Vfmsub132phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23023    fn vfmsub132ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23024        self.emit(
23025            VFMSUB132PH128RRR,
23026            op0.as_operand(),
23027            op1.as_operand(),
23028            op2.as_operand(),
23029            &NOREG,
23030        );
23031    }
23032}
23033
23034impl<'a> Vfmsub132phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23035    fn vfmsub132ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23036        self.emit(
23037            VFMSUB132PH128RRM,
23038            op0.as_operand(),
23039            op1.as_operand(),
23040            op2.as_operand(),
23041            &NOREG,
23042        );
23043    }
23044}
23045
23046impl<'a> Vfmsub132phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
23047    fn vfmsub132ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
23048        self.emit(
23049            VFMSUB132PH256RRR,
23050            op0.as_operand(),
23051            op1.as_operand(),
23052            op2.as_operand(),
23053            &NOREG,
23054        );
23055    }
23056}
23057
23058impl<'a> Vfmsub132phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
23059    fn vfmsub132ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
23060        self.emit(
23061            VFMSUB132PH256RRM,
23062            op0.as_operand(),
23063            op1.as_operand(),
23064            op2.as_operand(),
23065            &NOREG,
23066        );
23067    }
23068}
23069
23070impl<'a> Vfmsub132phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23071    fn vfmsub132ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23072        self.emit(
23073            VFMSUB132PH512RRR,
23074            op0.as_operand(),
23075            op1.as_operand(),
23076            op2.as_operand(),
23077            &NOREG,
23078        );
23079    }
23080}
23081
23082impl<'a> Vfmsub132phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
23083    fn vfmsub132ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
23084        self.emit(
23085            VFMSUB132PH512RRM,
23086            op0.as_operand(),
23087            op1.as_operand(),
23088            op2.as_operand(),
23089            &NOREG,
23090        );
23091    }
23092}
23093
23094/// `VFMSUB132PH_ER`.
23095///
23096/// Supported operand variants:
23097///
23098/// ```text
23099/// +---+---------------+
23100/// | # | Operands      |
23101/// +---+---------------+
23102/// | 1 | Zmm, Zmm, Zmm |
23103/// +---+---------------+
23104/// ```
23105pub trait Vfmsub132phErEmitter<A, B, C> {
23106    fn vfmsub132ph_er(&mut self, op0: A, op1: B, op2: C);
23107}
23108
23109impl<'a> Vfmsub132phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23110    fn vfmsub132ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23111        self.emit(
23112            VFMSUB132PH512RRR_ER,
23113            op0.as_operand(),
23114            op1.as_operand(),
23115            op2.as_operand(),
23116            &NOREG,
23117        );
23118    }
23119}
23120
23121/// `VFMSUB132PH_MASK`.
23122///
23123/// Supported operand variants:
23124///
23125/// ```text
23126/// +---+---------------+
23127/// | # | Operands      |
23128/// +---+---------------+
23129/// | 1 | Xmm, Xmm, Mem |
23130/// | 2 | Xmm, Xmm, Xmm |
23131/// | 3 | Ymm, Ymm, Mem |
23132/// | 4 | Ymm, Ymm, Ymm |
23133/// | 5 | Zmm, Zmm, Mem |
23134/// | 6 | Zmm, Zmm, Zmm |
23135/// +---+---------------+
23136/// ```
23137pub trait Vfmsub132phMaskEmitter<A, B, C> {
23138    fn vfmsub132ph_mask(&mut self, op0: A, op1: B, op2: C);
23139}
23140
23141impl<'a> Vfmsub132phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23142    fn vfmsub132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23143        self.emit(
23144            VFMSUB132PH128RRR_MASK,
23145            op0.as_operand(),
23146            op1.as_operand(),
23147            op2.as_operand(),
23148            &NOREG,
23149        );
23150    }
23151}
23152
23153impl<'a> Vfmsub132phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23154    fn vfmsub132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23155        self.emit(
23156            VFMSUB132PH128RRM_MASK,
23157            op0.as_operand(),
23158            op1.as_operand(),
23159            op2.as_operand(),
23160            &NOREG,
23161        );
23162    }
23163}
23164
23165impl<'a> Vfmsub132phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
23166    fn vfmsub132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
23167        self.emit(
23168            VFMSUB132PH256RRR_MASK,
23169            op0.as_operand(),
23170            op1.as_operand(),
23171            op2.as_operand(),
23172            &NOREG,
23173        );
23174    }
23175}
23176
23177impl<'a> Vfmsub132phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
23178    fn vfmsub132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
23179        self.emit(
23180            VFMSUB132PH256RRM_MASK,
23181            op0.as_operand(),
23182            op1.as_operand(),
23183            op2.as_operand(),
23184            &NOREG,
23185        );
23186    }
23187}
23188
23189impl<'a> Vfmsub132phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23190    fn vfmsub132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23191        self.emit(
23192            VFMSUB132PH512RRR_MASK,
23193            op0.as_operand(),
23194            op1.as_operand(),
23195            op2.as_operand(),
23196            &NOREG,
23197        );
23198    }
23199}
23200
23201impl<'a> Vfmsub132phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
23202    fn vfmsub132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
23203        self.emit(
23204            VFMSUB132PH512RRM_MASK,
23205            op0.as_operand(),
23206            op1.as_operand(),
23207            op2.as_operand(),
23208            &NOREG,
23209        );
23210    }
23211}
23212
23213/// `VFMSUB132PH_MASK_ER`.
23214///
23215/// Supported operand variants:
23216///
23217/// ```text
23218/// +---+---------------+
23219/// | # | Operands      |
23220/// +---+---------------+
23221/// | 1 | Zmm, Zmm, Zmm |
23222/// +---+---------------+
23223/// ```
23224pub trait Vfmsub132phMaskErEmitter<A, B, C> {
23225    fn vfmsub132ph_mask_er(&mut self, op0: A, op1: B, op2: C);
23226}
23227
23228impl<'a> Vfmsub132phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23229    fn vfmsub132ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23230        self.emit(
23231            VFMSUB132PH512RRR_MASK_ER,
23232            op0.as_operand(),
23233            op1.as_operand(),
23234            op2.as_operand(),
23235            &NOREG,
23236        );
23237    }
23238}
23239
23240/// `VFMSUB132PH_MASKZ`.
23241///
23242/// Supported operand variants:
23243///
23244/// ```text
23245/// +---+---------------+
23246/// | # | Operands      |
23247/// +---+---------------+
23248/// | 1 | Xmm, Xmm, Mem |
23249/// | 2 | Xmm, Xmm, Xmm |
23250/// | 3 | Ymm, Ymm, Mem |
23251/// | 4 | Ymm, Ymm, Ymm |
23252/// | 5 | Zmm, Zmm, Mem |
23253/// | 6 | Zmm, Zmm, Zmm |
23254/// +---+---------------+
23255/// ```
23256pub trait Vfmsub132phMaskzEmitter<A, B, C> {
23257    fn vfmsub132ph_maskz(&mut self, op0: A, op1: B, op2: C);
23258}
23259
23260impl<'a> Vfmsub132phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23261    fn vfmsub132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23262        self.emit(
23263            VFMSUB132PH128RRR_MASKZ,
23264            op0.as_operand(),
23265            op1.as_operand(),
23266            op2.as_operand(),
23267            &NOREG,
23268        );
23269    }
23270}
23271
23272impl<'a> Vfmsub132phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23273    fn vfmsub132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23274        self.emit(
23275            VFMSUB132PH128RRM_MASKZ,
23276            op0.as_operand(),
23277            op1.as_operand(),
23278            op2.as_operand(),
23279            &NOREG,
23280        );
23281    }
23282}
23283
23284impl<'a> Vfmsub132phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
23285    fn vfmsub132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
23286        self.emit(
23287            VFMSUB132PH256RRR_MASKZ,
23288            op0.as_operand(),
23289            op1.as_operand(),
23290            op2.as_operand(),
23291            &NOREG,
23292        );
23293    }
23294}
23295
23296impl<'a> Vfmsub132phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
23297    fn vfmsub132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
23298        self.emit(
23299            VFMSUB132PH256RRM_MASKZ,
23300            op0.as_operand(),
23301            op1.as_operand(),
23302            op2.as_operand(),
23303            &NOREG,
23304        );
23305    }
23306}
23307
23308impl<'a> Vfmsub132phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23309    fn vfmsub132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23310        self.emit(
23311            VFMSUB132PH512RRR_MASKZ,
23312            op0.as_operand(),
23313            op1.as_operand(),
23314            op2.as_operand(),
23315            &NOREG,
23316        );
23317    }
23318}
23319
23320impl<'a> Vfmsub132phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
23321    fn vfmsub132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
23322        self.emit(
23323            VFMSUB132PH512RRM_MASKZ,
23324            op0.as_operand(),
23325            op1.as_operand(),
23326            op2.as_operand(),
23327            &NOREG,
23328        );
23329    }
23330}
23331
23332/// `VFMSUB132PH_MASKZ_ER`.
23333///
23334/// Supported operand variants:
23335///
23336/// ```text
23337/// +---+---------------+
23338/// | # | Operands      |
23339/// +---+---------------+
23340/// | 1 | Zmm, Zmm, Zmm |
23341/// +---+---------------+
23342/// ```
23343pub trait Vfmsub132phMaskzErEmitter<A, B, C> {
23344    fn vfmsub132ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
23345}
23346
23347impl<'a> Vfmsub132phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23348    fn vfmsub132ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23349        self.emit(
23350            VFMSUB132PH512RRR_MASKZ_ER,
23351            op0.as_operand(),
23352            op1.as_operand(),
23353            op2.as_operand(),
23354            &NOREG,
23355        );
23356    }
23357}
23358
23359/// `VFMSUB132SH`.
23360///
23361/// Supported operand variants:
23362///
23363/// ```text
23364/// +---+---------------+
23365/// | # | Operands      |
23366/// +---+---------------+
23367/// | 1 | Xmm, Xmm, Mem |
23368/// | 2 | Xmm, Xmm, Xmm |
23369/// +---+---------------+
23370/// ```
23371pub trait Vfmsub132shEmitter<A, B, C> {
23372    fn vfmsub132sh(&mut self, op0: A, op1: B, op2: C);
23373}
23374
23375impl<'a> Vfmsub132shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23376    fn vfmsub132sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23377        self.emit(
23378            VFMSUB132SHRRR,
23379            op0.as_operand(),
23380            op1.as_operand(),
23381            op2.as_operand(),
23382            &NOREG,
23383        );
23384    }
23385}
23386
23387impl<'a> Vfmsub132shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23388    fn vfmsub132sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23389        self.emit(
23390            VFMSUB132SHRRM,
23391            op0.as_operand(),
23392            op1.as_operand(),
23393            op2.as_operand(),
23394            &NOREG,
23395        );
23396    }
23397}
23398
23399/// `VFMSUB132SH_ER`.
23400///
23401/// Supported operand variants:
23402///
23403/// ```text
23404/// +---+---------------+
23405/// | # | Operands      |
23406/// +---+---------------+
23407/// | 1 | Xmm, Xmm, Xmm |
23408/// +---+---------------+
23409/// ```
23410pub trait Vfmsub132shErEmitter<A, B, C> {
23411    fn vfmsub132sh_er(&mut self, op0: A, op1: B, op2: C);
23412}
23413
23414impl<'a> Vfmsub132shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23415    fn vfmsub132sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23416        self.emit(
23417            VFMSUB132SHRRR_ER,
23418            op0.as_operand(),
23419            op1.as_operand(),
23420            op2.as_operand(),
23421            &NOREG,
23422        );
23423    }
23424}
23425
23426/// `VFMSUB132SH_MASK`.
23427///
23428/// Supported operand variants:
23429///
23430/// ```text
23431/// +---+---------------+
23432/// | # | Operands      |
23433/// +---+---------------+
23434/// | 1 | Xmm, Xmm, Mem |
23435/// | 2 | Xmm, Xmm, Xmm |
23436/// +---+---------------+
23437/// ```
23438pub trait Vfmsub132shMaskEmitter<A, B, C> {
23439    fn vfmsub132sh_mask(&mut self, op0: A, op1: B, op2: C);
23440}
23441
23442impl<'a> Vfmsub132shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23443    fn vfmsub132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23444        self.emit(
23445            VFMSUB132SHRRR_MASK,
23446            op0.as_operand(),
23447            op1.as_operand(),
23448            op2.as_operand(),
23449            &NOREG,
23450        );
23451    }
23452}
23453
23454impl<'a> Vfmsub132shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23455    fn vfmsub132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23456        self.emit(
23457            VFMSUB132SHRRM_MASK,
23458            op0.as_operand(),
23459            op1.as_operand(),
23460            op2.as_operand(),
23461            &NOREG,
23462        );
23463    }
23464}
23465
23466/// `VFMSUB132SH_MASK_ER`.
23467///
23468/// Supported operand variants:
23469///
23470/// ```text
23471/// +---+---------------+
23472/// | # | Operands      |
23473/// +---+---------------+
23474/// | 1 | Xmm, Xmm, Xmm |
23475/// +---+---------------+
23476/// ```
23477pub trait Vfmsub132shMaskErEmitter<A, B, C> {
23478    fn vfmsub132sh_mask_er(&mut self, op0: A, op1: B, op2: C);
23479}
23480
23481impl<'a> Vfmsub132shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23482    fn vfmsub132sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23483        self.emit(
23484            VFMSUB132SHRRR_MASK_ER,
23485            op0.as_operand(),
23486            op1.as_operand(),
23487            op2.as_operand(),
23488            &NOREG,
23489        );
23490    }
23491}
23492
23493/// `VFMSUB132SH_MASKZ`.
23494///
23495/// Supported operand variants:
23496///
23497/// ```text
23498/// +---+---------------+
23499/// | # | Operands      |
23500/// +---+---------------+
23501/// | 1 | Xmm, Xmm, Mem |
23502/// | 2 | Xmm, Xmm, Xmm |
23503/// +---+---------------+
23504/// ```
23505pub trait Vfmsub132shMaskzEmitter<A, B, C> {
23506    fn vfmsub132sh_maskz(&mut self, op0: A, op1: B, op2: C);
23507}
23508
23509impl<'a> Vfmsub132shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23510    fn vfmsub132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23511        self.emit(
23512            VFMSUB132SHRRR_MASKZ,
23513            op0.as_operand(),
23514            op1.as_operand(),
23515            op2.as_operand(),
23516            &NOREG,
23517        );
23518    }
23519}
23520
23521impl<'a> Vfmsub132shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23522    fn vfmsub132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23523        self.emit(
23524            VFMSUB132SHRRM_MASKZ,
23525            op0.as_operand(),
23526            op1.as_operand(),
23527            op2.as_operand(),
23528            &NOREG,
23529        );
23530    }
23531}
23532
23533/// `VFMSUB132SH_MASKZ_ER`.
23534///
23535/// Supported operand variants:
23536///
23537/// ```text
23538/// +---+---------------+
23539/// | # | Operands      |
23540/// +---+---------------+
23541/// | 1 | Xmm, Xmm, Xmm |
23542/// +---+---------------+
23543/// ```
23544pub trait Vfmsub132shMaskzErEmitter<A, B, C> {
23545    fn vfmsub132sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
23546}
23547
23548impl<'a> Vfmsub132shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23549    fn vfmsub132sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23550        self.emit(
23551            VFMSUB132SHRRR_MASKZ_ER,
23552            op0.as_operand(),
23553            op1.as_operand(),
23554            op2.as_operand(),
23555            &NOREG,
23556        );
23557    }
23558}
23559
23560/// `VFMSUB213PH`.
23561///
23562/// Supported operand variants:
23563///
23564/// ```text
23565/// +---+---------------+
23566/// | # | Operands      |
23567/// +---+---------------+
23568/// | 1 | Xmm, Xmm, Mem |
23569/// | 2 | Xmm, Xmm, Xmm |
23570/// | 3 | Ymm, Ymm, Mem |
23571/// | 4 | Ymm, Ymm, Ymm |
23572/// | 5 | Zmm, Zmm, Mem |
23573/// | 6 | Zmm, Zmm, Zmm |
23574/// +---+---------------+
23575/// ```
23576pub trait Vfmsub213phEmitter<A, B, C> {
23577    fn vfmsub213ph(&mut self, op0: A, op1: B, op2: C);
23578}
23579
23580impl<'a> Vfmsub213phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23581    fn vfmsub213ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23582        self.emit(
23583            VFMSUB213PH128RRR,
23584            op0.as_operand(),
23585            op1.as_operand(),
23586            op2.as_operand(),
23587            &NOREG,
23588        );
23589    }
23590}
23591
23592impl<'a> Vfmsub213phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23593    fn vfmsub213ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23594        self.emit(
23595            VFMSUB213PH128RRM,
23596            op0.as_operand(),
23597            op1.as_operand(),
23598            op2.as_operand(),
23599            &NOREG,
23600        );
23601    }
23602}
23603
23604impl<'a> Vfmsub213phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
23605    fn vfmsub213ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
23606        self.emit(
23607            VFMSUB213PH256RRR,
23608            op0.as_operand(),
23609            op1.as_operand(),
23610            op2.as_operand(),
23611            &NOREG,
23612        );
23613    }
23614}
23615
23616impl<'a> Vfmsub213phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
23617    fn vfmsub213ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
23618        self.emit(
23619            VFMSUB213PH256RRM,
23620            op0.as_operand(),
23621            op1.as_operand(),
23622            op2.as_operand(),
23623            &NOREG,
23624        );
23625    }
23626}
23627
23628impl<'a> Vfmsub213phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23629    fn vfmsub213ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23630        self.emit(
23631            VFMSUB213PH512RRR,
23632            op0.as_operand(),
23633            op1.as_operand(),
23634            op2.as_operand(),
23635            &NOREG,
23636        );
23637    }
23638}
23639
23640impl<'a> Vfmsub213phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
23641    fn vfmsub213ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
23642        self.emit(
23643            VFMSUB213PH512RRM,
23644            op0.as_operand(),
23645            op1.as_operand(),
23646            op2.as_operand(),
23647            &NOREG,
23648        );
23649    }
23650}
23651
23652/// `VFMSUB213PH_ER`.
23653///
23654/// Supported operand variants:
23655///
23656/// ```text
23657/// +---+---------------+
23658/// | # | Operands      |
23659/// +---+---------------+
23660/// | 1 | Zmm, Zmm, Zmm |
23661/// +---+---------------+
23662/// ```
23663pub trait Vfmsub213phErEmitter<A, B, C> {
23664    fn vfmsub213ph_er(&mut self, op0: A, op1: B, op2: C);
23665}
23666
23667impl<'a> Vfmsub213phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23668    fn vfmsub213ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23669        self.emit(
23670            VFMSUB213PH512RRR_ER,
23671            op0.as_operand(),
23672            op1.as_operand(),
23673            op2.as_operand(),
23674            &NOREG,
23675        );
23676    }
23677}
23678
23679/// `VFMSUB213PH_MASK`.
23680///
23681/// Supported operand variants:
23682///
23683/// ```text
23684/// +---+---------------+
23685/// | # | Operands      |
23686/// +---+---------------+
23687/// | 1 | Xmm, Xmm, Mem |
23688/// | 2 | Xmm, Xmm, Xmm |
23689/// | 3 | Ymm, Ymm, Mem |
23690/// | 4 | Ymm, Ymm, Ymm |
23691/// | 5 | Zmm, Zmm, Mem |
23692/// | 6 | Zmm, Zmm, Zmm |
23693/// +---+---------------+
23694/// ```
23695pub trait Vfmsub213phMaskEmitter<A, B, C> {
23696    fn vfmsub213ph_mask(&mut self, op0: A, op1: B, op2: C);
23697}
23698
23699impl<'a> Vfmsub213phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23700    fn vfmsub213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23701        self.emit(
23702            VFMSUB213PH128RRR_MASK,
23703            op0.as_operand(),
23704            op1.as_operand(),
23705            op2.as_operand(),
23706            &NOREG,
23707        );
23708    }
23709}
23710
23711impl<'a> Vfmsub213phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23712    fn vfmsub213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23713        self.emit(
23714            VFMSUB213PH128RRM_MASK,
23715            op0.as_operand(),
23716            op1.as_operand(),
23717            op2.as_operand(),
23718            &NOREG,
23719        );
23720    }
23721}
23722
23723impl<'a> Vfmsub213phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
23724    fn vfmsub213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
23725        self.emit(
23726            VFMSUB213PH256RRR_MASK,
23727            op0.as_operand(),
23728            op1.as_operand(),
23729            op2.as_operand(),
23730            &NOREG,
23731        );
23732    }
23733}
23734
23735impl<'a> Vfmsub213phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
23736    fn vfmsub213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
23737        self.emit(
23738            VFMSUB213PH256RRM_MASK,
23739            op0.as_operand(),
23740            op1.as_operand(),
23741            op2.as_operand(),
23742            &NOREG,
23743        );
23744    }
23745}
23746
23747impl<'a> Vfmsub213phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23748    fn vfmsub213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23749        self.emit(
23750            VFMSUB213PH512RRR_MASK,
23751            op0.as_operand(),
23752            op1.as_operand(),
23753            op2.as_operand(),
23754            &NOREG,
23755        );
23756    }
23757}
23758
23759impl<'a> Vfmsub213phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
23760    fn vfmsub213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
23761        self.emit(
23762            VFMSUB213PH512RRM_MASK,
23763            op0.as_operand(),
23764            op1.as_operand(),
23765            op2.as_operand(),
23766            &NOREG,
23767        );
23768    }
23769}
23770
23771/// `VFMSUB213PH_MASK_ER`.
23772///
23773/// Supported operand variants:
23774///
23775/// ```text
23776/// +---+---------------+
23777/// | # | Operands      |
23778/// +---+---------------+
23779/// | 1 | Zmm, Zmm, Zmm |
23780/// +---+---------------+
23781/// ```
23782pub trait Vfmsub213phMaskErEmitter<A, B, C> {
23783    fn vfmsub213ph_mask_er(&mut self, op0: A, op1: B, op2: C);
23784}
23785
23786impl<'a> Vfmsub213phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23787    fn vfmsub213ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23788        self.emit(
23789            VFMSUB213PH512RRR_MASK_ER,
23790            op0.as_operand(),
23791            op1.as_operand(),
23792            op2.as_operand(),
23793            &NOREG,
23794        );
23795    }
23796}
23797
23798/// `VFMSUB213PH_MASKZ`.
23799///
23800/// Supported operand variants:
23801///
23802/// ```text
23803/// +---+---------------+
23804/// | # | Operands      |
23805/// +---+---------------+
23806/// | 1 | Xmm, Xmm, Mem |
23807/// | 2 | Xmm, Xmm, Xmm |
23808/// | 3 | Ymm, Ymm, Mem |
23809/// | 4 | Ymm, Ymm, Ymm |
23810/// | 5 | Zmm, Zmm, Mem |
23811/// | 6 | Zmm, Zmm, Zmm |
23812/// +---+---------------+
23813/// ```
23814pub trait Vfmsub213phMaskzEmitter<A, B, C> {
23815    fn vfmsub213ph_maskz(&mut self, op0: A, op1: B, op2: C);
23816}
23817
23818impl<'a> Vfmsub213phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23819    fn vfmsub213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23820        self.emit(
23821            VFMSUB213PH128RRR_MASKZ,
23822            op0.as_operand(),
23823            op1.as_operand(),
23824            op2.as_operand(),
23825            &NOREG,
23826        );
23827    }
23828}
23829
23830impl<'a> Vfmsub213phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23831    fn vfmsub213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23832        self.emit(
23833            VFMSUB213PH128RRM_MASKZ,
23834            op0.as_operand(),
23835            op1.as_operand(),
23836            op2.as_operand(),
23837            &NOREG,
23838        );
23839    }
23840}
23841
23842impl<'a> Vfmsub213phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
23843    fn vfmsub213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
23844        self.emit(
23845            VFMSUB213PH256RRR_MASKZ,
23846            op0.as_operand(),
23847            op1.as_operand(),
23848            op2.as_operand(),
23849            &NOREG,
23850        );
23851    }
23852}
23853
23854impl<'a> Vfmsub213phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
23855    fn vfmsub213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
23856        self.emit(
23857            VFMSUB213PH256RRM_MASKZ,
23858            op0.as_operand(),
23859            op1.as_operand(),
23860            op2.as_operand(),
23861            &NOREG,
23862        );
23863    }
23864}
23865
23866impl<'a> Vfmsub213phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23867    fn vfmsub213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23868        self.emit(
23869            VFMSUB213PH512RRR_MASKZ,
23870            op0.as_operand(),
23871            op1.as_operand(),
23872            op2.as_operand(),
23873            &NOREG,
23874        );
23875    }
23876}
23877
23878impl<'a> Vfmsub213phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
23879    fn vfmsub213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
23880        self.emit(
23881            VFMSUB213PH512RRM_MASKZ,
23882            op0.as_operand(),
23883            op1.as_operand(),
23884            op2.as_operand(),
23885            &NOREG,
23886        );
23887    }
23888}
23889
23890/// `VFMSUB213PH_MASKZ_ER`.
23891///
23892/// Supported operand variants:
23893///
23894/// ```text
23895/// +---+---------------+
23896/// | # | Operands      |
23897/// +---+---------------+
23898/// | 1 | Zmm, Zmm, Zmm |
23899/// +---+---------------+
23900/// ```
23901pub trait Vfmsub213phMaskzErEmitter<A, B, C> {
23902    fn vfmsub213ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
23903}
23904
23905impl<'a> Vfmsub213phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
23906    fn vfmsub213ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
23907        self.emit(
23908            VFMSUB213PH512RRR_MASKZ_ER,
23909            op0.as_operand(),
23910            op1.as_operand(),
23911            op2.as_operand(),
23912            &NOREG,
23913        );
23914    }
23915}
23916
23917/// `VFMSUB213SH`.
23918///
23919/// Supported operand variants:
23920///
23921/// ```text
23922/// +---+---------------+
23923/// | # | Operands      |
23924/// +---+---------------+
23925/// | 1 | Xmm, Xmm, Mem |
23926/// | 2 | Xmm, Xmm, Xmm |
23927/// +---+---------------+
23928/// ```
23929pub trait Vfmsub213shEmitter<A, B, C> {
23930    fn vfmsub213sh(&mut self, op0: A, op1: B, op2: C);
23931}
23932
23933impl<'a> Vfmsub213shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23934    fn vfmsub213sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23935        self.emit(
23936            VFMSUB213SHRRR,
23937            op0.as_operand(),
23938            op1.as_operand(),
23939            op2.as_operand(),
23940            &NOREG,
23941        );
23942    }
23943}
23944
23945impl<'a> Vfmsub213shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
23946    fn vfmsub213sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
23947        self.emit(
23948            VFMSUB213SHRRM,
23949            op0.as_operand(),
23950            op1.as_operand(),
23951            op2.as_operand(),
23952            &NOREG,
23953        );
23954    }
23955}
23956
23957/// `VFMSUB213SH_ER`.
23958///
23959/// Supported operand variants:
23960///
23961/// ```text
23962/// +---+---------------+
23963/// | # | Operands      |
23964/// +---+---------------+
23965/// | 1 | Xmm, Xmm, Xmm |
23966/// +---+---------------+
23967/// ```
23968pub trait Vfmsub213shErEmitter<A, B, C> {
23969    fn vfmsub213sh_er(&mut self, op0: A, op1: B, op2: C);
23970}
23971
23972impl<'a> Vfmsub213shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
23973    fn vfmsub213sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
23974        self.emit(
23975            VFMSUB213SHRRR_ER,
23976            op0.as_operand(),
23977            op1.as_operand(),
23978            op2.as_operand(),
23979            &NOREG,
23980        );
23981    }
23982}
23983
23984/// `VFMSUB213SH_MASK`.
23985///
23986/// Supported operand variants:
23987///
23988/// ```text
23989/// +---+---------------+
23990/// | # | Operands      |
23991/// +---+---------------+
23992/// | 1 | Xmm, Xmm, Mem |
23993/// | 2 | Xmm, Xmm, Xmm |
23994/// +---+---------------+
23995/// ```
23996pub trait Vfmsub213shMaskEmitter<A, B, C> {
23997    fn vfmsub213sh_mask(&mut self, op0: A, op1: B, op2: C);
23998}
23999
24000impl<'a> Vfmsub213shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24001    fn vfmsub213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24002        self.emit(
24003            VFMSUB213SHRRR_MASK,
24004            op0.as_operand(),
24005            op1.as_operand(),
24006            op2.as_operand(),
24007            &NOREG,
24008        );
24009    }
24010}
24011
24012impl<'a> Vfmsub213shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24013    fn vfmsub213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24014        self.emit(
24015            VFMSUB213SHRRM_MASK,
24016            op0.as_operand(),
24017            op1.as_operand(),
24018            op2.as_operand(),
24019            &NOREG,
24020        );
24021    }
24022}
24023
24024/// `VFMSUB213SH_MASK_ER`.
24025///
24026/// Supported operand variants:
24027///
24028/// ```text
24029/// +---+---------------+
24030/// | # | Operands      |
24031/// +---+---------------+
24032/// | 1 | Xmm, Xmm, Xmm |
24033/// +---+---------------+
24034/// ```
24035pub trait Vfmsub213shMaskErEmitter<A, B, C> {
24036    fn vfmsub213sh_mask_er(&mut self, op0: A, op1: B, op2: C);
24037}
24038
24039impl<'a> Vfmsub213shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24040    fn vfmsub213sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24041        self.emit(
24042            VFMSUB213SHRRR_MASK_ER,
24043            op0.as_operand(),
24044            op1.as_operand(),
24045            op2.as_operand(),
24046            &NOREG,
24047        );
24048    }
24049}
24050
24051/// `VFMSUB213SH_MASKZ`.
24052///
24053/// Supported operand variants:
24054///
24055/// ```text
24056/// +---+---------------+
24057/// | # | Operands      |
24058/// +---+---------------+
24059/// | 1 | Xmm, Xmm, Mem |
24060/// | 2 | Xmm, Xmm, Xmm |
24061/// +---+---------------+
24062/// ```
24063pub trait Vfmsub213shMaskzEmitter<A, B, C> {
24064    fn vfmsub213sh_maskz(&mut self, op0: A, op1: B, op2: C);
24065}
24066
24067impl<'a> Vfmsub213shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24068    fn vfmsub213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24069        self.emit(
24070            VFMSUB213SHRRR_MASKZ,
24071            op0.as_operand(),
24072            op1.as_operand(),
24073            op2.as_operand(),
24074            &NOREG,
24075        );
24076    }
24077}
24078
24079impl<'a> Vfmsub213shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24080    fn vfmsub213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24081        self.emit(
24082            VFMSUB213SHRRM_MASKZ,
24083            op0.as_operand(),
24084            op1.as_operand(),
24085            op2.as_operand(),
24086            &NOREG,
24087        );
24088    }
24089}
24090
24091/// `VFMSUB213SH_MASKZ_ER`.
24092///
24093/// Supported operand variants:
24094///
24095/// ```text
24096/// +---+---------------+
24097/// | # | Operands      |
24098/// +---+---------------+
24099/// | 1 | Xmm, Xmm, Xmm |
24100/// +---+---------------+
24101/// ```
24102pub trait Vfmsub213shMaskzErEmitter<A, B, C> {
24103    fn vfmsub213sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
24104}
24105
24106impl<'a> Vfmsub213shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24107    fn vfmsub213sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24108        self.emit(
24109            VFMSUB213SHRRR_MASKZ_ER,
24110            op0.as_operand(),
24111            op1.as_operand(),
24112            op2.as_operand(),
24113            &NOREG,
24114        );
24115    }
24116}
24117
24118/// `VFMSUB231PH`.
24119///
24120/// Supported operand variants:
24121///
24122/// ```text
24123/// +---+---------------+
24124/// | # | Operands      |
24125/// +---+---------------+
24126/// | 1 | Xmm, Xmm, Mem |
24127/// | 2 | Xmm, Xmm, Xmm |
24128/// | 3 | Ymm, Ymm, Mem |
24129/// | 4 | Ymm, Ymm, Ymm |
24130/// | 5 | Zmm, Zmm, Mem |
24131/// | 6 | Zmm, Zmm, Zmm |
24132/// +---+---------------+
24133/// ```
24134pub trait Vfmsub231phEmitter<A, B, C> {
24135    fn vfmsub231ph(&mut self, op0: A, op1: B, op2: C);
24136}
24137
24138impl<'a> Vfmsub231phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24139    fn vfmsub231ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24140        self.emit(
24141            VFMSUB231PH128RRR,
24142            op0.as_operand(),
24143            op1.as_operand(),
24144            op2.as_operand(),
24145            &NOREG,
24146        );
24147    }
24148}
24149
24150impl<'a> Vfmsub231phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24151    fn vfmsub231ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24152        self.emit(
24153            VFMSUB231PH128RRM,
24154            op0.as_operand(),
24155            op1.as_operand(),
24156            op2.as_operand(),
24157            &NOREG,
24158        );
24159    }
24160}
24161
24162impl<'a> Vfmsub231phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
24163    fn vfmsub231ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
24164        self.emit(
24165            VFMSUB231PH256RRR,
24166            op0.as_operand(),
24167            op1.as_operand(),
24168            op2.as_operand(),
24169            &NOREG,
24170        );
24171    }
24172}
24173
24174impl<'a> Vfmsub231phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
24175    fn vfmsub231ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
24176        self.emit(
24177            VFMSUB231PH256RRM,
24178            op0.as_operand(),
24179            op1.as_operand(),
24180            op2.as_operand(),
24181            &NOREG,
24182        );
24183    }
24184}
24185
24186impl<'a> Vfmsub231phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24187    fn vfmsub231ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24188        self.emit(
24189            VFMSUB231PH512RRR,
24190            op0.as_operand(),
24191            op1.as_operand(),
24192            op2.as_operand(),
24193            &NOREG,
24194        );
24195    }
24196}
24197
24198impl<'a> Vfmsub231phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
24199    fn vfmsub231ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
24200        self.emit(
24201            VFMSUB231PH512RRM,
24202            op0.as_operand(),
24203            op1.as_operand(),
24204            op2.as_operand(),
24205            &NOREG,
24206        );
24207    }
24208}
24209
24210/// `VFMSUB231PH_ER`.
24211///
24212/// Supported operand variants:
24213///
24214/// ```text
24215/// +---+---------------+
24216/// | # | Operands      |
24217/// +---+---------------+
24218/// | 1 | Zmm, Zmm, Zmm |
24219/// +---+---------------+
24220/// ```
24221pub trait Vfmsub231phErEmitter<A, B, C> {
24222    fn vfmsub231ph_er(&mut self, op0: A, op1: B, op2: C);
24223}
24224
24225impl<'a> Vfmsub231phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24226    fn vfmsub231ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24227        self.emit(
24228            VFMSUB231PH512RRR_ER,
24229            op0.as_operand(),
24230            op1.as_operand(),
24231            op2.as_operand(),
24232            &NOREG,
24233        );
24234    }
24235}
24236
24237/// `VFMSUB231PH_MASK`.
24238///
24239/// Supported operand variants:
24240///
24241/// ```text
24242/// +---+---------------+
24243/// | # | Operands      |
24244/// +---+---------------+
24245/// | 1 | Xmm, Xmm, Mem |
24246/// | 2 | Xmm, Xmm, Xmm |
24247/// | 3 | Ymm, Ymm, Mem |
24248/// | 4 | Ymm, Ymm, Ymm |
24249/// | 5 | Zmm, Zmm, Mem |
24250/// | 6 | Zmm, Zmm, Zmm |
24251/// +---+---------------+
24252/// ```
24253pub trait Vfmsub231phMaskEmitter<A, B, C> {
24254    fn vfmsub231ph_mask(&mut self, op0: A, op1: B, op2: C);
24255}
24256
24257impl<'a> Vfmsub231phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24258    fn vfmsub231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24259        self.emit(
24260            VFMSUB231PH128RRR_MASK,
24261            op0.as_operand(),
24262            op1.as_operand(),
24263            op2.as_operand(),
24264            &NOREG,
24265        );
24266    }
24267}
24268
24269impl<'a> Vfmsub231phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24270    fn vfmsub231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24271        self.emit(
24272            VFMSUB231PH128RRM_MASK,
24273            op0.as_operand(),
24274            op1.as_operand(),
24275            op2.as_operand(),
24276            &NOREG,
24277        );
24278    }
24279}
24280
24281impl<'a> Vfmsub231phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
24282    fn vfmsub231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
24283        self.emit(
24284            VFMSUB231PH256RRR_MASK,
24285            op0.as_operand(),
24286            op1.as_operand(),
24287            op2.as_operand(),
24288            &NOREG,
24289        );
24290    }
24291}
24292
24293impl<'a> Vfmsub231phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
24294    fn vfmsub231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
24295        self.emit(
24296            VFMSUB231PH256RRM_MASK,
24297            op0.as_operand(),
24298            op1.as_operand(),
24299            op2.as_operand(),
24300            &NOREG,
24301        );
24302    }
24303}
24304
24305impl<'a> Vfmsub231phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24306    fn vfmsub231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24307        self.emit(
24308            VFMSUB231PH512RRR_MASK,
24309            op0.as_operand(),
24310            op1.as_operand(),
24311            op2.as_operand(),
24312            &NOREG,
24313        );
24314    }
24315}
24316
24317impl<'a> Vfmsub231phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
24318    fn vfmsub231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
24319        self.emit(
24320            VFMSUB231PH512RRM_MASK,
24321            op0.as_operand(),
24322            op1.as_operand(),
24323            op2.as_operand(),
24324            &NOREG,
24325        );
24326    }
24327}
24328
24329/// `VFMSUB231PH_MASK_ER`.
24330///
24331/// Supported operand variants:
24332///
24333/// ```text
24334/// +---+---------------+
24335/// | # | Operands      |
24336/// +---+---------------+
24337/// | 1 | Zmm, Zmm, Zmm |
24338/// +---+---------------+
24339/// ```
24340pub trait Vfmsub231phMaskErEmitter<A, B, C> {
24341    fn vfmsub231ph_mask_er(&mut self, op0: A, op1: B, op2: C);
24342}
24343
24344impl<'a> Vfmsub231phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24345    fn vfmsub231ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24346        self.emit(
24347            VFMSUB231PH512RRR_MASK_ER,
24348            op0.as_operand(),
24349            op1.as_operand(),
24350            op2.as_operand(),
24351            &NOREG,
24352        );
24353    }
24354}
24355
24356/// `VFMSUB231PH_MASKZ`.
24357///
24358/// Supported operand variants:
24359///
24360/// ```text
24361/// +---+---------------+
24362/// | # | Operands      |
24363/// +---+---------------+
24364/// | 1 | Xmm, Xmm, Mem |
24365/// | 2 | Xmm, Xmm, Xmm |
24366/// | 3 | Ymm, Ymm, Mem |
24367/// | 4 | Ymm, Ymm, Ymm |
24368/// | 5 | Zmm, Zmm, Mem |
24369/// | 6 | Zmm, Zmm, Zmm |
24370/// +---+---------------+
24371/// ```
24372pub trait Vfmsub231phMaskzEmitter<A, B, C> {
24373    fn vfmsub231ph_maskz(&mut self, op0: A, op1: B, op2: C);
24374}
24375
24376impl<'a> Vfmsub231phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24377    fn vfmsub231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24378        self.emit(
24379            VFMSUB231PH128RRR_MASKZ,
24380            op0.as_operand(),
24381            op1.as_operand(),
24382            op2.as_operand(),
24383            &NOREG,
24384        );
24385    }
24386}
24387
24388impl<'a> Vfmsub231phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24389    fn vfmsub231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24390        self.emit(
24391            VFMSUB231PH128RRM_MASKZ,
24392            op0.as_operand(),
24393            op1.as_operand(),
24394            op2.as_operand(),
24395            &NOREG,
24396        );
24397    }
24398}
24399
24400impl<'a> Vfmsub231phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
24401    fn vfmsub231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
24402        self.emit(
24403            VFMSUB231PH256RRR_MASKZ,
24404            op0.as_operand(),
24405            op1.as_operand(),
24406            op2.as_operand(),
24407            &NOREG,
24408        );
24409    }
24410}
24411
24412impl<'a> Vfmsub231phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
24413    fn vfmsub231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
24414        self.emit(
24415            VFMSUB231PH256RRM_MASKZ,
24416            op0.as_operand(),
24417            op1.as_operand(),
24418            op2.as_operand(),
24419            &NOREG,
24420        );
24421    }
24422}
24423
24424impl<'a> Vfmsub231phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24425    fn vfmsub231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24426        self.emit(
24427            VFMSUB231PH512RRR_MASKZ,
24428            op0.as_operand(),
24429            op1.as_operand(),
24430            op2.as_operand(),
24431            &NOREG,
24432        );
24433    }
24434}
24435
24436impl<'a> Vfmsub231phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
24437    fn vfmsub231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
24438        self.emit(
24439            VFMSUB231PH512RRM_MASKZ,
24440            op0.as_operand(),
24441            op1.as_operand(),
24442            op2.as_operand(),
24443            &NOREG,
24444        );
24445    }
24446}
24447
24448/// `VFMSUB231PH_MASKZ_ER`.
24449///
24450/// Supported operand variants:
24451///
24452/// ```text
24453/// +---+---------------+
24454/// | # | Operands      |
24455/// +---+---------------+
24456/// | 1 | Zmm, Zmm, Zmm |
24457/// +---+---------------+
24458/// ```
24459pub trait Vfmsub231phMaskzErEmitter<A, B, C> {
24460    fn vfmsub231ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
24461}
24462
24463impl<'a> Vfmsub231phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24464    fn vfmsub231ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24465        self.emit(
24466            VFMSUB231PH512RRR_MASKZ_ER,
24467            op0.as_operand(),
24468            op1.as_operand(),
24469            op2.as_operand(),
24470            &NOREG,
24471        );
24472    }
24473}
24474
24475/// `VFMSUB231SH`.
24476///
24477/// Supported operand variants:
24478///
24479/// ```text
24480/// +---+---------------+
24481/// | # | Operands      |
24482/// +---+---------------+
24483/// | 1 | Xmm, Xmm, Mem |
24484/// | 2 | Xmm, Xmm, Xmm |
24485/// +---+---------------+
24486/// ```
24487pub trait Vfmsub231shEmitter<A, B, C> {
24488    fn vfmsub231sh(&mut self, op0: A, op1: B, op2: C);
24489}
24490
24491impl<'a> Vfmsub231shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24492    fn vfmsub231sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24493        self.emit(
24494            VFMSUB231SHRRR,
24495            op0.as_operand(),
24496            op1.as_operand(),
24497            op2.as_operand(),
24498            &NOREG,
24499        );
24500    }
24501}
24502
24503impl<'a> Vfmsub231shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24504    fn vfmsub231sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24505        self.emit(
24506            VFMSUB231SHRRM,
24507            op0.as_operand(),
24508            op1.as_operand(),
24509            op2.as_operand(),
24510            &NOREG,
24511        );
24512    }
24513}
24514
24515/// `VFMSUB231SH_ER`.
24516///
24517/// Supported operand variants:
24518///
24519/// ```text
24520/// +---+---------------+
24521/// | # | Operands      |
24522/// +---+---------------+
24523/// | 1 | Xmm, Xmm, Xmm |
24524/// +---+---------------+
24525/// ```
24526pub trait Vfmsub231shErEmitter<A, B, C> {
24527    fn vfmsub231sh_er(&mut self, op0: A, op1: B, op2: C);
24528}
24529
24530impl<'a> Vfmsub231shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24531    fn vfmsub231sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24532        self.emit(
24533            VFMSUB231SHRRR_ER,
24534            op0.as_operand(),
24535            op1.as_operand(),
24536            op2.as_operand(),
24537            &NOREG,
24538        );
24539    }
24540}
24541
24542/// `VFMSUB231SH_MASK`.
24543///
24544/// Supported operand variants:
24545///
24546/// ```text
24547/// +---+---------------+
24548/// | # | Operands      |
24549/// +---+---------------+
24550/// | 1 | Xmm, Xmm, Mem |
24551/// | 2 | Xmm, Xmm, Xmm |
24552/// +---+---------------+
24553/// ```
24554pub trait Vfmsub231shMaskEmitter<A, B, C> {
24555    fn vfmsub231sh_mask(&mut self, op0: A, op1: B, op2: C);
24556}
24557
24558impl<'a> Vfmsub231shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24559    fn vfmsub231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24560        self.emit(
24561            VFMSUB231SHRRR_MASK,
24562            op0.as_operand(),
24563            op1.as_operand(),
24564            op2.as_operand(),
24565            &NOREG,
24566        );
24567    }
24568}
24569
24570impl<'a> Vfmsub231shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24571    fn vfmsub231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24572        self.emit(
24573            VFMSUB231SHRRM_MASK,
24574            op0.as_operand(),
24575            op1.as_operand(),
24576            op2.as_operand(),
24577            &NOREG,
24578        );
24579    }
24580}
24581
24582/// `VFMSUB231SH_MASK_ER`.
24583///
24584/// Supported operand variants:
24585///
24586/// ```text
24587/// +---+---------------+
24588/// | # | Operands      |
24589/// +---+---------------+
24590/// | 1 | Xmm, Xmm, Xmm |
24591/// +---+---------------+
24592/// ```
24593pub trait Vfmsub231shMaskErEmitter<A, B, C> {
24594    fn vfmsub231sh_mask_er(&mut self, op0: A, op1: B, op2: C);
24595}
24596
24597impl<'a> Vfmsub231shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24598    fn vfmsub231sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24599        self.emit(
24600            VFMSUB231SHRRR_MASK_ER,
24601            op0.as_operand(),
24602            op1.as_operand(),
24603            op2.as_operand(),
24604            &NOREG,
24605        );
24606    }
24607}
24608
24609/// `VFMSUB231SH_MASKZ`.
24610///
24611/// Supported operand variants:
24612///
24613/// ```text
24614/// +---+---------------+
24615/// | # | Operands      |
24616/// +---+---------------+
24617/// | 1 | Xmm, Xmm, Mem |
24618/// | 2 | Xmm, Xmm, Xmm |
24619/// +---+---------------+
24620/// ```
24621pub trait Vfmsub231shMaskzEmitter<A, B, C> {
24622    fn vfmsub231sh_maskz(&mut self, op0: A, op1: B, op2: C);
24623}
24624
24625impl<'a> Vfmsub231shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24626    fn vfmsub231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24627        self.emit(
24628            VFMSUB231SHRRR_MASKZ,
24629            op0.as_operand(),
24630            op1.as_operand(),
24631            op2.as_operand(),
24632            &NOREG,
24633        );
24634    }
24635}
24636
24637impl<'a> Vfmsub231shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24638    fn vfmsub231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24639        self.emit(
24640            VFMSUB231SHRRM_MASKZ,
24641            op0.as_operand(),
24642            op1.as_operand(),
24643            op2.as_operand(),
24644            &NOREG,
24645        );
24646    }
24647}
24648
24649/// `VFMSUB231SH_MASKZ_ER`.
24650///
24651/// Supported operand variants:
24652///
24653/// ```text
24654/// +---+---------------+
24655/// | # | Operands      |
24656/// +---+---------------+
24657/// | 1 | Xmm, Xmm, Xmm |
24658/// +---+---------------+
24659/// ```
24660pub trait Vfmsub231shMaskzErEmitter<A, B, C> {
24661    fn vfmsub231sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
24662}
24663
24664impl<'a> Vfmsub231shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24665    fn vfmsub231sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24666        self.emit(
24667            VFMSUB231SHRRR_MASKZ_ER,
24668            op0.as_operand(),
24669            op1.as_operand(),
24670            op2.as_operand(),
24671            &NOREG,
24672        );
24673    }
24674}
24675
24676/// `VFMSUBADD132PH`.
24677///
24678/// Supported operand variants:
24679///
24680/// ```text
24681/// +---+---------------+
24682/// | # | Operands      |
24683/// +---+---------------+
24684/// | 1 | Xmm, Xmm, Mem |
24685/// | 2 | Xmm, Xmm, Xmm |
24686/// | 3 | Ymm, Ymm, Mem |
24687/// | 4 | Ymm, Ymm, Ymm |
24688/// | 5 | Zmm, Zmm, Mem |
24689/// | 6 | Zmm, Zmm, Zmm |
24690/// +---+---------------+
24691/// ```
24692pub trait Vfmsubadd132phEmitter<A, B, C> {
24693    fn vfmsubadd132ph(&mut self, op0: A, op1: B, op2: C);
24694}
24695
24696impl<'a> Vfmsubadd132phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24697    fn vfmsubadd132ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24698        self.emit(
24699            VFMSUBADD132PH128RRR,
24700            op0.as_operand(),
24701            op1.as_operand(),
24702            op2.as_operand(),
24703            &NOREG,
24704        );
24705    }
24706}
24707
24708impl<'a> Vfmsubadd132phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24709    fn vfmsubadd132ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24710        self.emit(
24711            VFMSUBADD132PH128RRM,
24712            op0.as_operand(),
24713            op1.as_operand(),
24714            op2.as_operand(),
24715            &NOREG,
24716        );
24717    }
24718}
24719
24720impl<'a> Vfmsubadd132phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
24721    fn vfmsubadd132ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
24722        self.emit(
24723            VFMSUBADD132PH256RRR,
24724            op0.as_operand(),
24725            op1.as_operand(),
24726            op2.as_operand(),
24727            &NOREG,
24728        );
24729    }
24730}
24731
24732impl<'a> Vfmsubadd132phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
24733    fn vfmsubadd132ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
24734        self.emit(
24735            VFMSUBADD132PH256RRM,
24736            op0.as_operand(),
24737            op1.as_operand(),
24738            op2.as_operand(),
24739            &NOREG,
24740        );
24741    }
24742}
24743
24744impl<'a> Vfmsubadd132phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24745    fn vfmsubadd132ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24746        self.emit(
24747            VFMSUBADD132PH512RRR,
24748            op0.as_operand(),
24749            op1.as_operand(),
24750            op2.as_operand(),
24751            &NOREG,
24752        );
24753    }
24754}
24755
24756impl<'a> Vfmsubadd132phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
24757    fn vfmsubadd132ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
24758        self.emit(
24759            VFMSUBADD132PH512RRM,
24760            op0.as_operand(),
24761            op1.as_operand(),
24762            op2.as_operand(),
24763            &NOREG,
24764        );
24765    }
24766}
24767
24768/// `VFMSUBADD132PH_ER`.
24769///
24770/// Supported operand variants:
24771///
24772/// ```text
24773/// +---+---------------+
24774/// | # | Operands      |
24775/// +---+---------------+
24776/// | 1 | Zmm, Zmm, Zmm |
24777/// +---+---------------+
24778/// ```
24779pub trait Vfmsubadd132phErEmitter<A, B, C> {
24780    fn vfmsubadd132ph_er(&mut self, op0: A, op1: B, op2: C);
24781}
24782
24783impl<'a> Vfmsubadd132phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24784    fn vfmsubadd132ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24785        self.emit(
24786            VFMSUBADD132PH512RRR_ER,
24787            op0.as_operand(),
24788            op1.as_operand(),
24789            op2.as_operand(),
24790            &NOREG,
24791        );
24792    }
24793}
24794
24795/// `VFMSUBADD132PH_MASK`.
24796///
24797/// Supported operand variants:
24798///
24799/// ```text
24800/// +---+---------------+
24801/// | # | Operands      |
24802/// +---+---------------+
24803/// | 1 | Xmm, Xmm, Mem |
24804/// | 2 | Xmm, Xmm, Xmm |
24805/// | 3 | Ymm, Ymm, Mem |
24806/// | 4 | Ymm, Ymm, Ymm |
24807/// | 5 | Zmm, Zmm, Mem |
24808/// | 6 | Zmm, Zmm, Zmm |
24809/// +---+---------------+
24810/// ```
24811pub trait Vfmsubadd132phMaskEmitter<A, B, C> {
24812    fn vfmsubadd132ph_mask(&mut self, op0: A, op1: B, op2: C);
24813}
24814
24815impl<'a> Vfmsubadd132phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24816    fn vfmsubadd132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24817        self.emit(
24818            VFMSUBADD132PH128RRR_MASK,
24819            op0.as_operand(),
24820            op1.as_operand(),
24821            op2.as_operand(),
24822            &NOREG,
24823        );
24824    }
24825}
24826
24827impl<'a> Vfmsubadd132phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24828    fn vfmsubadd132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24829        self.emit(
24830            VFMSUBADD132PH128RRM_MASK,
24831            op0.as_operand(),
24832            op1.as_operand(),
24833            op2.as_operand(),
24834            &NOREG,
24835        );
24836    }
24837}
24838
24839impl<'a> Vfmsubadd132phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
24840    fn vfmsubadd132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
24841        self.emit(
24842            VFMSUBADD132PH256RRR_MASK,
24843            op0.as_operand(),
24844            op1.as_operand(),
24845            op2.as_operand(),
24846            &NOREG,
24847        );
24848    }
24849}
24850
24851impl<'a> Vfmsubadd132phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
24852    fn vfmsubadd132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
24853        self.emit(
24854            VFMSUBADD132PH256RRM_MASK,
24855            op0.as_operand(),
24856            op1.as_operand(),
24857            op2.as_operand(),
24858            &NOREG,
24859        );
24860    }
24861}
24862
24863impl<'a> Vfmsubadd132phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24864    fn vfmsubadd132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24865        self.emit(
24866            VFMSUBADD132PH512RRR_MASK,
24867            op0.as_operand(),
24868            op1.as_operand(),
24869            op2.as_operand(),
24870            &NOREG,
24871        );
24872    }
24873}
24874
24875impl<'a> Vfmsubadd132phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
24876    fn vfmsubadd132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
24877        self.emit(
24878            VFMSUBADD132PH512RRM_MASK,
24879            op0.as_operand(),
24880            op1.as_operand(),
24881            op2.as_operand(),
24882            &NOREG,
24883        );
24884    }
24885}
24886
24887/// `VFMSUBADD132PH_MASK_ER`.
24888///
24889/// Supported operand variants:
24890///
24891/// ```text
24892/// +---+---------------+
24893/// | # | Operands      |
24894/// +---+---------------+
24895/// | 1 | Zmm, Zmm, Zmm |
24896/// +---+---------------+
24897/// ```
24898pub trait Vfmsubadd132phMaskErEmitter<A, B, C> {
24899    fn vfmsubadd132ph_mask_er(&mut self, op0: A, op1: B, op2: C);
24900}
24901
24902impl<'a> Vfmsubadd132phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24903    fn vfmsubadd132ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24904        self.emit(
24905            VFMSUBADD132PH512RRR_MASK_ER,
24906            op0.as_operand(),
24907            op1.as_operand(),
24908            op2.as_operand(),
24909            &NOREG,
24910        );
24911    }
24912}
24913
24914/// `VFMSUBADD132PH_MASKZ`.
24915///
24916/// Supported operand variants:
24917///
24918/// ```text
24919/// +---+---------------+
24920/// | # | Operands      |
24921/// +---+---------------+
24922/// | 1 | Xmm, Xmm, Mem |
24923/// | 2 | Xmm, Xmm, Xmm |
24924/// | 3 | Ymm, Ymm, Mem |
24925/// | 4 | Ymm, Ymm, Ymm |
24926/// | 5 | Zmm, Zmm, Mem |
24927/// | 6 | Zmm, Zmm, Zmm |
24928/// +---+---------------+
24929/// ```
24930pub trait Vfmsubadd132phMaskzEmitter<A, B, C> {
24931    fn vfmsubadd132ph_maskz(&mut self, op0: A, op1: B, op2: C);
24932}
24933
24934impl<'a> Vfmsubadd132phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
24935    fn vfmsubadd132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
24936        self.emit(
24937            VFMSUBADD132PH128RRR_MASKZ,
24938            op0.as_operand(),
24939            op1.as_operand(),
24940            op2.as_operand(),
24941            &NOREG,
24942        );
24943    }
24944}
24945
24946impl<'a> Vfmsubadd132phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
24947    fn vfmsubadd132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
24948        self.emit(
24949            VFMSUBADD132PH128RRM_MASKZ,
24950            op0.as_operand(),
24951            op1.as_operand(),
24952            op2.as_operand(),
24953            &NOREG,
24954        );
24955    }
24956}
24957
24958impl<'a> Vfmsubadd132phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
24959    fn vfmsubadd132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
24960        self.emit(
24961            VFMSUBADD132PH256RRR_MASKZ,
24962            op0.as_operand(),
24963            op1.as_operand(),
24964            op2.as_operand(),
24965            &NOREG,
24966        );
24967    }
24968}
24969
24970impl<'a> Vfmsubadd132phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
24971    fn vfmsubadd132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
24972        self.emit(
24973            VFMSUBADD132PH256RRM_MASKZ,
24974            op0.as_operand(),
24975            op1.as_operand(),
24976            op2.as_operand(),
24977            &NOREG,
24978        );
24979    }
24980}
24981
24982impl<'a> Vfmsubadd132phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
24983    fn vfmsubadd132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
24984        self.emit(
24985            VFMSUBADD132PH512RRR_MASKZ,
24986            op0.as_operand(),
24987            op1.as_operand(),
24988            op2.as_operand(),
24989            &NOREG,
24990        );
24991    }
24992}
24993
24994impl<'a> Vfmsubadd132phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
24995    fn vfmsubadd132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
24996        self.emit(
24997            VFMSUBADD132PH512RRM_MASKZ,
24998            op0.as_operand(),
24999            op1.as_operand(),
25000            op2.as_operand(),
25001            &NOREG,
25002        );
25003    }
25004}
25005
25006/// `VFMSUBADD132PH_MASKZ_ER`.
25007///
25008/// Supported operand variants:
25009///
25010/// ```text
25011/// +---+---------------+
25012/// | # | Operands      |
25013/// +---+---------------+
25014/// | 1 | Zmm, Zmm, Zmm |
25015/// +---+---------------+
25016/// ```
25017pub trait Vfmsubadd132phMaskzErEmitter<A, B, C> {
25018    fn vfmsubadd132ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
25019}
25020
25021impl<'a> Vfmsubadd132phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25022    fn vfmsubadd132ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25023        self.emit(
25024            VFMSUBADD132PH512RRR_MASKZ_ER,
25025            op0.as_operand(),
25026            op1.as_operand(),
25027            op2.as_operand(),
25028            &NOREG,
25029        );
25030    }
25031}
25032
25033/// `VFMSUBADD213PH`.
25034///
25035/// Supported operand variants:
25036///
25037/// ```text
25038/// +---+---------------+
25039/// | # | Operands      |
25040/// +---+---------------+
25041/// | 1 | Xmm, Xmm, Mem |
25042/// | 2 | Xmm, Xmm, Xmm |
25043/// | 3 | Ymm, Ymm, Mem |
25044/// | 4 | Ymm, Ymm, Ymm |
25045/// | 5 | Zmm, Zmm, Mem |
25046/// | 6 | Zmm, Zmm, Zmm |
25047/// +---+---------------+
25048/// ```
25049pub trait Vfmsubadd213phEmitter<A, B, C> {
25050    fn vfmsubadd213ph(&mut self, op0: A, op1: B, op2: C);
25051}
25052
25053impl<'a> Vfmsubadd213phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25054    fn vfmsubadd213ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25055        self.emit(
25056            VFMSUBADD213PH128RRR,
25057            op0.as_operand(),
25058            op1.as_operand(),
25059            op2.as_operand(),
25060            &NOREG,
25061        );
25062    }
25063}
25064
25065impl<'a> Vfmsubadd213phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25066    fn vfmsubadd213ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25067        self.emit(
25068            VFMSUBADD213PH128RRM,
25069            op0.as_operand(),
25070            op1.as_operand(),
25071            op2.as_operand(),
25072            &NOREG,
25073        );
25074    }
25075}
25076
25077impl<'a> Vfmsubadd213phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25078    fn vfmsubadd213ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25079        self.emit(
25080            VFMSUBADD213PH256RRR,
25081            op0.as_operand(),
25082            op1.as_operand(),
25083            op2.as_operand(),
25084            &NOREG,
25085        );
25086    }
25087}
25088
25089impl<'a> Vfmsubadd213phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25090    fn vfmsubadd213ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25091        self.emit(
25092            VFMSUBADD213PH256RRM,
25093            op0.as_operand(),
25094            op1.as_operand(),
25095            op2.as_operand(),
25096            &NOREG,
25097        );
25098    }
25099}
25100
25101impl<'a> Vfmsubadd213phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25102    fn vfmsubadd213ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25103        self.emit(
25104            VFMSUBADD213PH512RRR,
25105            op0.as_operand(),
25106            op1.as_operand(),
25107            op2.as_operand(),
25108            &NOREG,
25109        );
25110    }
25111}
25112
25113impl<'a> Vfmsubadd213phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25114    fn vfmsubadd213ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25115        self.emit(
25116            VFMSUBADD213PH512RRM,
25117            op0.as_operand(),
25118            op1.as_operand(),
25119            op2.as_operand(),
25120            &NOREG,
25121        );
25122    }
25123}
25124
25125/// `VFMSUBADD213PH_ER`.
25126///
25127/// Supported operand variants:
25128///
25129/// ```text
25130/// +---+---------------+
25131/// | # | Operands      |
25132/// +---+---------------+
25133/// | 1 | Zmm, Zmm, Zmm |
25134/// +---+---------------+
25135/// ```
25136pub trait Vfmsubadd213phErEmitter<A, B, C> {
25137    fn vfmsubadd213ph_er(&mut self, op0: A, op1: B, op2: C);
25138}
25139
25140impl<'a> Vfmsubadd213phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25141    fn vfmsubadd213ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25142        self.emit(
25143            VFMSUBADD213PH512RRR_ER,
25144            op0.as_operand(),
25145            op1.as_operand(),
25146            op2.as_operand(),
25147            &NOREG,
25148        );
25149    }
25150}
25151
25152/// `VFMSUBADD213PH_MASK`.
25153///
25154/// Supported operand variants:
25155///
25156/// ```text
25157/// +---+---------------+
25158/// | # | Operands      |
25159/// +---+---------------+
25160/// | 1 | Xmm, Xmm, Mem |
25161/// | 2 | Xmm, Xmm, Xmm |
25162/// | 3 | Ymm, Ymm, Mem |
25163/// | 4 | Ymm, Ymm, Ymm |
25164/// | 5 | Zmm, Zmm, Mem |
25165/// | 6 | Zmm, Zmm, Zmm |
25166/// +---+---------------+
25167/// ```
25168pub trait Vfmsubadd213phMaskEmitter<A, B, C> {
25169    fn vfmsubadd213ph_mask(&mut self, op0: A, op1: B, op2: C);
25170}
25171
25172impl<'a> Vfmsubadd213phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25173    fn vfmsubadd213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25174        self.emit(
25175            VFMSUBADD213PH128RRR_MASK,
25176            op0.as_operand(),
25177            op1.as_operand(),
25178            op2.as_operand(),
25179            &NOREG,
25180        );
25181    }
25182}
25183
25184impl<'a> Vfmsubadd213phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25185    fn vfmsubadd213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25186        self.emit(
25187            VFMSUBADD213PH128RRM_MASK,
25188            op0.as_operand(),
25189            op1.as_operand(),
25190            op2.as_operand(),
25191            &NOREG,
25192        );
25193    }
25194}
25195
25196impl<'a> Vfmsubadd213phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25197    fn vfmsubadd213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25198        self.emit(
25199            VFMSUBADD213PH256RRR_MASK,
25200            op0.as_operand(),
25201            op1.as_operand(),
25202            op2.as_operand(),
25203            &NOREG,
25204        );
25205    }
25206}
25207
25208impl<'a> Vfmsubadd213phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25209    fn vfmsubadd213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25210        self.emit(
25211            VFMSUBADD213PH256RRM_MASK,
25212            op0.as_operand(),
25213            op1.as_operand(),
25214            op2.as_operand(),
25215            &NOREG,
25216        );
25217    }
25218}
25219
25220impl<'a> Vfmsubadd213phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25221    fn vfmsubadd213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25222        self.emit(
25223            VFMSUBADD213PH512RRR_MASK,
25224            op0.as_operand(),
25225            op1.as_operand(),
25226            op2.as_operand(),
25227            &NOREG,
25228        );
25229    }
25230}
25231
25232impl<'a> Vfmsubadd213phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25233    fn vfmsubadd213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25234        self.emit(
25235            VFMSUBADD213PH512RRM_MASK,
25236            op0.as_operand(),
25237            op1.as_operand(),
25238            op2.as_operand(),
25239            &NOREG,
25240        );
25241    }
25242}
25243
25244/// `VFMSUBADD213PH_MASK_ER`.
25245///
25246/// Supported operand variants:
25247///
25248/// ```text
25249/// +---+---------------+
25250/// | # | Operands      |
25251/// +---+---------------+
25252/// | 1 | Zmm, Zmm, Zmm |
25253/// +---+---------------+
25254/// ```
25255pub trait Vfmsubadd213phMaskErEmitter<A, B, C> {
25256    fn vfmsubadd213ph_mask_er(&mut self, op0: A, op1: B, op2: C);
25257}
25258
25259impl<'a> Vfmsubadd213phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25260    fn vfmsubadd213ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25261        self.emit(
25262            VFMSUBADD213PH512RRR_MASK_ER,
25263            op0.as_operand(),
25264            op1.as_operand(),
25265            op2.as_operand(),
25266            &NOREG,
25267        );
25268    }
25269}
25270
25271/// `VFMSUBADD213PH_MASKZ`.
25272///
25273/// Supported operand variants:
25274///
25275/// ```text
25276/// +---+---------------+
25277/// | # | Operands      |
25278/// +---+---------------+
25279/// | 1 | Xmm, Xmm, Mem |
25280/// | 2 | Xmm, Xmm, Xmm |
25281/// | 3 | Ymm, Ymm, Mem |
25282/// | 4 | Ymm, Ymm, Ymm |
25283/// | 5 | Zmm, Zmm, Mem |
25284/// | 6 | Zmm, Zmm, Zmm |
25285/// +---+---------------+
25286/// ```
25287pub trait Vfmsubadd213phMaskzEmitter<A, B, C> {
25288    fn vfmsubadd213ph_maskz(&mut self, op0: A, op1: B, op2: C);
25289}
25290
25291impl<'a> Vfmsubadd213phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25292    fn vfmsubadd213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25293        self.emit(
25294            VFMSUBADD213PH128RRR_MASKZ,
25295            op0.as_operand(),
25296            op1.as_operand(),
25297            op2.as_operand(),
25298            &NOREG,
25299        );
25300    }
25301}
25302
25303impl<'a> Vfmsubadd213phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25304    fn vfmsubadd213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25305        self.emit(
25306            VFMSUBADD213PH128RRM_MASKZ,
25307            op0.as_operand(),
25308            op1.as_operand(),
25309            op2.as_operand(),
25310            &NOREG,
25311        );
25312    }
25313}
25314
25315impl<'a> Vfmsubadd213phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25316    fn vfmsubadd213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25317        self.emit(
25318            VFMSUBADD213PH256RRR_MASKZ,
25319            op0.as_operand(),
25320            op1.as_operand(),
25321            op2.as_operand(),
25322            &NOREG,
25323        );
25324    }
25325}
25326
25327impl<'a> Vfmsubadd213phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25328    fn vfmsubadd213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25329        self.emit(
25330            VFMSUBADD213PH256RRM_MASKZ,
25331            op0.as_operand(),
25332            op1.as_operand(),
25333            op2.as_operand(),
25334            &NOREG,
25335        );
25336    }
25337}
25338
25339impl<'a> Vfmsubadd213phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25340    fn vfmsubadd213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25341        self.emit(
25342            VFMSUBADD213PH512RRR_MASKZ,
25343            op0.as_operand(),
25344            op1.as_operand(),
25345            op2.as_operand(),
25346            &NOREG,
25347        );
25348    }
25349}
25350
25351impl<'a> Vfmsubadd213phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25352    fn vfmsubadd213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25353        self.emit(
25354            VFMSUBADD213PH512RRM_MASKZ,
25355            op0.as_operand(),
25356            op1.as_operand(),
25357            op2.as_operand(),
25358            &NOREG,
25359        );
25360    }
25361}
25362
25363/// `VFMSUBADD213PH_MASKZ_ER`.
25364///
25365/// Supported operand variants:
25366///
25367/// ```text
25368/// +---+---------------+
25369/// | # | Operands      |
25370/// +---+---------------+
25371/// | 1 | Zmm, Zmm, Zmm |
25372/// +---+---------------+
25373/// ```
25374pub trait Vfmsubadd213phMaskzErEmitter<A, B, C> {
25375    fn vfmsubadd213ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
25376}
25377
25378impl<'a> Vfmsubadd213phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25379    fn vfmsubadd213ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25380        self.emit(
25381            VFMSUBADD213PH512RRR_MASKZ_ER,
25382            op0.as_operand(),
25383            op1.as_operand(),
25384            op2.as_operand(),
25385            &NOREG,
25386        );
25387    }
25388}
25389
25390/// `VFMSUBADD231PH`.
25391///
25392/// Supported operand variants:
25393///
25394/// ```text
25395/// +---+---------------+
25396/// | # | Operands      |
25397/// +---+---------------+
25398/// | 1 | Xmm, Xmm, Mem |
25399/// | 2 | Xmm, Xmm, Xmm |
25400/// | 3 | Ymm, Ymm, Mem |
25401/// | 4 | Ymm, Ymm, Ymm |
25402/// | 5 | Zmm, Zmm, Mem |
25403/// | 6 | Zmm, Zmm, Zmm |
25404/// +---+---------------+
25405/// ```
25406pub trait Vfmsubadd231phEmitter<A, B, C> {
25407    fn vfmsubadd231ph(&mut self, op0: A, op1: B, op2: C);
25408}
25409
25410impl<'a> Vfmsubadd231phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25411    fn vfmsubadd231ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25412        self.emit(
25413            VFMSUBADD231PH128RRR,
25414            op0.as_operand(),
25415            op1.as_operand(),
25416            op2.as_operand(),
25417            &NOREG,
25418        );
25419    }
25420}
25421
25422impl<'a> Vfmsubadd231phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25423    fn vfmsubadd231ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25424        self.emit(
25425            VFMSUBADD231PH128RRM,
25426            op0.as_operand(),
25427            op1.as_operand(),
25428            op2.as_operand(),
25429            &NOREG,
25430        );
25431    }
25432}
25433
25434impl<'a> Vfmsubadd231phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25435    fn vfmsubadd231ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25436        self.emit(
25437            VFMSUBADD231PH256RRR,
25438            op0.as_operand(),
25439            op1.as_operand(),
25440            op2.as_operand(),
25441            &NOREG,
25442        );
25443    }
25444}
25445
25446impl<'a> Vfmsubadd231phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25447    fn vfmsubadd231ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25448        self.emit(
25449            VFMSUBADD231PH256RRM,
25450            op0.as_operand(),
25451            op1.as_operand(),
25452            op2.as_operand(),
25453            &NOREG,
25454        );
25455    }
25456}
25457
25458impl<'a> Vfmsubadd231phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25459    fn vfmsubadd231ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25460        self.emit(
25461            VFMSUBADD231PH512RRR,
25462            op0.as_operand(),
25463            op1.as_operand(),
25464            op2.as_operand(),
25465            &NOREG,
25466        );
25467    }
25468}
25469
25470impl<'a> Vfmsubadd231phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25471    fn vfmsubadd231ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25472        self.emit(
25473            VFMSUBADD231PH512RRM,
25474            op0.as_operand(),
25475            op1.as_operand(),
25476            op2.as_operand(),
25477            &NOREG,
25478        );
25479    }
25480}
25481
25482/// `VFMSUBADD231PH_ER`.
25483///
25484/// Supported operand variants:
25485///
25486/// ```text
25487/// +---+---------------+
25488/// | # | Operands      |
25489/// +---+---------------+
25490/// | 1 | Zmm, Zmm, Zmm |
25491/// +---+---------------+
25492/// ```
25493pub trait Vfmsubadd231phErEmitter<A, B, C> {
25494    fn vfmsubadd231ph_er(&mut self, op0: A, op1: B, op2: C);
25495}
25496
25497impl<'a> Vfmsubadd231phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25498    fn vfmsubadd231ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25499        self.emit(
25500            VFMSUBADD231PH512RRR_ER,
25501            op0.as_operand(),
25502            op1.as_operand(),
25503            op2.as_operand(),
25504            &NOREG,
25505        );
25506    }
25507}
25508
25509/// `VFMSUBADD231PH_MASK`.
25510///
25511/// Supported operand variants:
25512///
25513/// ```text
25514/// +---+---------------+
25515/// | # | Operands      |
25516/// +---+---------------+
25517/// | 1 | Xmm, Xmm, Mem |
25518/// | 2 | Xmm, Xmm, Xmm |
25519/// | 3 | Ymm, Ymm, Mem |
25520/// | 4 | Ymm, Ymm, Ymm |
25521/// | 5 | Zmm, Zmm, Mem |
25522/// | 6 | Zmm, Zmm, Zmm |
25523/// +---+---------------+
25524/// ```
25525pub trait Vfmsubadd231phMaskEmitter<A, B, C> {
25526    fn vfmsubadd231ph_mask(&mut self, op0: A, op1: B, op2: C);
25527}
25528
25529impl<'a> Vfmsubadd231phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25530    fn vfmsubadd231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25531        self.emit(
25532            VFMSUBADD231PH128RRR_MASK,
25533            op0.as_operand(),
25534            op1.as_operand(),
25535            op2.as_operand(),
25536            &NOREG,
25537        );
25538    }
25539}
25540
25541impl<'a> Vfmsubadd231phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25542    fn vfmsubadd231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25543        self.emit(
25544            VFMSUBADD231PH128RRM_MASK,
25545            op0.as_operand(),
25546            op1.as_operand(),
25547            op2.as_operand(),
25548            &NOREG,
25549        );
25550    }
25551}
25552
25553impl<'a> Vfmsubadd231phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25554    fn vfmsubadd231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25555        self.emit(
25556            VFMSUBADD231PH256RRR_MASK,
25557            op0.as_operand(),
25558            op1.as_operand(),
25559            op2.as_operand(),
25560            &NOREG,
25561        );
25562    }
25563}
25564
25565impl<'a> Vfmsubadd231phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25566    fn vfmsubadd231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25567        self.emit(
25568            VFMSUBADD231PH256RRM_MASK,
25569            op0.as_operand(),
25570            op1.as_operand(),
25571            op2.as_operand(),
25572            &NOREG,
25573        );
25574    }
25575}
25576
25577impl<'a> Vfmsubadd231phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25578    fn vfmsubadd231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25579        self.emit(
25580            VFMSUBADD231PH512RRR_MASK,
25581            op0.as_operand(),
25582            op1.as_operand(),
25583            op2.as_operand(),
25584            &NOREG,
25585        );
25586    }
25587}
25588
25589impl<'a> Vfmsubadd231phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25590    fn vfmsubadd231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25591        self.emit(
25592            VFMSUBADD231PH512RRM_MASK,
25593            op0.as_operand(),
25594            op1.as_operand(),
25595            op2.as_operand(),
25596            &NOREG,
25597        );
25598    }
25599}
25600
25601/// `VFMSUBADD231PH_MASK_ER`.
25602///
25603/// Supported operand variants:
25604///
25605/// ```text
25606/// +---+---------------+
25607/// | # | Operands      |
25608/// +---+---------------+
25609/// | 1 | Zmm, Zmm, Zmm |
25610/// +---+---------------+
25611/// ```
25612pub trait Vfmsubadd231phMaskErEmitter<A, B, C> {
25613    fn vfmsubadd231ph_mask_er(&mut self, op0: A, op1: B, op2: C);
25614}
25615
25616impl<'a> Vfmsubadd231phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25617    fn vfmsubadd231ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25618        self.emit(
25619            VFMSUBADD231PH512RRR_MASK_ER,
25620            op0.as_operand(),
25621            op1.as_operand(),
25622            op2.as_operand(),
25623            &NOREG,
25624        );
25625    }
25626}
25627
25628/// `VFMSUBADD231PH_MASKZ`.
25629///
25630/// Supported operand variants:
25631///
25632/// ```text
25633/// +---+---------------+
25634/// | # | Operands      |
25635/// +---+---------------+
25636/// | 1 | Xmm, Xmm, Mem |
25637/// | 2 | Xmm, Xmm, Xmm |
25638/// | 3 | Ymm, Ymm, Mem |
25639/// | 4 | Ymm, Ymm, Ymm |
25640/// | 5 | Zmm, Zmm, Mem |
25641/// | 6 | Zmm, Zmm, Zmm |
25642/// +---+---------------+
25643/// ```
25644pub trait Vfmsubadd231phMaskzEmitter<A, B, C> {
25645    fn vfmsubadd231ph_maskz(&mut self, op0: A, op1: B, op2: C);
25646}
25647
25648impl<'a> Vfmsubadd231phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25649    fn vfmsubadd231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25650        self.emit(
25651            VFMSUBADD231PH128RRR_MASKZ,
25652            op0.as_operand(),
25653            op1.as_operand(),
25654            op2.as_operand(),
25655            &NOREG,
25656        );
25657    }
25658}
25659
25660impl<'a> Vfmsubadd231phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25661    fn vfmsubadd231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25662        self.emit(
25663            VFMSUBADD231PH128RRM_MASKZ,
25664            op0.as_operand(),
25665            op1.as_operand(),
25666            op2.as_operand(),
25667            &NOREG,
25668        );
25669    }
25670}
25671
25672impl<'a> Vfmsubadd231phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25673    fn vfmsubadd231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25674        self.emit(
25675            VFMSUBADD231PH256RRR_MASKZ,
25676            op0.as_operand(),
25677            op1.as_operand(),
25678            op2.as_operand(),
25679            &NOREG,
25680        );
25681    }
25682}
25683
25684impl<'a> Vfmsubadd231phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25685    fn vfmsubadd231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25686        self.emit(
25687            VFMSUBADD231PH256RRM_MASKZ,
25688            op0.as_operand(),
25689            op1.as_operand(),
25690            op2.as_operand(),
25691            &NOREG,
25692        );
25693    }
25694}
25695
25696impl<'a> Vfmsubadd231phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25697    fn vfmsubadd231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25698        self.emit(
25699            VFMSUBADD231PH512RRR_MASKZ,
25700            op0.as_operand(),
25701            op1.as_operand(),
25702            op2.as_operand(),
25703            &NOREG,
25704        );
25705    }
25706}
25707
25708impl<'a> Vfmsubadd231phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25709    fn vfmsubadd231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25710        self.emit(
25711            VFMSUBADD231PH512RRM_MASKZ,
25712            op0.as_operand(),
25713            op1.as_operand(),
25714            op2.as_operand(),
25715            &NOREG,
25716        );
25717    }
25718}
25719
25720/// `VFMSUBADD231PH_MASKZ_ER`.
25721///
25722/// Supported operand variants:
25723///
25724/// ```text
25725/// +---+---------------+
25726/// | # | Operands      |
25727/// +---+---------------+
25728/// | 1 | Zmm, Zmm, Zmm |
25729/// +---+---------------+
25730/// ```
25731pub trait Vfmsubadd231phMaskzErEmitter<A, B, C> {
25732    fn vfmsubadd231ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
25733}
25734
25735impl<'a> Vfmsubadd231phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25736    fn vfmsubadd231ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25737        self.emit(
25738            VFMSUBADD231PH512RRR_MASKZ_ER,
25739            op0.as_operand(),
25740            op1.as_operand(),
25741            op2.as_operand(),
25742            &NOREG,
25743        );
25744    }
25745}
25746
25747/// `VFMULCPH`.
25748///
25749/// Supported operand variants:
25750///
25751/// ```text
25752/// +---+---------------+
25753/// | # | Operands      |
25754/// +---+---------------+
25755/// | 1 | Xmm, Xmm, Mem |
25756/// | 2 | Xmm, Xmm, Xmm |
25757/// | 3 | Ymm, Ymm, Mem |
25758/// | 4 | Ymm, Ymm, Ymm |
25759/// | 5 | Zmm, Zmm, Mem |
25760/// | 6 | Zmm, Zmm, Zmm |
25761/// +---+---------------+
25762/// ```
25763pub trait VfmulcphEmitter<A, B, C> {
25764    fn vfmulcph(&mut self, op0: A, op1: B, op2: C);
25765}
25766
25767impl<'a> VfmulcphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25768    fn vfmulcph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25769        self.emit(
25770            VFMULCPH128RRR,
25771            op0.as_operand(),
25772            op1.as_operand(),
25773            op2.as_operand(),
25774            &NOREG,
25775        );
25776    }
25777}
25778
25779impl<'a> VfmulcphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25780    fn vfmulcph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25781        self.emit(
25782            VFMULCPH128RRM,
25783            op0.as_operand(),
25784            op1.as_operand(),
25785            op2.as_operand(),
25786            &NOREG,
25787        );
25788    }
25789}
25790
25791impl<'a> VfmulcphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25792    fn vfmulcph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25793        self.emit(
25794            VFMULCPH256RRR,
25795            op0.as_operand(),
25796            op1.as_operand(),
25797            op2.as_operand(),
25798            &NOREG,
25799        );
25800    }
25801}
25802
25803impl<'a> VfmulcphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25804    fn vfmulcph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25805        self.emit(
25806            VFMULCPH256RRM,
25807            op0.as_operand(),
25808            op1.as_operand(),
25809            op2.as_operand(),
25810            &NOREG,
25811        );
25812    }
25813}
25814
25815impl<'a> VfmulcphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25816    fn vfmulcph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25817        self.emit(
25818            VFMULCPH512RRR,
25819            op0.as_operand(),
25820            op1.as_operand(),
25821            op2.as_operand(),
25822            &NOREG,
25823        );
25824    }
25825}
25826
25827impl<'a> VfmulcphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25828    fn vfmulcph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25829        self.emit(
25830            VFMULCPH512RRM,
25831            op0.as_operand(),
25832            op1.as_operand(),
25833            op2.as_operand(),
25834            &NOREG,
25835        );
25836    }
25837}
25838
25839/// `VFMULCPH_ER`.
25840///
25841/// Supported operand variants:
25842///
25843/// ```text
25844/// +---+---------------+
25845/// | # | Operands      |
25846/// +---+---------------+
25847/// | 1 | Zmm, Zmm, Zmm |
25848/// +---+---------------+
25849/// ```
25850pub trait VfmulcphErEmitter<A, B, C> {
25851    fn vfmulcph_er(&mut self, op0: A, op1: B, op2: C);
25852}
25853
25854impl<'a> VfmulcphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25855    fn vfmulcph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25856        self.emit(
25857            VFMULCPH512RRR_ER,
25858            op0.as_operand(),
25859            op1.as_operand(),
25860            op2.as_operand(),
25861            &NOREG,
25862        );
25863    }
25864}
25865
25866/// `VFMULCPH_MASK`.
25867///
25868/// Supported operand variants:
25869///
25870/// ```text
25871/// +---+---------------+
25872/// | # | Operands      |
25873/// +---+---------------+
25874/// | 1 | Xmm, Xmm, Mem |
25875/// | 2 | Xmm, Xmm, Xmm |
25876/// | 3 | Ymm, Ymm, Mem |
25877/// | 4 | Ymm, Ymm, Ymm |
25878/// | 5 | Zmm, Zmm, Mem |
25879/// | 6 | Zmm, Zmm, Zmm |
25880/// +---+---------------+
25881/// ```
25882pub trait VfmulcphMaskEmitter<A, B, C> {
25883    fn vfmulcph_mask(&mut self, op0: A, op1: B, op2: C);
25884}
25885
25886impl<'a> VfmulcphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
25887    fn vfmulcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
25888        self.emit(
25889            VFMULCPH128RRR_MASK,
25890            op0.as_operand(),
25891            op1.as_operand(),
25892            op2.as_operand(),
25893            &NOREG,
25894        );
25895    }
25896}
25897
25898impl<'a> VfmulcphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
25899    fn vfmulcph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
25900        self.emit(
25901            VFMULCPH128RRM_MASK,
25902            op0.as_operand(),
25903            op1.as_operand(),
25904            op2.as_operand(),
25905            &NOREG,
25906        );
25907    }
25908}
25909
25910impl<'a> VfmulcphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
25911    fn vfmulcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
25912        self.emit(
25913            VFMULCPH256RRR_MASK,
25914            op0.as_operand(),
25915            op1.as_operand(),
25916            op2.as_operand(),
25917            &NOREG,
25918        );
25919    }
25920}
25921
25922impl<'a> VfmulcphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
25923    fn vfmulcph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
25924        self.emit(
25925            VFMULCPH256RRM_MASK,
25926            op0.as_operand(),
25927            op1.as_operand(),
25928            op2.as_operand(),
25929            &NOREG,
25930        );
25931    }
25932}
25933
25934impl<'a> VfmulcphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25935    fn vfmulcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25936        self.emit(
25937            VFMULCPH512RRR_MASK,
25938            op0.as_operand(),
25939            op1.as_operand(),
25940            op2.as_operand(),
25941            &NOREG,
25942        );
25943    }
25944}
25945
25946impl<'a> VfmulcphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
25947    fn vfmulcph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
25948        self.emit(
25949            VFMULCPH512RRM_MASK,
25950            op0.as_operand(),
25951            op1.as_operand(),
25952            op2.as_operand(),
25953            &NOREG,
25954        );
25955    }
25956}
25957
25958/// `VFMULCPH_MASK_ER`.
25959///
25960/// Supported operand variants:
25961///
25962/// ```text
25963/// +---+---------------+
25964/// | # | Operands      |
25965/// +---+---------------+
25966/// | 1 | Zmm, Zmm, Zmm |
25967/// +---+---------------+
25968/// ```
25969pub trait VfmulcphMaskErEmitter<A, B, C> {
25970    fn vfmulcph_mask_er(&mut self, op0: A, op1: B, op2: C);
25971}
25972
25973impl<'a> VfmulcphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
25974    fn vfmulcph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
25975        self.emit(
25976            VFMULCPH512RRR_MASK_ER,
25977            op0.as_operand(),
25978            op1.as_operand(),
25979            op2.as_operand(),
25980            &NOREG,
25981        );
25982    }
25983}
25984
25985/// `VFMULCPH_MASKZ`.
25986///
25987/// Supported operand variants:
25988///
25989/// ```text
25990/// +---+---------------+
25991/// | # | Operands      |
25992/// +---+---------------+
25993/// | 1 | Xmm, Xmm, Mem |
25994/// | 2 | Xmm, Xmm, Xmm |
25995/// | 3 | Ymm, Ymm, Mem |
25996/// | 4 | Ymm, Ymm, Ymm |
25997/// | 5 | Zmm, Zmm, Mem |
25998/// | 6 | Zmm, Zmm, Zmm |
25999/// +---+---------------+
26000/// ```
26001pub trait VfmulcphMaskzEmitter<A, B, C> {
26002    fn vfmulcph_maskz(&mut self, op0: A, op1: B, op2: C);
26003}
26004
26005impl<'a> VfmulcphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26006    fn vfmulcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26007        self.emit(
26008            VFMULCPH128RRR_MASKZ,
26009            op0.as_operand(),
26010            op1.as_operand(),
26011            op2.as_operand(),
26012            &NOREG,
26013        );
26014    }
26015}
26016
26017impl<'a> VfmulcphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26018    fn vfmulcph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26019        self.emit(
26020            VFMULCPH128RRM_MASKZ,
26021            op0.as_operand(),
26022            op1.as_operand(),
26023            op2.as_operand(),
26024            &NOREG,
26025        );
26026    }
26027}
26028
26029impl<'a> VfmulcphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
26030    fn vfmulcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
26031        self.emit(
26032            VFMULCPH256RRR_MASKZ,
26033            op0.as_operand(),
26034            op1.as_operand(),
26035            op2.as_operand(),
26036            &NOREG,
26037        );
26038    }
26039}
26040
26041impl<'a> VfmulcphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
26042    fn vfmulcph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
26043        self.emit(
26044            VFMULCPH256RRM_MASKZ,
26045            op0.as_operand(),
26046            op1.as_operand(),
26047            op2.as_operand(),
26048            &NOREG,
26049        );
26050    }
26051}
26052
26053impl<'a> VfmulcphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26054    fn vfmulcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26055        self.emit(
26056            VFMULCPH512RRR_MASKZ,
26057            op0.as_operand(),
26058            op1.as_operand(),
26059            op2.as_operand(),
26060            &NOREG,
26061        );
26062    }
26063}
26064
26065impl<'a> VfmulcphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
26066    fn vfmulcph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
26067        self.emit(
26068            VFMULCPH512RRM_MASKZ,
26069            op0.as_operand(),
26070            op1.as_operand(),
26071            op2.as_operand(),
26072            &NOREG,
26073        );
26074    }
26075}
26076
26077/// `VFMULCPH_MASKZ_ER`.
26078///
26079/// Supported operand variants:
26080///
26081/// ```text
26082/// +---+---------------+
26083/// | # | Operands      |
26084/// +---+---------------+
26085/// | 1 | Zmm, Zmm, Zmm |
26086/// +---+---------------+
26087/// ```
26088pub trait VfmulcphMaskzErEmitter<A, B, C> {
26089    fn vfmulcph_maskz_er(&mut self, op0: A, op1: B, op2: C);
26090}
26091
26092impl<'a> VfmulcphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26093    fn vfmulcph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26094        self.emit(
26095            VFMULCPH512RRR_MASKZ_ER,
26096            op0.as_operand(),
26097            op1.as_operand(),
26098            op2.as_operand(),
26099            &NOREG,
26100        );
26101    }
26102}
26103
26104/// `VFMULCSH`.
26105///
26106/// Supported operand variants:
26107///
26108/// ```text
26109/// +---+---------------+
26110/// | # | Operands      |
26111/// +---+---------------+
26112/// | 1 | Xmm, Xmm, Mem |
26113/// | 2 | Xmm, Xmm, Xmm |
26114/// +---+---------------+
26115/// ```
26116pub trait VfmulcshEmitter<A, B, C> {
26117    fn vfmulcsh(&mut self, op0: A, op1: B, op2: C);
26118}
26119
26120impl<'a> VfmulcshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26121    fn vfmulcsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26122        self.emit(
26123            VFMULCSHRRR,
26124            op0.as_operand(),
26125            op1.as_operand(),
26126            op2.as_operand(),
26127            &NOREG,
26128        );
26129    }
26130}
26131
26132impl<'a> VfmulcshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26133    fn vfmulcsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26134        self.emit(
26135            VFMULCSHRRM,
26136            op0.as_operand(),
26137            op1.as_operand(),
26138            op2.as_operand(),
26139            &NOREG,
26140        );
26141    }
26142}
26143
26144/// `VFMULCSH_ER`.
26145///
26146/// Supported operand variants:
26147///
26148/// ```text
26149/// +---+---------------+
26150/// | # | Operands      |
26151/// +---+---------------+
26152/// | 1 | Xmm, Xmm, Xmm |
26153/// +---+---------------+
26154/// ```
26155pub trait VfmulcshErEmitter<A, B, C> {
26156    fn vfmulcsh_er(&mut self, op0: A, op1: B, op2: C);
26157}
26158
26159impl<'a> VfmulcshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26160    fn vfmulcsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26161        self.emit(
26162            VFMULCSHRRR_ER,
26163            op0.as_operand(),
26164            op1.as_operand(),
26165            op2.as_operand(),
26166            &NOREG,
26167        );
26168    }
26169}
26170
26171/// `VFMULCSH_MASK`.
26172///
26173/// Supported operand variants:
26174///
26175/// ```text
26176/// +---+---------------+
26177/// | # | Operands      |
26178/// +---+---------------+
26179/// | 1 | Xmm, Xmm, Mem |
26180/// | 2 | Xmm, Xmm, Xmm |
26181/// +---+---------------+
26182/// ```
26183pub trait VfmulcshMaskEmitter<A, B, C> {
26184    fn vfmulcsh_mask(&mut self, op0: A, op1: B, op2: C);
26185}
26186
26187impl<'a> VfmulcshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26188    fn vfmulcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26189        self.emit(
26190            VFMULCSHRRR_MASK,
26191            op0.as_operand(),
26192            op1.as_operand(),
26193            op2.as_operand(),
26194            &NOREG,
26195        );
26196    }
26197}
26198
26199impl<'a> VfmulcshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26200    fn vfmulcsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26201        self.emit(
26202            VFMULCSHRRM_MASK,
26203            op0.as_operand(),
26204            op1.as_operand(),
26205            op2.as_operand(),
26206            &NOREG,
26207        );
26208    }
26209}
26210
26211/// `VFMULCSH_MASK_ER`.
26212///
26213/// Supported operand variants:
26214///
26215/// ```text
26216/// +---+---------------+
26217/// | # | Operands      |
26218/// +---+---------------+
26219/// | 1 | Xmm, Xmm, Xmm |
26220/// +---+---------------+
26221/// ```
26222pub trait VfmulcshMaskErEmitter<A, B, C> {
26223    fn vfmulcsh_mask_er(&mut self, op0: A, op1: B, op2: C);
26224}
26225
26226impl<'a> VfmulcshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26227    fn vfmulcsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26228        self.emit(
26229            VFMULCSHRRR_MASK_ER,
26230            op0.as_operand(),
26231            op1.as_operand(),
26232            op2.as_operand(),
26233            &NOREG,
26234        );
26235    }
26236}
26237
26238/// `VFMULCSH_MASKZ`.
26239///
26240/// Supported operand variants:
26241///
26242/// ```text
26243/// +---+---------------+
26244/// | # | Operands      |
26245/// +---+---------------+
26246/// | 1 | Xmm, Xmm, Mem |
26247/// | 2 | Xmm, Xmm, Xmm |
26248/// +---+---------------+
26249/// ```
26250pub trait VfmulcshMaskzEmitter<A, B, C> {
26251    fn vfmulcsh_maskz(&mut self, op0: A, op1: B, op2: C);
26252}
26253
26254impl<'a> VfmulcshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26255    fn vfmulcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26256        self.emit(
26257            VFMULCSHRRR_MASKZ,
26258            op0.as_operand(),
26259            op1.as_operand(),
26260            op2.as_operand(),
26261            &NOREG,
26262        );
26263    }
26264}
26265
26266impl<'a> VfmulcshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26267    fn vfmulcsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26268        self.emit(
26269            VFMULCSHRRM_MASKZ,
26270            op0.as_operand(),
26271            op1.as_operand(),
26272            op2.as_operand(),
26273            &NOREG,
26274        );
26275    }
26276}
26277
26278/// `VFMULCSH_MASKZ_ER`.
26279///
26280/// Supported operand variants:
26281///
26282/// ```text
26283/// +---+---------------+
26284/// | # | Operands      |
26285/// +---+---------------+
26286/// | 1 | Xmm, Xmm, Xmm |
26287/// +---+---------------+
26288/// ```
26289pub trait VfmulcshMaskzErEmitter<A, B, C> {
26290    fn vfmulcsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
26291}
26292
26293impl<'a> VfmulcshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26294    fn vfmulcsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26295        self.emit(
26296            VFMULCSHRRR_MASKZ_ER,
26297            op0.as_operand(),
26298            op1.as_operand(),
26299            op2.as_operand(),
26300            &NOREG,
26301        );
26302    }
26303}
26304
26305/// `VFNMADD132PH`.
26306///
26307/// Supported operand variants:
26308///
26309/// ```text
26310/// +---+---------------+
26311/// | # | Operands      |
26312/// +---+---------------+
26313/// | 1 | Xmm, Xmm, Mem |
26314/// | 2 | Xmm, Xmm, Xmm |
26315/// | 3 | Ymm, Ymm, Mem |
26316/// | 4 | Ymm, Ymm, Ymm |
26317/// | 5 | Zmm, Zmm, Mem |
26318/// | 6 | Zmm, Zmm, Zmm |
26319/// +---+---------------+
26320/// ```
26321pub trait Vfnmadd132phEmitter<A, B, C> {
26322    fn vfnmadd132ph(&mut self, op0: A, op1: B, op2: C);
26323}
26324
26325impl<'a> Vfnmadd132phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26326    fn vfnmadd132ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26327        self.emit(
26328            VFNMADD132PH128RRR,
26329            op0.as_operand(),
26330            op1.as_operand(),
26331            op2.as_operand(),
26332            &NOREG,
26333        );
26334    }
26335}
26336
26337impl<'a> Vfnmadd132phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26338    fn vfnmadd132ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26339        self.emit(
26340            VFNMADD132PH128RRM,
26341            op0.as_operand(),
26342            op1.as_operand(),
26343            op2.as_operand(),
26344            &NOREG,
26345        );
26346    }
26347}
26348
26349impl<'a> Vfnmadd132phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
26350    fn vfnmadd132ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
26351        self.emit(
26352            VFNMADD132PH256RRR,
26353            op0.as_operand(),
26354            op1.as_operand(),
26355            op2.as_operand(),
26356            &NOREG,
26357        );
26358    }
26359}
26360
26361impl<'a> Vfnmadd132phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
26362    fn vfnmadd132ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
26363        self.emit(
26364            VFNMADD132PH256RRM,
26365            op0.as_operand(),
26366            op1.as_operand(),
26367            op2.as_operand(),
26368            &NOREG,
26369        );
26370    }
26371}
26372
26373impl<'a> Vfnmadd132phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26374    fn vfnmadd132ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26375        self.emit(
26376            VFNMADD132PH512RRR,
26377            op0.as_operand(),
26378            op1.as_operand(),
26379            op2.as_operand(),
26380            &NOREG,
26381        );
26382    }
26383}
26384
26385impl<'a> Vfnmadd132phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
26386    fn vfnmadd132ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
26387        self.emit(
26388            VFNMADD132PH512RRM,
26389            op0.as_operand(),
26390            op1.as_operand(),
26391            op2.as_operand(),
26392            &NOREG,
26393        );
26394    }
26395}
26396
26397/// `VFNMADD132PH_ER`.
26398///
26399/// Supported operand variants:
26400///
26401/// ```text
26402/// +---+---------------+
26403/// | # | Operands      |
26404/// +---+---------------+
26405/// | 1 | Zmm, Zmm, Zmm |
26406/// +---+---------------+
26407/// ```
26408pub trait Vfnmadd132phErEmitter<A, B, C> {
26409    fn vfnmadd132ph_er(&mut self, op0: A, op1: B, op2: C);
26410}
26411
26412impl<'a> Vfnmadd132phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26413    fn vfnmadd132ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26414        self.emit(
26415            VFNMADD132PH512RRR_ER,
26416            op0.as_operand(),
26417            op1.as_operand(),
26418            op2.as_operand(),
26419            &NOREG,
26420        );
26421    }
26422}
26423
26424/// `VFNMADD132PH_MASK`.
26425///
26426/// Supported operand variants:
26427///
26428/// ```text
26429/// +---+---------------+
26430/// | # | Operands      |
26431/// +---+---------------+
26432/// | 1 | Xmm, Xmm, Mem |
26433/// | 2 | Xmm, Xmm, Xmm |
26434/// | 3 | Ymm, Ymm, Mem |
26435/// | 4 | Ymm, Ymm, Ymm |
26436/// | 5 | Zmm, Zmm, Mem |
26437/// | 6 | Zmm, Zmm, Zmm |
26438/// +---+---------------+
26439/// ```
26440pub trait Vfnmadd132phMaskEmitter<A, B, C> {
26441    fn vfnmadd132ph_mask(&mut self, op0: A, op1: B, op2: C);
26442}
26443
26444impl<'a> Vfnmadd132phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26445    fn vfnmadd132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26446        self.emit(
26447            VFNMADD132PH128RRR_MASK,
26448            op0.as_operand(),
26449            op1.as_operand(),
26450            op2.as_operand(),
26451            &NOREG,
26452        );
26453    }
26454}
26455
26456impl<'a> Vfnmadd132phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26457    fn vfnmadd132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26458        self.emit(
26459            VFNMADD132PH128RRM_MASK,
26460            op0.as_operand(),
26461            op1.as_operand(),
26462            op2.as_operand(),
26463            &NOREG,
26464        );
26465    }
26466}
26467
26468impl<'a> Vfnmadd132phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
26469    fn vfnmadd132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
26470        self.emit(
26471            VFNMADD132PH256RRR_MASK,
26472            op0.as_operand(),
26473            op1.as_operand(),
26474            op2.as_operand(),
26475            &NOREG,
26476        );
26477    }
26478}
26479
26480impl<'a> Vfnmadd132phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
26481    fn vfnmadd132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
26482        self.emit(
26483            VFNMADD132PH256RRM_MASK,
26484            op0.as_operand(),
26485            op1.as_operand(),
26486            op2.as_operand(),
26487            &NOREG,
26488        );
26489    }
26490}
26491
26492impl<'a> Vfnmadd132phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26493    fn vfnmadd132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26494        self.emit(
26495            VFNMADD132PH512RRR_MASK,
26496            op0.as_operand(),
26497            op1.as_operand(),
26498            op2.as_operand(),
26499            &NOREG,
26500        );
26501    }
26502}
26503
26504impl<'a> Vfnmadd132phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
26505    fn vfnmadd132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
26506        self.emit(
26507            VFNMADD132PH512RRM_MASK,
26508            op0.as_operand(),
26509            op1.as_operand(),
26510            op2.as_operand(),
26511            &NOREG,
26512        );
26513    }
26514}
26515
26516/// `VFNMADD132PH_MASK_ER`.
26517///
26518/// Supported operand variants:
26519///
26520/// ```text
26521/// +---+---------------+
26522/// | # | Operands      |
26523/// +---+---------------+
26524/// | 1 | Zmm, Zmm, Zmm |
26525/// +---+---------------+
26526/// ```
26527pub trait Vfnmadd132phMaskErEmitter<A, B, C> {
26528    fn vfnmadd132ph_mask_er(&mut self, op0: A, op1: B, op2: C);
26529}
26530
26531impl<'a> Vfnmadd132phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26532    fn vfnmadd132ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26533        self.emit(
26534            VFNMADD132PH512RRR_MASK_ER,
26535            op0.as_operand(),
26536            op1.as_operand(),
26537            op2.as_operand(),
26538            &NOREG,
26539        );
26540    }
26541}
26542
26543/// `VFNMADD132PH_MASKZ`.
26544///
26545/// Supported operand variants:
26546///
26547/// ```text
26548/// +---+---------------+
26549/// | # | Operands      |
26550/// +---+---------------+
26551/// | 1 | Xmm, Xmm, Mem |
26552/// | 2 | Xmm, Xmm, Xmm |
26553/// | 3 | Ymm, Ymm, Mem |
26554/// | 4 | Ymm, Ymm, Ymm |
26555/// | 5 | Zmm, Zmm, Mem |
26556/// | 6 | Zmm, Zmm, Zmm |
26557/// +---+---------------+
26558/// ```
26559pub trait Vfnmadd132phMaskzEmitter<A, B, C> {
26560    fn vfnmadd132ph_maskz(&mut self, op0: A, op1: B, op2: C);
26561}
26562
26563impl<'a> Vfnmadd132phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26564    fn vfnmadd132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26565        self.emit(
26566            VFNMADD132PH128RRR_MASKZ,
26567            op0.as_operand(),
26568            op1.as_operand(),
26569            op2.as_operand(),
26570            &NOREG,
26571        );
26572    }
26573}
26574
26575impl<'a> Vfnmadd132phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26576    fn vfnmadd132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26577        self.emit(
26578            VFNMADD132PH128RRM_MASKZ,
26579            op0.as_operand(),
26580            op1.as_operand(),
26581            op2.as_operand(),
26582            &NOREG,
26583        );
26584    }
26585}
26586
26587impl<'a> Vfnmadd132phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
26588    fn vfnmadd132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
26589        self.emit(
26590            VFNMADD132PH256RRR_MASKZ,
26591            op0.as_operand(),
26592            op1.as_operand(),
26593            op2.as_operand(),
26594            &NOREG,
26595        );
26596    }
26597}
26598
26599impl<'a> Vfnmadd132phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
26600    fn vfnmadd132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
26601        self.emit(
26602            VFNMADD132PH256RRM_MASKZ,
26603            op0.as_operand(),
26604            op1.as_operand(),
26605            op2.as_operand(),
26606            &NOREG,
26607        );
26608    }
26609}
26610
26611impl<'a> Vfnmadd132phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26612    fn vfnmadd132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26613        self.emit(
26614            VFNMADD132PH512RRR_MASKZ,
26615            op0.as_operand(),
26616            op1.as_operand(),
26617            op2.as_operand(),
26618            &NOREG,
26619        );
26620    }
26621}
26622
26623impl<'a> Vfnmadd132phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
26624    fn vfnmadd132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
26625        self.emit(
26626            VFNMADD132PH512RRM_MASKZ,
26627            op0.as_operand(),
26628            op1.as_operand(),
26629            op2.as_operand(),
26630            &NOREG,
26631        );
26632    }
26633}
26634
26635/// `VFNMADD132PH_MASKZ_ER`.
26636///
26637/// Supported operand variants:
26638///
26639/// ```text
26640/// +---+---------------+
26641/// | # | Operands      |
26642/// +---+---------------+
26643/// | 1 | Zmm, Zmm, Zmm |
26644/// +---+---------------+
26645/// ```
26646pub trait Vfnmadd132phMaskzErEmitter<A, B, C> {
26647    fn vfnmadd132ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
26648}
26649
26650impl<'a> Vfnmadd132phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26651    fn vfnmadd132ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26652        self.emit(
26653            VFNMADD132PH512RRR_MASKZ_ER,
26654            op0.as_operand(),
26655            op1.as_operand(),
26656            op2.as_operand(),
26657            &NOREG,
26658        );
26659    }
26660}
26661
26662/// `VFNMADD132SH`.
26663///
26664/// Supported operand variants:
26665///
26666/// ```text
26667/// +---+---------------+
26668/// | # | Operands      |
26669/// +---+---------------+
26670/// | 1 | Xmm, Xmm, Mem |
26671/// | 2 | Xmm, Xmm, Xmm |
26672/// +---+---------------+
26673/// ```
26674pub trait Vfnmadd132shEmitter<A, B, C> {
26675    fn vfnmadd132sh(&mut self, op0: A, op1: B, op2: C);
26676}
26677
26678impl<'a> Vfnmadd132shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26679    fn vfnmadd132sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26680        self.emit(
26681            VFNMADD132SHRRR,
26682            op0.as_operand(),
26683            op1.as_operand(),
26684            op2.as_operand(),
26685            &NOREG,
26686        );
26687    }
26688}
26689
26690impl<'a> Vfnmadd132shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26691    fn vfnmadd132sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26692        self.emit(
26693            VFNMADD132SHRRM,
26694            op0.as_operand(),
26695            op1.as_operand(),
26696            op2.as_operand(),
26697            &NOREG,
26698        );
26699    }
26700}
26701
26702/// `VFNMADD132SH_ER`.
26703///
26704/// Supported operand variants:
26705///
26706/// ```text
26707/// +---+---------------+
26708/// | # | Operands      |
26709/// +---+---------------+
26710/// | 1 | Xmm, Xmm, Xmm |
26711/// +---+---------------+
26712/// ```
26713pub trait Vfnmadd132shErEmitter<A, B, C> {
26714    fn vfnmadd132sh_er(&mut self, op0: A, op1: B, op2: C);
26715}
26716
26717impl<'a> Vfnmadd132shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26718    fn vfnmadd132sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26719        self.emit(
26720            VFNMADD132SHRRR_ER,
26721            op0.as_operand(),
26722            op1.as_operand(),
26723            op2.as_operand(),
26724            &NOREG,
26725        );
26726    }
26727}
26728
26729/// `VFNMADD132SH_MASK`.
26730///
26731/// Supported operand variants:
26732///
26733/// ```text
26734/// +---+---------------+
26735/// | # | Operands      |
26736/// +---+---------------+
26737/// | 1 | Xmm, Xmm, Mem |
26738/// | 2 | Xmm, Xmm, Xmm |
26739/// +---+---------------+
26740/// ```
26741pub trait Vfnmadd132shMaskEmitter<A, B, C> {
26742    fn vfnmadd132sh_mask(&mut self, op0: A, op1: B, op2: C);
26743}
26744
26745impl<'a> Vfnmadd132shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26746    fn vfnmadd132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26747        self.emit(
26748            VFNMADD132SHRRR_MASK,
26749            op0.as_operand(),
26750            op1.as_operand(),
26751            op2.as_operand(),
26752            &NOREG,
26753        );
26754    }
26755}
26756
26757impl<'a> Vfnmadd132shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26758    fn vfnmadd132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26759        self.emit(
26760            VFNMADD132SHRRM_MASK,
26761            op0.as_operand(),
26762            op1.as_operand(),
26763            op2.as_operand(),
26764            &NOREG,
26765        );
26766    }
26767}
26768
26769/// `VFNMADD132SH_MASK_ER`.
26770///
26771/// Supported operand variants:
26772///
26773/// ```text
26774/// +---+---------------+
26775/// | # | Operands      |
26776/// +---+---------------+
26777/// | 1 | Xmm, Xmm, Xmm |
26778/// +---+---------------+
26779/// ```
26780pub trait Vfnmadd132shMaskErEmitter<A, B, C> {
26781    fn vfnmadd132sh_mask_er(&mut self, op0: A, op1: B, op2: C);
26782}
26783
26784impl<'a> Vfnmadd132shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26785    fn vfnmadd132sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26786        self.emit(
26787            VFNMADD132SHRRR_MASK_ER,
26788            op0.as_operand(),
26789            op1.as_operand(),
26790            op2.as_operand(),
26791            &NOREG,
26792        );
26793    }
26794}
26795
26796/// `VFNMADD132SH_MASKZ`.
26797///
26798/// Supported operand variants:
26799///
26800/// ```text
26801/// +---+---------------+
26802/// | # | Operands      |
26803/// +---+---------------+
26804/// | 1 | Xmm, Xmm, Mem |
26805/// | 2 | Xmm, Xmm, Xmm |
26806/// +---+---------------+
26807/// ```
26808pub trait Vfnmadd132shMaskzEmitter<A, B, C> {
26809    fn vfnmadd132sh_maskz(&mut self, op0: A, op1: B, op2: C);
26810}
26811
26812impl<'a> Vfnmadd132shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26813    fn vfnmadd132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26814        self.emit(
26815            VFNMADD132SHRRR_MASKZ,
26816            op0.as_operand(),
26817            op1.as_operand(),
26818            op2.as_operand(),
26819            &NOREG,
26820        );
26821    }
26822}
26823
26824impl<'a> Vfnmadd132shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26825    fn vfnmadd132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26826        self.emit(
26827            VFNMADD132SHRRM_MASKZ,
26828            op0.as_operand(),
26829            op1.as_operand(),
26830            op2.as_operand(),
26831            &NOREG,
26832        );
26833    }
26834}
26835
26836/// `VFNMADD132SH_MASKZ_ER`.
26837///
26838/// Supported operand variants:
26839///
26840/// ```text
26841/// +---+---------------+
26842/// | # | Operands      |
26843/// +---+---------------+
26844/// | 1 | Xmm, Xmm, Xmm |
26845/// +---+---------------+
26846/// ```
26847pub trait Vfnmadd132shMaskzErEmitter<A, B, C> {
26848    fn vfnmadd132sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
26849}
26850
26851impl<'a> Vfnmadd132shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26852    fn vfnmadd132sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26853        self.emit(
26854            VFNMADD132SHRRR_MASKZ_ER,
26855            op0.as_operand(),
26856            op1.as_operand(),
26857            op2.as_operand(),
26858            &NOREG,
26859        );
26860    }
26861}
26862
26863/// `VFNMADD213PH`.
26864///
26865/// Supported operand variants:
26866///
26867/// ```text
26868/// +---+---------------+
26869/// | # | Operands      |
26870/// +---+---------------+
26871/// | 1 | Xmm, Xmm, Mem |
26872/// | 2 | Xmm, Xmm, Xmm |
26873/// | 3 | Ymm, Ymm, Mem |
26874/// | 4 | Ymm, Ymm, Ymm |
26875/// | 5 | Zmm, Zmm, Mem |
26876/// | 6 | Zmm, Zmm, Zmm |
26877/// +---+---------------+
26878/// ```
26879pub trait Vfnmadd213phEmitter<A, B, C> {
26880    fn vfnmadd213ph(&mut self, op0: A, op1: B, op2: C);
26881}
26882
26883impl<'a> Vfnmadd213phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
26884    fn vfnmadd213ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
26885        self.emit(
26886            VFNMADD213PH128RRR,
26887            op0.as_operand(),
26888            op1.as_operand(),
26889            op2.as_operand(),
26890            &NOREG,
26891        );
26892    }
26893}
26894
26895impl<'a> Vfnmadd213phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
26896    fn vfnmadd213ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
26897        self.emit(
26898            VFNMADD213PH128RRM,
26899            op0.as_operand(),
26900            op1.as_operand(),
26901            op2.as_operand(),
26902            &NOREG,
26903        );
26904    }
26905}
26906
26907impl<'a> Vfnmadd213phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
26908    fn vfnmadd213ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
26909        self.emit(
26910            VFNMADD213PH256RRR,
26911            op0.as_operand(),
26912            op1.as_operand(),
26913            op2.as_operand(),
26914            &NOREG,
26915        );
26916    }
26917}
26918
26919impl<'a> Vfnmadd213phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
26920    fn vfnmadd213ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
26921        self.emit(
26922            VFNMADD213PH256RRM,
26923            op0.as_operand(),
26924            op1.as_operand(),
26925            op2.as_operand(),
26926            &NOREG,
26927        );
26928    }
26929}
26930
26931impl<'a> Vfnmadd213phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26932    fn vfnmadd213ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26933        self.emit(
26934            VFNMADD213PH512RRR,
26935            op0.as_operand(),
26936            op1.as_operand(),
26937            op2.as_operand(),
26938            &NOREG,
26939        );
26940    }
26941}
26942
26943impl<'a> Vfnmadd213phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
26944    fn vfnmadd213ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
26945        self.emit(
26946            VFNMADD213PH512RRM,
26947            op0.as_operand(),
26948            op1.as_operand(),
26949            op2.as_operand(),
26950            &NOREG,
26951        );
26952    }
26953}
26954
26955/// `VFNMADD213PH_ER`.
26956///
26957/// Supported operand variants:
26958///
26959/// ```text
26960/// +---+---------------+
26961/// | # | Operands      |
26962/// +---+---------------+
26963/// | 1 | Zmm, Zmm, Zmm |
26964/// +---+---------------+
26965/// ```
26966pub trait Vfnmadd213phErEmitter<A, B, C> {
26967    fn vfnmadd213ph_er(&mut self, op0: A, op1: B, op2: C);
26968}
26969
26970impl<'a> Vfnmadd213phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
26971    fn vfnmadd213ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
26972        self.emit(
26973            VFNMADD213PH512RRR_ER,
26974            op0.as_operand(),
26975            op1.as_operand(),
26976            op2.as_operand(),
26977            &NOREG,
26978        );
26979    }
26980}
26981
26982/// `VFNMADD213PH_MASK`.
26983///
26984/// Supported operand variants:
26985///
26986/// ```text
26987/// +---+---------------+
26988/// | # | Operands      |
26989/// +---+---------------+
26990/// | 1 | Xmm, Xmm, Mem |
26991/// | 2 | Xmm, Xmm, Xmm |
26992/// | 3 | Ymm, Ymm, Mem |
26993/// | 4 | Ymm, Ymm, Ymm |
26994/// | 5 | Zmm, Zmm, Mem |
26995/// | 6 | Zmm, Zmm, Zmm |
26996/// +---+---------------+
26997/// ```
26998pub trait Vfnmadd213phMaskEmitter<A, B, C> {
26999    fn vfnmadd213ph_mask(&mut self, op0: A, op1: B, op2: C);
27000}
27001
27002impl<'a> Vfnmadd213phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27003    fn vfnmadd213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27004        self.emit(
27005            VFNMADD213PH128RRR_MASK,
27006            op0.as_operand(),
27007            op1.as_operand(),
27008            op2.as_operand(),
27009            &NOREG,
27010        );
27011    }
27012}
27013
27014impl<'a> Vfnmadd213phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27015    fn vfnmadd213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27016        self.emit(
27017            VFNMADD213PH128RRM_MASK,
27018            op0.as_operand(),
27019            op1.as_operand(),
27020            op2.as_operand(),
27021            &NOREG,
27022        );
27023    }
27024}
27025
27026impl<'a> Vfnmadd213phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
27027    fn vfnmadd213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
27028        self.emit(
27029            VFNMADD213PH256RRR_MASK,
27030            op0.as_operand(),
27031            op1.as_operand(),
27032            op2.as_operand(),
27033            &NOREG,
27034        );
27035    }
27036}
27037
27038impl<'a> Vfnmadd213phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
27039    fn vfnmadd213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
27040        self.emit(
27041            VFNMADD213PH256RRM_MASK,
27042            op0.as_operand(),
27043            op1.as_operand(),
27044            op2.as_operand(),
27045            &NOREG,
27046        );
27047    }
27048}
27049
27050impl<'a> Vfnmadd213phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27051    fn vfnmadd213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27052        self.emit(
27053            VFNMADD213PH512RRR_MASK,
27054            op0.as_operand(),
27055            op1.as_operand(),
27056            op2.as_operand(),
27057            &NOREG,
27058        );
27059    }
27060}
27061
27062impl<'a> Vfnmadd213phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
27063    fn vfnmadd213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
27064        self.emit(
27065            VFNMADD213PH512RRM_MASK,
27066            op0.as_operand(),
27067            op1.as_operand(),
27068            op2.as_operand(),
27069            &NOREG,
27070        );
27071    }
27072}
27073
27074/// `VFNMADD213PH_MASK_ER`.
27075///
27076/// Supported operand variants:
27077///
27078/// ```text
27079/// +---+---------------+
27080/// | # | Operands      |
27081/// +---+---------------+
27082/// | 1 | Zmm, Zmm, Zmm |
27083/// +---+---------------+
27084/// ```
27085pub trait Vfnmadd213phMaskErEmitter<A, B, C> {
27086    fn vfnmadd213ph_mask_er(&mut self, op0: A, op1: B, op2: C);
27087}
27088
27089impl<'a> Vfnmadd213phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27090    fn vfnmadd213ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27091        self.emit(
27092            VFNMADD213PH512RRR_MASK_ER,
27093            op0.as_operand(),
27094            op1.as_operand(),
27095            op2.as_operand(),
27096            &NOREG,
27097        );
27098    }
27099}
27100
27101/// `VFNMADD213PH_MASKZ`.
27102///
27103/// Supported operand variants:
27104///
27105/// ```text
27106/// +---+---------------+
27107/// | # | Operands      |
27108/// +---+---------------+
27109/// | 1 | Xmm, Xmm, Mem |
27110/// | 2 | Xmm, Xmm, Xmm |
27111/// | 3 | Ymm, Ymm, Mem |
27112/// | 4 | Ymm, Ymm, Ymm |
27113/// | 5 | Zmm, Zmm, Mem |
27114/// | 6 | Zmm, Zmm, Zmm |
27115/// +---+---------------+
27116/// ```
27117pub trait Vfnmadd213phMaskzEmitter<A, B, C> {
27118    fn vfnmadd213ph_maskz(&mut self, op0: A, op1: B, op2: C);
27119}
27120
27121impl<'a> Vfnmadd213phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27122    fn vfnmadd213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27123        self.emit(
27124            VFNMADD213PH128RRR_MASKZ,
27125            op0.as_operand(),
27126            op1.as_operand(),
27127            op2.as_operand(),
27128            &NOREG,
27129        );
27130    }
27131}
27132
27133impl<'a> Vfnmadd213phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27134    fn vfnmadd213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27135        self.emit(
27136            VFNMADD213PH128RRM_MASKZ,
27137            op0.as_operand(),
27138            op1.as_operand(),
27139            op2.as_operand(),
27140            &NOREG,
27141        );
27142    }
27143}
27144
27145impl<'a> Vfnmadd213phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
27146    fn vfnmadd213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
27147        self.emit(
27148            VFNMADD213PH256RRR_MASKZ,
27149            op0.as_operand(),
27150            op1.as_operand(),
27151            op2.as_operand(),
27152            &NOREG,
27153        );
27154    }
27155}
27156
27157impl<'a> Vfnmadd213phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
27158    fn vfnmadd213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
27159        self.emit(
27160            VFNMADD213PH256RRM_MASKZ,
27161            op0.as_operand(),
27162            op1.as_operand(),
27163            op2.as_operand(),
27164            &NOREG,
27165        );
27166    }
27167}
27168
27169impl<'a> Vfnmadd213phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27170    fn vfnmadd213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27171        self.emit(
27172            VFNMADD213PH512RRR_MASKZ,
27173            op0.as_operand(),
27174            op1.as_operand(),
27175            op2.as_operand(),
27176            &NOREG,
27177        );
27178    }
27179}
27180
27181impl<'a> Vfnmadd213phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
27182    fn vfnmadd213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
27183        self.emit(
27184            VFNMADD213PH512RRM_MASKZ,
27185            op0.as_operand(),
27186            op1.as_operand(),
27187            op2.as_operand(),
27188            &NOREG,
27189        );
27190    }
27191}
27192
27193/// `VFNMADD213PH_MASKZ_ER`.
27194///
27195/// Supported operand variants:
27196///
27197/// ```text
27198/// +---+---------------+
27199/// | # | Operands      |
27200/// +---+---------------+
27201/// | 1 | Zmm, Zmm, Zmm |
27202/// +---+---------------+
27203/// ```
27204pub trait Vfnmadd213phMaskzErEmitter<A, B, C> {
27205    fn vfnmadd213ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
27206}
27207
27208impl<'a> Vfnmadd213phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27209    fn vfnmadd213ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27210        self.emit(
27211            VFNMADD213PH512RRR_MASKZ_ER,
27212            op0.as_operand(),
27213            op1.as_operand(),
27214            op2.as_operand(),
27215            &NOREG,
27216        );
27217    }
27218}
27219
27220/// `VFNMADD213SH`.
27221///
27222/// Supported operand variants:
27223///
27224/// ```text
27225/// +---+---------------+
27226/// | # | Operands      |
27227/// +---+---------------+
27228/// | 1 | Xmm, Xmm, Mem |
27229/// | 2 | Xmm, Xmm, Xmm |
27230/// +---+---------------+
27231/// ```
27232pub trait Vfnmadd213shEmitter<A, B, C> {
27233    fn vfnmadd213sh(&mut self, op0: A, op1: B, op2: C);
27234}
27235
27236impl<'a> Vfnmadd213shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27237    fn vfnmadd213sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27238        self.emit(
27239            VFNMADD213SHRRR,
27240            op0.as_operand(),
27241            op1.as_operand(),
27242            op2.as_operand(),
27243            &NOREG,
27244        );
27245    }
27246}
27247
27248impl<'a> Vfnmadd213shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27249    fn vfnmadd213sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27250        self.emit(
27251            VFNMADD213SHRRM,
27252            op0.as_operand(),
27253            op1.as_operand(),
27254            op2.as_operand(),
27255            &NOREG,
27256        );
27257    }
27258}
27259
27260/// `VFNMADD213SH_ER`.
27261///
27262/// Supported operand variants:
27263///
27264/// ```text
27265/// +---+---------------+
27266/// | # | Operands      |
27267/// +---+---------------+
27268/// | 1 | Xmm, Xmm, Xmm |
27269/// +---+---------------+
27270/// ```
27271pub trait Vfnmadd213shErEmitter<A, B, C> {
27272    fn vfnmadd213sh_er(&mut self, op0: A, op1: B, op2: C);
27273}
27274
27275impl<'a> Vfnmadd213shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27276    fn vfnmadd213sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27277        self.emit(
27278            VFNMADD213SHRRR_ER,
27279            op0.as_operand(),
27280            op1.as_operand(),
27281            op2.as_operand(),
27282            &NOREG,
27283        );
27284    }
27285}
27286
27287/// `VFNMADD213SH_MASK`.
27288///
27289/// Supported operand variants:
27290///
27291/// ```text
27292/// +---+---------------+
27293/// | # | Operands      |
27294/// +---+---------------+
27295/// | 1 | Xmm, Xmm, Mem |
27296/// | 2 | Xmm, Xmm, Xmm |
27297/// +---+---------------+
27298/// ```
27299pub trait Vfnmadd213shMaskEmitter<A, B, C> {
27300    fn vfnmadd213sh_mask(&mut self, op0: A, op1: B, op2: C);
27301}
27302
27303impl<'a> Vfnmadd213shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27304    fn vfnmadd213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27305        self.emit(
27306            VFNMADD213SHRRR_MASK,
27307            op0.as_operand(),
27308            op1.as_operand(),
27309            op2.as_operand(),
27310            &NOREG,
27311        );
27312    }
27313}
27314
27315impl<'a> Vfnmadd213shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27316    fn vfnmadd213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27317        self.emit(
27318            VFNMADD213SHRRM_MASK,
27319            op0.as_operand(),
27320            op1.as_operand(),
27321            op2.as_operand(),
27322            &NOREG,
27323        );
27324    }
27325}
27326
27327/// `VFNMADD213SH_MASK_ER`.
27328///
27329/// Supported operand variants:
27330///
27331/// ```text
27332/// +---+---------------+
27333/// | # | Operands      |
27334/// +---+---------------+
27335/// | 1 | Xmm, Xmm, Xmm |
27336/// +---+---------------+
27337/// ```
27338pub trait Vfnmadd213shMaskErEmitter<A, B, C> {
27339    fn vfnmadd213sh_mask_er(&mut self, op0: A, op1: B, op2: C);
27340}
27341
27342impl<'a> Vfnmadd213shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27343    fn vfnmadd213sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27344        self.emit(
27345            VFNMADD213SHRRR_MASK_ER,
27346            op0.as_operand(),
27347            op1.as_operand(),
27348            op2.as_operand(),
27349            &NOREG,
27350        );
27351    }
27352}
27353
27354/// `VFNMADD213SH_MASKZ`.
27355///
27356/// Supported operand variants:
27357///
27358/// ```text
27359/// +---+---------------+
27360/// | # | Operands      |
27361/// +---+---------------+
27362/// | 1 | Xmm, Xmm, Mem |
27363/// | 2 | Xmm, Xmm, Xmm |
27364/// +---+---------------+
27365/// ```
27366pub trait Vfnmadd213shMaskzEmitter<A, B, C> {
27367    fn vfnmadd213sh_maskz(&mut self, op0: A, op1: B, op2: C);
27368}
27369
27370impl<'a> Vfnmadd213shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27371    fn vfnmadd213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27372        self.emit(
27373            VFNMADD213SHRRR_MASKZ,
27374            op0.as_operand(),
27375            op1.as_operand(),
27376            op2.as_operand(),
27377            &NOREG,
27378        );
27379    }
27380}
27381
27382impl<'a> Vfnmadd213shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27383    fn vfnmadd213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27384        self.emit(
27385            VFNMADD213SHRRM_MASKZ,
27386            op0.as_operand(),
27387            op1.as_operand(),
27388            op2.as_operand(),
27389            &NOREG,
27390        );
27391    }
27392}
27393
27394/// `VFNMADD213SH_MASKZ_ER`.
27395///
27396/// Supported operand variants:
27397///
27398/// ```text
27399/// +---+---------------+
27400/// | # | Operands      |
27401/// +---+---------------+
27402/// | 1 | Xmm, Xmm, Xmm |
27403/// +---+---------------+
27404/// ```
27405pub trait Vfnmadd213shMaskzErEmitter<A, B, C> {
27406    fn vfnmadd213sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
27407}
27408
27409impl<'a> Vfnmadd213shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27410    fn vfnmadd213sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27411        self.emit(
27412            VFNMADD213SHRRR_MASKZ_ER,
27413            op0.as_operand(),
27414            op1.as_operand(),
27415            op2.as_operand(),
27416            &NOREG,
27417        );
27418    }
27419}
27420
27421/// `VFNMADD231PH`.
27422///
27423/// Supported operand variants:
27424///
27425/// ```text
27426/// +---+---------------+
27427/// | # | Operands      |
27428/// +---+---------------+
27429/// | 1 | Xmm, Xmm, Mem |
27430/// | 2 | Xmm, Xmm, Xmm |
27431/// | 3 | Ymm, Ymm, Mem |
27432/// | 4 | Ymm, Ymm, Ymm |
27433/// | 5 | Zmm, Zmm, Mem |
27434/// | 6 | Zmm, Zmm, Zmm |
27435/// +---+---------------+
27436/// ```
27437pub trait Vfnmadd231phEmitter<A, B, C> {
27438    fn vfnmadd231ph(&mut self, op0: A, op1: B, op2: C);
27439}
27440
27441impl<'a> Vfnmadd231phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27442    fn vfnmadd231ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27443        self.emit(
27444            VFNMADD231PH128RRR,
27445            op0.as_operand(),
27446            op1.as_operand(),
27447            op2.as_operand(),
27448            &NOREG,
27449        );
27450    }
27451}
27452
27453impl<'a> Vfnmadd231phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27454    fn vfnmadd231ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27455        self.emit(
27456            VFNMADD231PH128RRM,
27457            op0.as_operand(),
27458            op1.as_operand(),
27459            op2.as_operand(),
27460            &NOREG,
27461        );
27462    }
27463}
27464
27465impl<'a> Vfnmadd231phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
27466    fn vfnmadd231ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
27467        self.emit(
27468            VFNMADD231PH256RRR,
27469            op0.as_operand(),
27470            op1.as_operand(),
27471            op2.as_operand(),
27472            &NOREG,
27473        );
27474    }
27475}
27476
27477impl<'a> Vfnmadd231phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
27478    fn vfnmadd231ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
27479        self.emit(
27480            VFNMADD231PH256RRM,
27481            op0.as_operand(),
27482            op1.as_operand(),
27483            op2.as_operand(),
27484            &NOREG,
27485        );
27486    }
27487}
27488
27489impl<'a> Vfnmadd231phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27490    fn vfnmadd231ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27491        self.emit(
27492            VFNMADD231PH512RRR,
27493            op0.as_operand(),
27494            op1.as_operand(),
27495            op2.as_operand(),
27496            &NOREG,
27497        );
27498    }
27499}
27500
27501impl<'a> Vfnmadd231phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
27502    fn vfnmadd231ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
27503        self.emit(
27504            VFNMADD231PH512RRM,
27505            op0.as_operand(),
27506            op1.as_operand(),
27507            op2.as_operand(),
27508            &NOREG,
27509        );
27510    }
27511}
27512
27513/// `VFNMADD231PH_ER`.
27514///
27515/// Supported operand variants:
27516///
27517/// ```text
27518/// +---+---------------+
27519/// | # | Operands      |
27520/// +---+---------------+
27521/// | 1 | Zmm, Zmm, Zmm |
27522/// +---+---------------+
27523/// ```
27524pub trait Vfnmadd231phErEmitter<A, B, C> {
27525    fn vfnmadd231ph_er(&mut self, op0: A, op1: B, op2: C);
27526}
27527
27528impl<'a> Vfnmadd231phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27529    fn vfnmadd231ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27530        self.emit(
27531            VFNMADD231PH512RRR_ER,
27532            op0.as_operand(),
27533            op1.as_operand(),
27534            op2.as_operand(),
27535            &NOREG,
27536        );
27537    }
27538}
27539
27540/// `VFNMADD231PH_MASK`.
27541///
27542/// Supported operand variants:
27543///
27544/// ```text
27545/// +---+---------------+
27546/// | # | Operands      |
27547/// +---+---------------+
27548/// | 1 | Xmm, Xmm, Mem |
27549/// | 2 | Xmm, Xmm, Xmm |
27550/// | 3 | Ymm, Ymm, Mem |
27551/// | 4 | Ymm, Ymm, Ymm |
27552/// | 5 | Zmm, Zmm, Mem |
27553/// | 6 | Zmm, Zmm, Zmm |
27554/// +---+---------------+
27555/// ```
27556pub trait Vfnmadd231phMaskEmitter<A, B, C> {
27557    fn vfnmadd231ph_mask(&mut self, op0: A, op1: B, op2: C);
27558}
27559
27560impl<'a> Vfnmadd231phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27561    fn vfnmadd231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27562        self.emit(
27563            VFNMADD231PH128RRR_MASK,
27564            op0.as_operand(),
27565            op1.as_operand(),
27566            op2.as_operand(),
27567            &NOREG,
27568        );
27569    }
27570}
27571
27572impl<'a> Vfnmadd231phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27573    fn vfnmadd231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27574        self.emit(
27575            VFNMADD231PH128RRM_MASK,
27576            op0.as_operand(),
27577            op1.as_operand(),
27578            op2.as_operand(),
27579            &NOREG,
27580        );
27581    }
27582}
27583
27584impl<'a> Vfnmadd231phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
27585    fn vfnmadd231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
27586        self.emit(
27587            VFNMADD231PH256RRR_MASK,
27588            op0.as_operand(),
27589            op1.as_operand(),
27590            op2.as_operand(),
27591            &NOREG,
27592        );
27593    }
27594}
27595
27596impl<'a> Vfnmadd231phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
27597    fn vfnmadd231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
27598        self.emit(
27599            VFNMADD231PH256RRM_MASK,
27600            op0.as_operand(),
27601            op1.as_operand(),
27602            op2.as_operand(),
27603            &NOREG,
27604        );
27605    }
27606}
27607
27608impl<'a> Vfnmadd231phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27609    fn vfnmadd231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27610        self.emit(
27611            VFNMADD231PH512RRR_MASK,
27612            op0.as_operand(),
27613            op1.as_operand(),
27614            op2.as_operand(),
27615            &NOREG,
27616        );
27617    }
27618}
27619
27620impl<'a> Vfnmadd231phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
27621    fn vfnmadd231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
27622        self.emit(
27623            VFNMADD231PH512RRM_MASK,
27624            op0.as_operand(),
27625            op1.as_operand(),
27626            op2.as_operand(),
27627            &NOREG,
27628        );
27629    }
27630}
27631
27632/// `VFNMADD231PH_MASK_ER`.
27633///
27634/// Supported operand variants:
27635///
27636/// ```text
27637/// +---+---------------+
27638/// | # | Operands      |
27639/// +---+---------------+
27640/// | 1 | Zmm, Zmm, Zmm |
27641/// +---+---------------+
27642/// ```
27643pub trait Vfnmadd231phMaskErEmitter<A, B, C> {
27644    fn vfnmadd231ph_mask_er(&mut self, op0: A, op1: B, op2: C);
27645}
27646
27647impl<'a> Vfnmadd231phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27648    fn vfnmadd231ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27649        self.emit(
27650            VFNMADD231PH512RRR_MASK_ER,
27651            op0.as_operand(),
27652            op1.as_operand(),
27653            op2.as_operand(),
27654            &NOREG,
27655        );
27656    }
27657}
27658
27659/// `VFNMADD231PH_MASKZ`.
27660///
27661/// Supported operand variants:
27662///
27663/// ```text
27664/// +---+---------------+
27665/// | # | Operands      |
27666/// +---+---------------+
27667/// | 1 | Xmm, Xmm, Mem |
27668/// | 2 | Xmm, Xmm, Xmm |
27669/// | 3 | Ymm, Ymm, Mem |
27670/// | 4 | Ymm, Ymm, Ymm |
27671/// | 5 | Zmm, Zmm, Mem |
27672/// | 6 | Zmm, Zmm, Zmm |
27673/// +---+---------------+
27674/// ```
27675pub trait Vfnmadd231phMaskzEmitter<A, B, C> {
27676    fn vfnmadd231ph_maskz(&mut self, op0: A, op1: B, op2: C);
27677}
27678
27679impl<'a> Vfnmadd231phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27680    fn vfnmadd231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27681        self.emit(
27682            VFNMADD231PH128RRR_MASKZ,
27683            op0.as_operand(),
27684            op1.as_operand(),
27685            op2.as_operand(),
27686            &NOREG,
27687        );
27688    }
27689}
27690
27691impl<'a> Vfnmadd231phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27692    fn vfnmadd231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27693        self.emit(
27694            VFNMADD231PH128RRM_MASKZ,
27695            op0.as_operand(),
27696            op1.as_operand(),
27697            op2.as_operand(),
27698            &NOREG,
27699        );
27700    }
27701}
27702
27703impl<'a> Vfnmadd231phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
27704    fn vfnmadd231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
27705        self.emit(
27706            VFNMADD231PH256RRR_MASKZ,
27707            op0.as_operand(),
27708            op1.as_operand(),
27709            op2.as_operand(),
27710            &NOREG,
27711        );
27712    }
27713}
27714
27715impl<'a> Vfnmadd231phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
27716    fn vfnmadd231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
27717        self.emit(
27718            VFNMADD231PH256RRM_MASKZ,
27719            op0.as_operand(),
27720            op1.as_operand(),
27721            op2.as_operand(),
27722            &NOREG,
27723        );
27724    }
27725}
27726
27727impl<'a> Vfnmadd231phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27728    fn vfnmadd231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27729        self.emit(
27730            VFNMADD231PH512RRR_MASKZ,
27731            op0.as_operand(),
27732            op1.as_operand(),
27733            op2.as_operand(),
27734            &NOREG,
27735        );
27736    }
27737}
27738
27739impl<'a> Vfnmadd231phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
27740    fn vfnmadd231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
27741        self.emit(
27742            VFNMADD231PH512RRM_MASKZ,
27743            op0.as_operand(),
27744            op1.as_operand(),
27745            op2.as_operand(),
27746            &NOREG,
27747        );
27748    }
27749}
27750
27751/// `VFNMADD231PH_MASKZ_ER`.
27752///
27753/// Supported operand variants:
27754///
27755/// ```text
27756/// +---+---------------+
27757/// | # | Operands      |
27758/// +---+---------------+
27759/// | 1 | Zmm, Zmm, Zmm |
27760/// +---+---------------+
27761/// ```
27762pub trait Vfnmadd231phMaskzErEmitter<A, B, C> {
27763    fn vfnmadd231ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
27764}
27765
27766impl<'a> Vfnmadd231phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
27767    fn vfnmadd231ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
27768        self.emit(
27769            VFNMADD231PH512RRR_MASKZ_ER,
27770            op0.as_operand(),
27771            op1.as_operand(),
27772            op2.as_operand(),
27773            &NOREG,
27774        );
27775    }
27776}
27777
27778/// `VFNMADD231SH`.
27779///
27780/// Supported operand variants:
27781///
27782/// ```text
27783/// +---+---------------+
27784/// | # | Operands      |
27785/// +---+---------------+
27786/// | 1 | Xmm, Xmm, Mem |
27787/// | 2 | Xmm, Xmm, Xmm |
27788/// +---+---------------+
27789/// ```
27790pub trait Vfnmadd231shEmitter<A, B, C> {
27791    fn vfnmadd231sh(&mut self, op0: A, op1: B, op2: C);
27792}
27793
27794impl<'a> Vfnmadd231shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27795    fn vfnmadd231sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27796        self.emit(
27797            VFNMADD231SHRRR,
27798            op0.as_operand(),
27799            op1.as_operand(),
27800            op2.as_operand(),
27801            &NOREG,
27802        );
27803    }
27804}
27805
27806impl<'a> Vfnmadd231shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27807    fn vfnmadd231sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27808        self.emit(
27809            VFNMADD231SHRRM,
27810            op0.as_operand(),
27811            op1.as_operand(),
27812            op2.as_operand(),
27813            &NOREG,
27814        );
27815    }
27816}
27817
27818/// `VFNMADD231SH_ER`.
27819///
27820/// Supported operand variants:
27821///
27822/// ```text
27823/// +---+---------------+
27824/// | # | Operands      |
27825/// +---+---------------+
27826/// | 1 | Xmm, Xmm, Xmm |
27827/// +---+---------------+
27828/// ```
27829pub trait Vfnmadd231shErEmitter<A, B, C> {
27830    fn vfnmadd231sh_er(&mut self, op0: A, op1: B, op2: C);
27831}
27832
27833impl<'a> Vfnmadd231shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27834    fn vfnmadd231sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27835        self.emit(
27836            VFNMADD231SHRRR_ER,
27837            op0.as_operand(),
27838            op1.as_operand(),
27839            op2.as_operand(),
27840            &NOREG,
27841        );
27842    }
27843}
27844
27845/// `VFNMADD231SH_MASK`.
27846///
27847/// Supported operand variants:
27848///
27849/// ```text
27850/// +---+---------------+
27851/// | # | Operands      |
27852/// +---+---------------+
27853/// | 1 | Xmm, Xmm, Mem |
27854/// | 2 | Xmm, Xmm, Xmm |
27855/// +---+---------------+
27856/// ```
27857pub trait Vfnmadd231shMaskEmitter<A, B, C> {
27858    fn vfnmadd231sh_mask(&mut self, op0: A, op1: B, op2: C);
27859}
27860
27861impl<'a> Vfnmadd231shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27862    fn vfnmadd231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27863        self.emit(
27864            VFNMADD231SHRRR_MASK,
27865            op0.as_operand(),
27866            op1.as_operand(),
27867            op2.as_operand(),
27868            &NOREG,
27869        );
27870    }
27871}
27872
27873impl<'a> Vfnmadd231shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27874    fn vfnmadd231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27875        self.emit(
27876            VFNMADD231SHRRM_MASK,
27877            op0.as_operand(),
27878            op1.as_operand(),
27879            op2.as_operand(),
27880            &NOREG,
27881        );
27882    }
27883}
27884
27885/// `VFNMADD231SH_MASK_ER`.
27886///
27887/// Supported operand variants:
27888///
27889/// ```text
27890/// +---+---------------+
27891/// | # | Operands      |
27892/// +---+---------------+
27893/// | 1 | Xmm, Xmm, Xmm |
27894/// +---+---------------+
27895/// ```
27896pub trait Vfnmadd231shMaskErEmitter<A, B, C> {
27897    fn vfnmadd231sh_mask_er(&mut self, op0: A, op1: B, op2: C);
27898}
27899
27900impl<'a> Vfnmadd231shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27901    fn vfnmadd231sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27902        self.emit(
27903            VFNMADD231SHRRR_MASK_ER,
27904            op0.as_operand(),
27905            op1.as_operand(),
27906            op2.as_operand(),
27907            &NOREG,
27908        );
27909    }
27910}
27911
27912/// `VFNMADD231SH_MASKZ`.
27913///
27914/// Supported operand variants:
27915///
27916/// ```text
27917/// +---+---------------+
27918/// | # | Operands      |
27919/// +---+---------------+
27920/// | 1 | Xmm, Xmm, Mem |
27921/// | 2 | Xmm, Xmm, Xmm |
27922/// +---+---------------+
27923/// ```
27924pub trait Vfnmadd231shMaskzEmitter<A, B, C> {
27925    fn vfnmadd231sh_maskz(&mut self, op0: A, op1: B, op2: C);
27926}
27927
27928impl<'a> Vfnmadd231shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27929    fn vfnmadd231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27930        self.emit(
27931            VFNMADD231SHRRR_MASKZ,
27932            op0.as_operand(),
27933            op1.as_operand(),
27934            op2.as_operand(),
27935            &NOREG,
27936        );
27937    }
27938}
27939
27940impl<'a> Vfnmadd231shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
27941    fn vfnmadd231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
27942        self.emit(
27943            VFNMADD231SHRRM_MASKZ,
27944            op0.as_operand(),
27945            op1.as_operand(),
27946            op2.as_operand(),
27947            &NOREG,
27948        );
27949    }
27950}
27951
27952/// `VFNMADD231SH_MASKZ_ER`.
27953///
27954/// Supported operand variants:
27955///
27956/// ```text
27957/// +---+---------------+
27958/// | # | Operands      |
27959/// +---+---------------+
27960/// | 1 | Xmm, Xmm, Xmm |
27961/// +---+---------------+
27962/// ```
27963pub trait Vfnmadd231shMaskzErEmitter<A, B, C> {
27964    fn vfnmadd231sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
27965}
27966
27967impl<'a> Vfnmadd231shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
27968    fn vfnmadd231sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
27969        self.emit(
27970            VFNMADD231SHRRR_MASKZ_ER,
27971            op0.as_operand(),
27972            op1.as_operand(),
27973            op2.as_operand(),
27974            &NOREG,
27975        );
27976    }
27977}
27978
27979/// `VFNMSUB132PH`.
27980///
27981/// Supported operand variants:
27982///
27983/// ```text
27984/// +---+---------------+
27985/// | # | Operands      |
27986/// +---+---------------+
27987/// | 1 | Xmm, Xmm, Mem |
27988/// | 2 | Xmm, Xmm, Xmm |
27989/// | 3 | Ymm, Ymm, Mem |
27990/// | 4 | Ymm, Ymm, Ymm |
27991/// | 5 | Zmm, Zmm, Mem |
27992/// | 6 | Zmm, Zmm, Zmm |
27993/// +---+---------------+
27994/// ```
27995pub trait Vfnmsub132phEmitter<A, B, C> {
27996    fn vfnmsub132ph(&mut self, op0: A, op1: B, op2: C);
27997}
27998
27999impl<'a> Vfnmsub132phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28000    fn vfnmsub132ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28001        self.emit(
28002            VFNMSUB132PH128RRR,
28003            op0.as_operand(),
28004            op1.as_operand(),
28005            op2.as_operand(),
28006            &NOREG,
28007        );
28008    }
28009}
28010
28011impl<'a> Vfnmsub132phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28012    fn vfnmsub132ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28013        self.emit(
28014            VFNMSUB132PH128RRM,
28015            op0.as_operand(),
28016            op1.as_operand(),
28017            op2.as_operand(),
28018            &NOREG,
28019        );
28020    }
28021}
28022
28023impl<'a> Vfnmsub132phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
28024    fn vfnmsub132ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
28025        self.emit(
28026            VFNMSUB132PH256RRR,
28027            op0.as_operand(),
28028            op1.as_operand(),
28029            op2.as_operand(),
28030            &NOREG,
28031        );
28032    }
28033}
28034
28035impl<'a> Vfnmsub132phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
28036    fn vfnmsub132ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
28037        self.emit(
28038            VFNMSUB132PH256RRM,
28039            op0.as_operand(),
28040            op1.as_operand(),
28041            op2.as_operand(),
28042            &NOREG,
28043        );
28044    }
28045}
28046
28047impl<'a> Vfnmsub132phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28048    fn vfnmsub132ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28049        self.emit(
28050            VFNMSUB132PH512RRR,
28051            op0.as_operand(),
28052            op1.as_operand(),
28053            op2.as_operand(),
28054            &NOREG,
28055        );
28056    }
28057}
28058
28059impl<'a> Vfnmsub132phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
28060    fn vfnmsub132ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
28061        self.emit(
28062            VFNMSUB132PH512RRM,
28063            op0.as_operand(),
28064            op1.as_operand(),
28065            op2.as_operand(),
28066            &NOREG,
28067        );
28068    }
28069}
28070
28071/// `VFNMSUB132PH_ER`.
28072///
28073/// Supported operand variants:
28074///
28075/// ```text
28076/// +---+---------------+
28077/// | # | Operands      |
28078/// +---+---------------+
28079/// | 1 | Zmm, Zmm, Zmm |
28080/// +---+---------------+
28081/// ```
28082pub trait Vfnmsub132phErEmitter<A, B, C> {
28083    fn vfnmsub132ph_er(&mut self, op0: A, op1: B, op2: C);
28084}
28085
28086impl<'a> Vfnmsub132phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28087    fn vfnmsub132ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28088        self.emit(
28089            VFNMSUB132PH512RRR_ER,
28090            op0.as_operand(),
28091            op1.as_operand(),
28092            op2.as_operand(),
28093            &NOREG,
28094        );
28095    }
28096}
28097
28098/// `VFNMSUB132PH_MASK`.
28099///
28100/// Supported operand variants:
28101///
28102/// ```text
28103/// +---+---------------+
28104/// | # | Operands      |
28105/// +---+---------------+
28106/// | 1 | Xmm, Xmm, Mem |
28107/// | 2 | Xmm, Xmm, Xmm |
28108/// | 3 | Ymm, Ymm, Mem |
28109/// | 4 | Ymm, Ymm, Ymm |
28110/// | 5 | Zmm, Zmm, Mem |
28111/// | 6 | Zmm, Zmm, Zmm |
28112/// +---+---------------+
28113/// ```
28114pub trait Vfnmsub132phMaskEmitter<A, B, C> {
28115    fn vfnmsub132ph_mask(&mut self, op0: A, op1: B, op2: C);
28116}
28117
28118impl<'a> Vfnmsub132phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28119    fn vfnmsub132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28120        self.emit(
28121            VFNMSUB132PH128RRR_MASK,
28122            op0.as_operand(),
28123            op1.as_operand(),
28124            op2.as_operand(),
28125            &NOREG,
28126        );
28127    }
28128}
28129
28130impl<'a> Vfnmsub132phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28131    fn vfnmsub132ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28132        self.emit(
28133            VFNMSUB132PH128RRM_MASK,
28134            op0.as_operand(),
28135            op1.as_operand(),
28136            op2.as_operand(),
28137            &NOREG,
28138        );
28139    }
28140}
28141
28142impl<'a> Vfnmsub132phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
28143    fn vfnmsub132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
28144        self.emit(
28145            VFNMSUB132PH256RRR_MASK,
28146            op0.as_operand(),
28147            op1.as_operand(),
28148            op2.as_operand(),
28149            &NOREG,
28150        );
28151    }
28152}
28153
28154impl<'a> Vfnmsub132phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
28155    fn vfnmsub132ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
28156        self.emit(
28157            VFNMSUB132PH256RRM_MASK,
28158            op0.as_operand(),
28159            op1.as_operand(),
28160            op2.as_operand(),
28161            &NOREG,
28162        );
28163    }
28164}
28165
28166impl<'a> Vfnmsub132phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28167    fn vfnmsub132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28168        self.emit(
28169            VFNMSUB132PH512RRR_MASK,
28170            op0.as_operand(),
28171            op1.as_operand(),
28172            op2.as_operand(),
28173            &NOREG,
28174        );
28175    }
28176}
28177
28178impl<'a> Vfnmsub132phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
28179    fn vfnmsub132ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
28180        self.emit(
28181            VFNMSUB132PH512RRM_MASK,
28182            op0.as_operand(),
28183            op1.as_operand(),
28184            op2.as_operand(),
28185            &NOREG,
28186        );
28187    }
28188}
28189
28190/// `VFNMSUB132PH_MASK_ER`.
28191///
28192/// Supported operand variants:
28193///
28194/// ```text
28195/// +---+---------------+
28196/// | # | Operands      |
28197/// +---+---------------+
28198/// | 1 | Zmm, Zmm, Zmm |
28199/// +---+---------------+
28200/// ```
28201pub trait Vfnmsub132phMaskErEmitter<A, B, C> {
28202    fn vfnmsub132ph_mask_er(&mut self, op0: A, op1: B, op2: C);
28203}
28204
28205impl<'a> Vfnmsub132phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28206    fn vfnmsub132ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28207        self.emit(
28208            VFNMSUB132PH512RRR_MASK_ER,
28209            op0.as_operand(),
28210            op1.as_operand(),
28211            op2.as_operand(),
28212            &NOREG,
28213        );
28214    }
28215}
28216
28217/// `VFNMSUB132PH_MASKZ`.
28218///
28219/// Supported operand variants:
28220///
28221/// ```text
28222/// +---+---------------+
28223/// | # | Operands      |
28224/// +---+---------------+
28225/// | 1 | Xmm, Xmm, Mem |
28226/// | 2 | Xmm, Xmm, Xmm |
28227/// | 3 | Ymm, Ymm, Mem |
28228/// | 4 | Ymm, Ymm, Ymm |
28229/// | 5 | Zmm, Zmm, Mem |
28230/// | 6 | Zmm, Zmm, Zmm |
28231/// +---+---------------+
28232/// ```
28233pub trait Vfnmsub132phMaskzEmitter<A, B, C> {
28234    fn vfnmsub132ph_maskz(&mut self, op0: A, op1: B, op2: C);
28235}
28236
28237impl<'a> Vfnmsub132phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28238    fn vfnmsub132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28239        self.emit(
28240            VFNMSUB132PH128RRR_MASKZ,
28241            op0.as_operand(),
28242            op1.as_operand(),
28243            op2.as_operand(),
28244            &NOREG,
28245        );
28246    }
28247}
28248
28249impl<'a> Vfnmsub132phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28250    fn vfnmsub132ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28251        self.emit(
28252            VFNMSUB132PH128RRM_MASKZ,
28253            op0.as_operand(),
28254            op1.as_operand(),
28255            op2.as_operand(),
28256            &NOREG,
28257        );
28258    }
28259}
28260
28261impl<'a> Vfnmsub132phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
28262    fn vfnmsub132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
28263        self.emit(
28264            VFNMSUB132PH256RRR_MASKZ,
28265            op0.as_operand(),
28266            op1.as_operand(),
28267            op2.as_operand(),
28268            &NOREG,
28269        );
28270    }
28271}
28272
28273impl<'a> Vfnmsub132phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
28274    fn vfnmsub132ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
28275        self.emit(
28276            VFNMSUB132PH256RRM_MASKZ,
28277            op0.as_operand(),
28278            op1.as_operand(),
28279            op2.as_operand(),
28280            &NOREG,
28281        );
28282    }
28283}
28284
28285impl<'a> Vfnmsub132phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28286    fn vfnmsub132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28287        self.emit(
28288            VFNMSUB132PH512RRR_MASKZ,
28289            op0.as_operand(),
28290            op1.as_operand(),
28291            op2.as_operand(),
28292            &NOREG,
28293        );
28294    }
28295}
28296
28297impl<'a> Vfnmsub132phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
28298    fn vfnmsub132ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
28299        self.emit(
28300            VFNMSUB132PH512RRM_MASKZ,
28301            op0.as_operand(),
28302            op1.as_operand(),
28303            op2.as_operand(),
28304            &NOREG,
28305        );
28306    }
28307}
28308
28309/// `VFNMSUB132PH_MASKZ_ER`.
28310///
28311/// Supported operand variants:
28312///
28313/// ```text
28314/// +---+---------------+
28315/// | # | Operands      |
28316/// +---+---------------+
28317/// | 1 | Zmm, Zmm, Zmm |
28318/// +---+---------------+
28319/// ```
28320pub trait Vfnmsub132phMaskzErEmitter<A, B, C> {
28321    fn vfnmsub132ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
28322}
28323
28324impl<'a> Vfnmsub132phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28325    fn vfnmsub132ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28326        self.emit(
28327            VFNMSUB132PH512RRR_MASKZ_ER,
28328            op0.as_operand(),
28329            op1.as_operand(),
28330            op2.as_operand(),
28331            &NOREG,
28332        );
28333    }
28334}
28335
28336/// `VFNMSUB132SH`.
28337///
28338/// Supported operand variants:
28339///
28340/// ```text
28341/// +---+---------------+
28342/// | # | Operands      |
28343/// +---+---------------+
28344/// | 1 | Xmm, Xmm, Mem |
28345/// | 2 | Xmm, Xmm, Xmm |
28346/// +---+---------------+
28347/// ```
28348pub trait Vfnmsub132shEmitter<A, B, C> {
28349    fn vfnmsub132sh(&mut self, op0: A, op1: B, op2: C);
28350}
28351
28352impl<'a> Vfnmsub132shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28353    fn vfnmsub132sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28354        self.emit(
28355            VFNMSUB132SHRRR,
28356            op0.as_operand(),
28357            op1.as_operand(),
28358            op2.as_operand(),
28359            &NOREG,
28360        );
28361    }
28362}
28363
28364impl<'a> Vfnmsub132shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28365    fn vfnmsub132sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28366        self.emit(
28367            VFNMSUB132SHRRM,
28368            op0.as_operand(),
28369            op1.as_operand(),
28370            op2.as_operand(),
28371            &NOREG,
28372        );
28373    }
28374}
28375
28376/// `VFNMSUB132SH_ER`.
28377///
28378/// Supported operand variants:
28379///
28380/// ```text
28381/// +---+---------------+
28382/// | # | Operands      |
28383/// +---+---------------+
28384/// | 1 | Xmm, Xmm, Xmm |
28385/// +---+---------------+
28386/// ```
28387pub trait Vfnmsub132shErEmitter<A, B, C> {
28388    fn vfnmsub132sh_er(&mut self, op0: A, op1: B, op2: C);
28389}
28390
28391impl<'a> Vfnmsub132shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28392    fn vfnmsub132sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28393        self.emit(
28394            VFNMSUB132SHRRR_ER,
28395            op0.as_operand(),
28396            op1.as_operand(),
28397            op2.as_operand(),
28398            &NOREG,
28399        );
28400    }
28401}
28402
28403/// `VFNMSUB132SH_MASK`.
28404///
28405/// Supported operand variants:
28406///
28407/// ```text
28408/// +---+---------------+
28409/// | # | Operands      |
28410/// +---+---------------+
28411/// | 1 | Xmm, Xmm, Mem |
28412/// | 2 | Xmm, Xmm, Xmm |
28413/// +---+---------------+
28414/// ```
28415pub trait Vfnmsub132shMaskEmitter<A, B, C> {
28416    fn vfnmsub132sh_mask(&mut self, op0: A, op1: B, op2: C);
28417}
28418
28419impl<'a> Vfnmsub132shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28420    fn vfnmsub132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28421        self.emit(
28422            VFNMSUB132SHRRR_MASK,
28423            op0.as_operand(),
28424            op1.as_operand(),
28425            op2.as_operand(),
28426            &NOREG,
28427        );
28428    }
28429}
28430
28431impl<'a> Vfnmsub132shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28432    fn vfnmsub132sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28433        self.emit(
28434            VFNMSUB132SHRRM_MASK,
28435            op0.as_operand(),
28436            op1.as_operand(),
28437            op2.as_operand(),
28438            &NOREG,
28439        );
28440    }
28441}
28442
28443/// `VFNMSUB132SH_MASK_ER`.
28444///
28445/// Supported operand variants:
28446///
28447/// ```text
28448/// +---+---------------+
28449/// | # | Operands      |
28450/// +---+---------------+
28451/// | 1 | Xmm, Xmm, Xmm |
28452/// +---+---------------+
28453/// ```
28454pub trait Vfnmsub132shMaskErEmitter<A, B, C> {
28455    fn vfnmsub132sh_mask_er(&mut self, op0: A, op1: B, op2: C);
28456}
28457
28458impl<'a> Vfnmsub132shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28459    fn vfnmsub132sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28460        self.emit(
28461            VFNMSUB132SHRRR_MASK_ER,
28462            op0.as_operand(),
28463            op1.as_operand(),
28464            op2.as_operand(),
28465            &NOREG,
28466        );
28467    }
28468}
28469
28470/// `VFNMSUB132SH_MASKZ`.
28471///
28472/// Supported operand variants:
28473///
28474/// ```text
28475/// +---+---------------+
28476/// | # | Operands      |
28477/// +---+---------------+
28478/// | 1 | Xmm, Xmm, Mem |
28479/// | 2 | Xmm, Xmm, Xmm |
28480/// +---+---------------+
28481/// ```
28482pub trait Vfnmsub132shMaskzEmitter<A, B, C> {
28483    fn vfnmsub132sh_maskz(&mut self, op0: A, op1: B, op2: C);
28484}
28485
28486impl<'a> Vfnmsub132shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28487    fn vfnmsub132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28488        self.emit(
28489            VFNMSUB132SHRRR_MASKZ,
28490            op0.as_operand(),
28491            op1.as_operand(),
28492            op2.as_operand(),
28493            &NOREG,
28494        );
28495    }
28496}
28497
28498impl<'a> Vfnmsub132shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28499    fn vfnmsub132sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28500        self.emit(
28501            VFNMSUB132SHRRM_MASKZ,
28502            op0.as_operand(),
28503            op1.as_operand(),
28504            op2.as_operand(),
28505            &NOREG,
28506        );
28507    }
28508}
28509
28510/// `VFNMSUB132SH_MASKZ_ER`.
28511///
28512/// Supported operand variants:
28513///
28514/// ```text
28515/// +---+---------------+
28516/// | # | Operands      |
28517/// +---+---------------+
28518/// | 1 | Xmm, Xmm, Xmm |
28519/// +---+---------------+
28520/// ```
28521pub trait Vfnmsub132shMaskzErEmitter<A, B, C> {
28522    fn vfnmsub132sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
28523}
28524
28525impl<'a> Vfnmsub132shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28526    fn vfnmsub132sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28527        self.emit(
28528            VFNMSUB132SHRRR_MASKZ_ER,
28529            op0.as_operand(),
28530            op1.as_operand(),
28531            op2.as_operand(),
28532            &NOREG,
28533        );
28534    }
28535}
28536
28537/// `VFNMSUB213PH`.
28538///
28539/// Supported operand variants:
28540///
28541/// ```text
28542/// +---+---------------+
28543/// | # | Operands      |
28544/// +---+---------------+
28545/// | 1 | Xmm, Xmm, Mem |
28546/// | 2 | Xmm, Xmm, Xmm |
28547/// | 3 | Ymm, Ymm, Mem |
28548/// | 4 | Ymm, Ymm, Ymm |
28549/// | 5 | Zmm, Zmm, Mem |
28550/// | 6 | Zmm, Zmm, Zmm |
28551/// +---+---------------+
28552/// ```
28553pub trait Vfnmsub213phEmitter<A, B, C> {
28554    fn vfnmsub213ph(&mut self, op0: A, op1: B, op2: C);
28555}
28556
28557impl<'a> Vfnmsub213phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28558    fn vfnmsub213ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28559        self.emit(
28560            VFNMSUB213PH128RRR,
28561            op0.as_operand(),
28562            op1.as_operand(),
28563            op2.as_operand(),
28564            &NOREG,
28565        );
28566    }
28567}
28568
28569impl<'a> Vfnmsub213phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28570    fn vfnmsub213ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28571        self.emit(
28572            VFNMSUB213PH128RRM,
28573            op0.as_operand(),
28574            op1.as_operand(),
28575            op2.as_operand(),
28576            &NOREG,
28577        );
28578    }
28579}
28580
28581impl<'a> Vfnmsub213phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
28582    fn vfnmsub213ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
28583        self.emit(
28584            VFNMSUB213PH256RRR,
28585            op0.as_operand(),
28586            op1.as_operand(),
28587            op2.as_operand(),
28588            &NOREG,
28589        );
28590    }
28591}
28592
28593impl<'a> Vfnmsub213phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
28594    fn vfnmsub213ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
28595        self.emit(
28596            VFNMSUB213PH256RRM,
28597            op0.as_operand(),
28598            op1.as_operand(),
28599            op2.as_operand(),
28600            &NOREG,
28601        );
28602    }
28603}
28604
28605impl<'a> Vfnmsub213phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28606    fn vfnmsub213ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28607        self.emit(
28608            VFNMSUB213PH512RRR,
28609            op0.as_operand(),
28610            op1.as_operand(),
28611            op2.as_operand(),
28612            &NOREG,
28613        );
28614    }
28615}
28616
28617impl<'a> Vfnmsub213phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
28618    fn vfnmsub213ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
28619        self.emit(
28620            VFNMSUB213PH512RRM,
28621            op0.as_operand(),
28622            op1.as_operand(),
28623            op2.as_operand(),
28624            &NOREG,
28625        );
28626    }
28627}
28628
28629/// `VFNMSUB213PH_ER`.
28630///
28631/// Supported operand variants:
28632///
28633/// ```text
28634/// +---+---------------+
28635/// | # | Operands      |
28636/// +---+---------------+
28637/// | 1 | Zmm, Zmm, Zmm |
28638/// +---+---------------+
28639/// ```
28640pub trait Vfnmsub213phErEmitter<A, B, C> {
28641    fn vfnmsub213ph_er(&mut self, op0: A, op1: B, op2: C);
28642}
28643
28644impl<'a> Vfnmsub213phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28645    fn vfnmsub213ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28646        self.emit(
28647            VFNMSUB213PH512RRR_ER,
28648            op0.as_operand(),
28649            op1.as_operand(),
28650            op2.as_operand(),
28651            &NOREG,
28652        );
28653    }
28654}
28655
28656/// `VFNMSUB213PH_MASK`.
28657///
28658/// Supported operand variants:
28659///
28660/// ```text
28661/// +---+---------------+
28662/// | # | Operands      |
28663/// +---+---------------+
28664/// | 1 | Xmm, Xmm, Mem |
28665/// | 2 | Xmm, Xmm, Xmm |
28666/// | 3 | Ymm, Ymm, Mem |
28667/// | 4 | Ymm, Ymm, Ymm |
28668/// | 5 | Zmm, Zmm, Mem |
28669/// | 6 | Zmm, Zmm, Zmm |
28670/// +---+---------------+
28671/// ```
28672pub trait Vfnmsub213phMaskEmitter<A, B, C> {
28673    fn vfnmsub213ph_mask(&mut self, op0: A, op1: B, op2: C);
28674}
28675
28676impl<'a> Vfnmsub213phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28677    fn vfnmsub213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28678        self.emit(
28679            VFNMSUB213PH128RRR_MASK,
28680            op0.as_operand(),
28681            op1.as_operand(),
28682            op2.as_operand(),
28683            &NOREG,
28684        );
28685    }
28686}
28687
28688impl<'a> Vfnmsub213phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28689    fn vfnmsub213ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28690        self.emit(
28691            VFNMSUB213PH128RRM_MASK,
28692            op0.as_operand(),
28693            op1.as_operand(),
28694            op2.as_operand(),
28695            &NOREG,
28696        );
28697    }
28698}
28699
28700impl<'a> Vfnmsub213phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
28701    fn vfnmsub213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
28702        self.emit(
28703            VFNMSUB213PH256RRR_MASK,
28704            op0.as_operand(),
28705            op1.as_operand(),
28706            op2.as_operand(),
28707            &NOREG,
28708        );
28709    }
28710}
28711
28712impl<'a> Vfnmsub213phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
28713    fn vfnmsub213ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
28714        self.emit(
28715            VFNMSUB213PH256RRM_MASK,
28716            op0.as_operand(),
28717            op1.as_operand(),
28718            op2.as_operand(),
28719            &NOREG,
28720        );
28721    }
28722}
28723
28724impl<'a> Vfnmsub213phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28725    fn vfnmsub213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28726        self.emit(
28727            VFNMSUB213PH512RRR_MASK,
28728            op0.as_operand(),
28729            op1.as_operand(),
28730            op2.as_operand(),
28731            &NOREG,
28732        );
28733    }
28734}
28735
28736impl<'a> Vfnmsub213phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
28737    fn vfnmsub213ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
28738        self.emit(
28739            VFNMSUB213PH512RRM_MASK,
28740            op0.as_operand(),
28741            op1.as_operand(),
28742            op2.as_operand(),
28743            &NOREG,
28744        );
28745    }
28746}
28747
28748/// `VFNMSUB213PH_MASK_ER`.
28749///
28750/// Supported operand variants:
28751///
28752/// ```text
28753/// +---+---------------+
28754/// | # | Operands      |
28755/// +---+---------------+
28756/// | 1 | Zmm, Zmm, Zmm |
28757/// +---+---------------+
28758/// ```
28759pub trait Vfnmsub213phMaskErEmitter<A, B, C> {
28760    fn vfnmsub213ph_mask_er(&mut self, op0: A, op1: B, op2: C);
28761}
28762
28763impl<'a> Vfnmsub213phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28764    fn vfnmsub213ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28765        self.emit(
28766            VFNMSUB213PH512RRR_MASK_ER,
28767            op0.as_operand(),
28768            op1.as_operand(),
28769            op2.as_operand(),
28770            &NOREG,
28771        );
28772    }
28773}
28774
28775/// `VFNMSUB213PH_MASKZ`.
28776///
28777/// Supported operand variants:
28778///
28779/// ```text
28780/// +---+---------------+
28781/// | # | Operands      |
28782/// +---+---------------+
28783/// | 1 | Xmm, Xmm, Mem |
28784/// | 2 | Xmm, Xmm, Xmm |
28785/// | 3 | Ymm, Ymm, Mem |
28786/// | 4 | Ymm, Ymm, Ymm |
28787/// | 5 | Zmm, Zmm, Mem |
28788/// | 6 | Zmm, Zmm, Zmm |
28789/// +---+---------------+
28790/// ```
28791pub trait Vfnmsub213phMaskzEmitter<A, B, C> {
28792    fn vfnmsub213ph_maskz(&mut self, op0: A, op1: B, op2: C);
28793}
28794
28795impl<'a> Vfnmsub213phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28796    fn vfnmsub213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28797        self.emit(
28798            VFNMSUB213PH128RRR_MASKZ,
28799            op0.as_operand(),
28800            op1.as_operand(),
28801            op2.as_operand(),
28802            &NOREG,
28803        );
28804    }
28805}
28806
28807impl<'a> Vfnmsub213phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28808    fn vfnmsub213ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28809        self.emit(
28810            VFNMSUB213PH128RRM_MASKZ,
28811            op0.as_operand(),
28812            op1.as_operand(),
28813            op2.as_operand(),
28814            &NOREG,
28815        );
28816    }
28817}
28818
28819impl<'a> Vfnmsub213phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
28820    fn vfnmsub213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
28821        self.emit(
28822            VFNMSUB213PH256RRR_MASKZ,
28823            op0.as_operand(),
28824            op1.as_operand(),
28825            op2.as_operand(),
28826            &NOREG,
28827        );
28828    }
28829}
28830
28831impl<'a> Vfnmsub213phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
28832    fn vfnmsub213ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
28833        self.emit(
28834            VFNMSUB213PH256RRM_MASKZ,
28835            op0.as_operand(),
28836            op1.as_operand(),
28837            op2.as_operand(),
28838            &NOREG,
28839        );
28840    }
28841}
28842
28843impl<'a> Vfnmsub213phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28844    fn vfnmsub213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28845        self.emit(
28846            VFNMSUB213PH512RRR_MASKZ,
28847            op0.as_operand(),
28848            op1.as_operand(),
28849            op2.as_operand(),
28850            &NOREG,
28851        );
28852    }
28853}
28854
28855impl<'a> Vfnmsub213phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
28856    fn vfnmsub213ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
28857        self.emit(
28858            VFNMSUB213PH512RRM_MASKZ,
28859            op0.as_operand(),
28860            op1.as_operand(),
28861            op2.as_operand(),
28862            &NOREG,
28863        );
28864    }
28865}
28866
28867/// `VFNMSUB213PH_MASKZ_ER`.
28868///
28869/// Supported operand variants:
28870///
28871/// ```text
28872/// +---+---------------+
28873/// | # | Operands      |
28874/// +---+---------------+
28875/// | 1 | Zmm, Zmm, Zmm |
28876/// +---+---------------+
28877/// ```
28878pub trait Vfnmsub213phMaskzErEmitter<A, B, C> {
28879    fn vfnmsub213ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
28880}
28881
28882impl<'a> Vfnmsub213phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
28883    fn vfnmsub213ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
28884        self.emit(
28885            VFNMSUB213PH512RRR_MASKZ_ER,
28886            op0.as_operand(),
28887            op1.as_operand(),
28888            op2.as_operand(),
28889            &NOREG,
28890        );
28891    }
28892}
28893
28894/// `VFNMSUB213SH`.
28895///
28896/// Supported operand variants:
28897///
28898/// ```text
28899/// +---+---------------+
28900/// | # | Operands      |
28901/// +---+---------------+
28902/// | 1 | Xmm, Xmm, Mem |
28903/// | 2 | Xmm, Xmm, Xmm |
28904/// +---+---------------+
28905/// ```
28906pub trait Vfnmsub213shEmitter<A, B, C> {
28907    fn vfnmsub213sh(&mut self, op0: A, op1: B, op2: C);
28908}
28909
28910impl<'a> Vfnmsub213shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28911    fn vfnmsub213sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28912        self.emit(
28913            VFNMSUB213SHRRR,
28914            op0.as_operand(),
28915            op1.as_operand(),
28916            op2.as_operand(),
28917            &NOREG,
28918        );
28919    }
28920}
28921
28922impl<'a> Vfnmsub213shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28923    fn vfnmsub213sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28924        self.emit(
28925            VFNMSUB213SHRRM,
28926            op0.as_operand(),
28927            op1.as_operand(),
28928            op2.as_operand(),
28929            &NOREG,
28930        );
28931    }
28932}
28933
28934/// `VFNMSUB213SH_ER`.
28935///
28936/// Supported operand variants:
28937///
28938/// ```text
28939/// +---+---------------+
28940/// | # | Operands      |
28941/// +---+---------------+
28942/// | 1 | Xmm, Xmm, Xmm |
28943/// +---+---------------+
28944/// ```
28945pub trait Vfnmsub213shErEmitter<A, B, C> {
28946    fn vfnmsub213sh_er(&mut self, op0: A, op1: B, op2: C);
28947}
28948
28949impl<'a> Vfnmsub213shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28950    fn vfnmsub213sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28951        self.emit(
28952            VFNMSUB213SHRRR_ER,
28953            op0.as_operand(),
28954            op1.as_operand(),
28955            op2.as_operand(),
28956            &NOREG,
28957        );
28958    }
28959}
28960
28961/// `VFNMSUB213SH_MASK`.
28962///
28963/// Supported operand variants:
28964///
28965/// ```text
28966/// +---+---------------+
28967/// | # | Operands      |
28968/// +---+---------------+
28969/// | 1 | Xmm, Xmm, Mem |
28970/// | 2 | Xmm, Xmm, Xmm |
28971/// +---+---------------+
28972/// ```
28973pub trait Vfnmsub213shMaskEmitter<A, B, C> {
28974    fn vfnmsub213sh_mask(&mut self, op0: A, op1: B, op2: C);
28975}
28976
28977impl<'a> Vfnmsub213shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
28978    fn vfnmsub213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
28979        self.emit(
28980            VFNMSUB213SHRRR_MASK,
28981            op0.as_operand(),
28982            op1.as_operand(),
28983            op2.as_operand(),
28984            &NOREG,
28985        );
28986    }
28987}
28988
28989impl<'a> Vfnmsub213shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
28990    fn vfnmsub213sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
28991        self.emit(
28992            VFNMSUB213SHRRM_MASK,
28993            op0.as_operand(),
28994            op1.as_operand(),
28995            op2.as_operand(),
28996            &NOREG,
28997        );
28998    }
28999}
29000
29001/// `VFNMSUB213SH_MASK_ER`.
29002///
29003/// Supported operand variants:
29004///
29005/// ```text
29006/// +---+---------------+
29007/// | # | Operands      |
29008/// +---+---------------+
29009/// | 1 | Xmm, Xmm, Xmm |
29010/// +---+---------------+
29011/// ```
29012pub trait Vfnmsub213shMaskErEmitter<A, B, C> {
29013    fn vfnmsub213sh_mask_er(&mut self, op0: A, op1: B, op2: C);
29014}
29015
29016impl<'a> Vfnmsub213shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29017    fn vfnmsub213sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29018        self.emit(
29019            VFNMSUB213SHRRR_MASK_ER,
29020            op0.as_operand(),
29021            op1.as_operand(),
29022            op2.as_operand(),
29023            &NOREG,
29024        );
29025    }
29026}
29027
29028/// `VFNMSUB213SH_MASKZ`.
29029///
29030/// Supported operand variants:
29031///
29032/// ```text
29033/// +---+---------------+
29034/// | # | Operands      |
29035/// +---+---------------+
29036/// | 1 | Xmm, Xmm, Mem |
29037/// | 2 | Xmm, Xmm, Xmm |
29038/// +---+---------------+
29039/// ```
29040pub trait Vfnmsub213shMaskzEmitter<A, B, C> {
29041    fn vfnmsub213sh_maskz(&mut self, op0: A, op1: B, op2: C);
29042}
29043
29044impl<'a> Vfnmsub213shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29045    fn vfnmsub213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29046        self.emit(
29047            VFNMSUB213SHRRR_MASKZ,
29048            op0.as_operand(),
29049            op1.as_operand(),
29050            op2.as_operand(),
29051            &NOREG,
29052        );
29053    }
29054}
29055
29056impl<'a> Vfnmsub213shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29057    fn vfnmsub213sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29058        self.emit(
29059            VFNMSUB213SHRRM_MASKZ,
29060            op0.as_operand(),
29061            op1.as_operand(),
29062            op2.as_operand(),
29063            &NOREG,
29064        );
29065    }
29066}
29067
29068/// `VFNMSUB213SH_MASKZ_ER`.
29069///
29070/// Supported operand variants:
29071///
29072/// ```text
29073/// +---+---------------+
29074/// | # | Operands      |
29075/// +---+---------------+
29076/// | 1 | Xmm, Xmm, Xmm |
29077/// +---+---------------+
29078/// ```
29079pub trait Vfnmsub213shMaskzErEmitter<A, B, C> {
29080    fn vfnmsub213sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
29081}
29082
29083impl<'a> Vfnmsub213shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29084    fn vfnmsub213sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29085        self.emit(
29086            VFNMSUB213SHRRR_MASKZ_ER,
29087            op0.as_operand(),
29088            op1.as_operand(),
29089            op2.as_operand(),
29090            &NOREG,
29091        );
29092    }
29093}
29094
29095/// `VFNMSUB231PH`.
29096///
29097/// Supported operand variants:
29098///
29099/// ```text
29100/// +---+---------------+
29101/// | # | Operands      |
29102/// +---+---------------+
29103/// | 1 | Xmm, Xmm, Mem |
29104/// | 2 | Xmm, Xmm, Xmm |
29105/// | 3 | Ymm, Ymm, Mem |
29106/// | 4 | Ymm, Ymm, Ymm |
29107/// | 5 | Zmm, Zmm, Mem |
29108/// | 6 | Zmm, Zmm, Zmm |
29109/// +---+---------------+
29110/// ```
29111pub trait Vfnmsub231phEmitter<A, B, C> {
29112    fn vfnmsub231ph(&mut self, op0: A, op1: B, op2: C);
29113}
29114
29115impl<'a> Vfnmsub231phEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29116    fn vfnmsub231ph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29117        self.emit(
29118            VFNMSUB231PH128RRR,
29119            op0.as_operand(),
29120            op1.as_operand(),
29121            op2.as_operand(),
29122            &NOREG,
29123        );
29124    }
29125}
29126
29127impl<'a> Vfnmsub231phEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29128    fn vfnmsub231ph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29129        self.emit(
29130            VFNMSUB231PH128RRM,
29131            op0.as_operand(),
29132            op1.as_operand(),
29133            op2.as_operand(),
29134            &NOREG,
29135        );
29136    }
29137}
29138
29139impl<'a> Vfnmsub231phEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
29140    fn vfnmsub231ph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
29141        self.emit(
29142            VFNMSUB231PH256RRR,
29143            op0.as_operand(),
29144            op1.as_operand(),
29145            op2.as_operand(),
29146            &NOREG,
29147        );
29148    }
29149}
29150
29151impl<'a> Vfnmsub231phEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
29152    fn vfnmsub231ph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
29153        self.emit(
29154            VFNMSUB231PH256RRM,
29155            op0.as_operand(),
29156            op1.as_operand(),
29157            op2.as_operand(),
29158            &NOREG,
29159        );
29160    }
29161}
29162
29163impl<'a> Vfnmsub231phEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
29164    fn vfnmsub231ph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
29165        self.emit(
29166            VFNMSUB231PH512RRR,
29167            op0.as_operand(),
29168            op1.as_operand(),
29169            op2.as_operand(),
29170            &NOREG,
29171        );
29172    }
29173}
29174
29175impl<'a> Vfnmsub231phEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
29176    fn vfnmsub231ph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
29177        self.emit(
29178            VFNMSUB231PH512RRM,
29179            op0.as_operand(),
29180            op1.as_operand(),
29181            op2.as_operand(),
29182            &NOREG,
29183        );
29184    }
29185}
29186
29187/// `VFNMSUB231PH_ER`.
29188///
29189/// Supported operand variants:
29190///
29191/// ```text
29192/// +---+---------------+
29193/// | # | Operands      |
29194/// +---+---------------+
29195/// | 1 | Zmm, Zmm, Zmm |
29196/// +---+---------------+
29197/// ```
29198pub trait Vfnmsub231phErEmitter<A, B, C> {
29199    fn vfnmsub231ph_er(&mut self, op0: A, op1: B, op2: C);
29200}
29201
29202impl<'a> Vfnmsub231phErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
29203    fn vfnmsub231ph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
29204        self.emit(
29205            VFNMSUB231PH512RRR_ER,
29206            op0.as_operand(),
29207            op1.as_operand(),
29208            op2.as_operand(),
29209            &NOREG,
29210        );
29211    }
29212}
29213
29214/// `VFNMSUB231PH_MASK`.
29215///
29216/// Supported operand variants:
29217///
29218/// ```text
29219/// +---+---------------+
29220/// | # | Operands      |
29221/// +---+---------------+
29222/// | 1 | Xmm, Xmm, Mem |
29223/// | 2 | Xmm, Xmm, Xmm |
29224/// | 3 | Ymm, Ymm, Mem |
29225/// | 4 | Ymm, Ymm, Ymm |
29226/// | 5 | Zmm, Zmm, Mem |
29227/// | 6 | Zmm, Zmm, Zmm |
29228/// +---+---------------+
29229/// ```
29230pub trait Vfnmsub231phMaskEmitter<A, B, C> {
29231    fn vfnmsub231ph_mask(&mut self, op0: A, op1: B, op2: C);
29232}
29233
29234impl<'a> Vfnmsub231phMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29235    fn vfnmsub231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29236        self.emit(
29237            VFNMSUB231PH128RRR_MASK,
29238            op0.as_operand(),
29239            op1.as_operand(),
29240            op2.as_operand(),
29241            &NOREG,
29242        );
29243    }
29244}
29245
29246impl<'a> Vfnmsub231phMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29247    fn vfnmsub231ph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29248        self.emit(
29249            VFNMSUB231PH128RRM_MASK,
29250            op0.as_operand(),
29251            op1.as_operand(),
29252            op2.as_operand(),
29253            &NOREG,
29254        );
29255    }
29256}
29257
29258impl<'a> Vfnmsub231phMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
29259    fn vfnmsub231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
29260        self.emit(
29261            VFNMSUB231PH256RRR_MASK,
29262            op0.as_operand(),
29263            op1.as_operand(),
29264            op2.as_operand(),
29265            &NOREG,
29266        );
29267    }
29268}
29269
29270impl<'a> Vfnmsub231phMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
29271    fn vfnmsub231ph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
29272        self.emit(
29273            VFNMSUB231PH256RRM_MASK,
29274            op0.as_operand(),
29275            op1.as_operand(),
29276            op2.as_operand(),
29277            &NOREG,
29278        );
29279    }
29280}
29281
29282impl<'a> Vfnmsub231phMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
29283    fn vfnmsub231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
29284        self.emit(
29285            VFNMSUB231PH512RRR_MASK,
29286            op0.as_operand(),
29287            op1.as_operand(),
29288            op2.as_operand(),
29289            &NOREG,
29290        );
29291    }
29292}
29293
29294impl<'a> Vfnmsub231phMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
29295    fn vfnmsub231ph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
29296        self.emit(
29297            VFNMSUB231PH512RRM_MASK,
29298            op0.as_operand(),
29299            op1.as_operand(),
29300            op2.as_operand(),
29301            &NOREG,
29302        );
29303    }
29304}
29305
29306/// `VFNMSUB231PH_MASK_ER`.
29307///
29308/// Supported operand variants:
29309///
29310/// ```text
29311/// +---+---------------+
29312/// | # | Operands      |
29313/// +---+---------------+
29314/// | 1 | Zmm, Zmm, Zmm |
29315/// +---+---------------+
29316/// ```
29317pub trait Vfnmsub231phMaskErEmitter<A, B, C> {
29318    fn vfnmsub231ph_mask_er(&mut self, op0: A, op1: B, op2: C);
29319}
29320
29321impl<'a> Vfnmsub231phMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
29322    fn vfnmsub231ph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
29323        self.emit(
29324            VFNMSUB231PH512RRR_MASK_ER,
29325            op0.as_operand(),
29326            op1.as_operand(),
29327            op2.as_operand(),
29328            &NOREG,
29329        );
29330    }
29331}
29332
29333/// `VFNMSUB231PH_MASKZ`.
29334///
29335/// Supported operand variants:
29336///
29337/// ```text
29338/// +---+---------------+
29339/// | # | Operands      |
29340/// +---+---------------+
29341/// | 1 | Xmm, Xmm, Mem |
29342/// | 2 | Xmm, Xmm, Xmm |
29343/// | 3 | Ymm, Ymm, Mem |
29344/// | 4 | Ymm, Ymm, Ymm |
29345/// | 5 | Zmm, Zmm, Mem |
29346/// | 6 | Zmm, Zmm, Zmm |
29347/// +---+---------------+
29348/// ```
29349pub trait Vfnmsub231phMaskzEmitter<A, B, C> {
29350    fn vfnmsub231ph_maskz(&mut self, op0: A, op1: B, op2: C);
29351}
29352
29353impl<'a> Vfnmsub231phMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29354    fn vfnmsub231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29355        self.emit(
29356            VFNMSUB231PH128RRR_MASKZ,
29357            op0.as_operand(),
29358            op1.as_operand(),
29359            op2.as_operand(),
29360            &NOREG,
29361        );
29362    }
29363}
29364
29365impl<'a> Vfnmsub231phMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29366    fn vfnmsub231ph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29367        self.emit(
29368            VFNMSUB231PH128RRM_MASKZ,
29369            op0.as_operand(),
29370            op1.as_operand(),
29371            op2.as_operand(),
29372            &NOREG,
29373        );
29374    }
29375}
29376
29377impl<'a> Vfnmsub231phMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
29378    fn vfnmsub231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
29379        self.emit(
29380            VFNMSUB231PH256RRR_MASKZ,
29381            op0.as_operand(),
29382            op1.as_operand(),
29383            op2.as_operand(),
29384            &NOREG,
29385        );
29386    }
29387}
29388
29389impl<'a> Vfnmsub231phMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
29390    fn vfnmsub231ph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
29391        self.emit(
29392            VFNMSUB231PH256RRM_MASKZ,
29393            op0.as_operand(),
29394            op1.as_operand(),
29395            op2.as_operand(),
29396            &NOREG,
29397        );
29398    }
29399}
29400
29401impl<'a> Vfnmsub231phMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
29402    fn vfnmsub231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
29403        self.emit(
29404            VFNMSUB231PH512RRR_MASKZ,
29405            op0.as_operand(),
29406            op1.as_operand(),
29407            op2.as_operand(),
29408            &NOREG,
29409        );
29410    }
29411}
29412
29413impl<'a> Vfnmsub231phMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
29414    fn vfnmsub231ph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
29415        self.emit(
29416            VFNMSUB231PH512RRM_MASKZ,
29417            op0.as_operand(),
29418            op1.as_operand(),
29419            op2.as_operand(),
29420            &NOREG,
29421        );
29422    }
29423}
29424
29425/// `VFNMSUB231PH_MASKZ_ER`.
29426///
29427/// Supported operand variants:
29428///
29429/// ```text
29430/// +---+---------------+
29431/// | # | Operands      |
29432/// +---+---------------+
29433/// | 1 | Zmm, Zmm, Zmm |
29434/// +---+---------------+
29435/// ```
29436pub trait Vfnmsub231phMaskzErEmitter<A, B, C> {
29437    fn vfnmsub231ph_maskz_er(&mut self, op0: A, op1: B, op2: C);
29438}
29439
29440impl<'a> Vfnmsub231phMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
29441    fn vfnmsub231ph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
29442        self.emit(
29443            VFNMSUB231PH512RRR_MASKZ_ER,
29444            op0.as_operand(),
29445            op1.as_operand(),
29446            op2.as_operand(),
29447            &NOREG,
29448        );
29449    }
29450}
29451
29452/// `VFNMSUB231SH`.
29453///
29454/// Supported operand variants:
29455///
29456/// ```text
29457/// +---+---------------+
29458/// | # | Operands      |
29459/// +---+---------------+
29460/// | 1 | Xmm, Xmm, Mem |
29461/// | 2 | Xmm, Xmm, Xmm |
29462/// +---+---------------+
29463/// ```
29464pub trait Vfnmsub231shEmitter<A, B, C> {
29465    fn vfnmsub231sh(&mut self, op0: A, op1: B, op2: C);
29466}
29467
29468impl<'a> Vfnmsub231shEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29469    fn vfnmsub231sh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29470        self.emit(
29471            VFNMSUB231SHRRR,
29472            op0.as_operand(),
29473            op1.as_operand(),
29474            op2.as_operand(),
29475            &NOREG,
29476        );
29477    }
29478}
29479
29480impl<'a> Vfnmsub231shEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29481    fn vfnmsub231sh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29482        self.emit(
29483            VFNMSUB231SHRRM,
29484            op0.as_operand(),
29485            op1.as_operand(),
29486            op2.as_operand(),
29487            &NOREG,
29488        );
29489    }
29490}
29491
29492/// `VFNMSUB231SH_ER`.
29493///
29494/// Supported operand variants:
29495///
29496/// ```text
29497/// +---+---------------+
29498/// | # | Operands      |
29499/// +---+---------------+
29500/// | 1 | Xmm, Xmm, Xmm |
29501/// +---+---------------+
29502/// ```
29503pub trait Vfnmsub231shErEmitter<A, B, C> {
29504    fn vfnmsub231sh_er(&mut self, op0: A, op1: B, op2: C);
29505}
29506
29507impl<'a> Vfnmsub231shErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29508    fn vfnmsub231sh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29509        self.emit(
29510            VFNMSUB231SHRRR_ER,
29511            op0.as_operand(),
29512            op1.as_operand(),
29513            op2.as_operand(),
29514            &NOREG,
29515        );
29516    }
29517}
29518
29519/// `VFNMSUB231SH_MASK`.
29520///
29521/// Supported operand variants:
29522///
29523/// ```text
29524/// +---+---------------+
29525/// | # | Operands      |
29526/// +---+---------------+
29527/// | 1 | Xmm, Xmm, Mem |
29528/// | 2 | Xmm, Xmm, Xmm |
29529/// +---+---------------+
29530/// ```
29531pub trait Vfnmsub231shMaskEmitter<A, B, C> {
29532    fn vfnmsub231sh_mask(&mut self, op0: A, op1: B, op2: C);
29533}
29534
29535impl<'a> Vfnmsub231shMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29536    fn vfnmsub231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29537        self.emit(
29538            VFNMSUB231SHRRR_MASK,
29539            op0.as_operand(),
29540            op1.as_operand(),
29541            op2.as_operand(),
29542            &NOREG,
29543        );
29544    }
29545}
29546
29547impl<'a> Vfnmsub231shMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29548    fn vfnmsub231sh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29549        self.emit(
29550            VFNMSUB231SHRRM_MASK,
29551            op0.as_operand(),
29552            op1.as_operand(),
29553            op2.as_operand(),
29554            &NOREG,
29555        );
29556    }
29557}
29558
29559/// `VFNMSUB231SH_MASK_ER`.
29560///
29561/// Supported operand variants:
29562///
29563/// ```text
29564/// +---+---------------+
29565/// | # | Operands      |
29566/// +---+---------------+
29567/// | 1 | Xmm, Xmm, Xmm |
29568/// +---+---------------+
29569/// ```
29570pub trait Vfnmsub231shMaskErEmitter<A, B, C> {
29571    fn vfnmsub231sh_mask_er(&mut self, op0: A, op1: B, op2: C);
29572}
29573
29574impl<'a> Vfnmsub231shMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29575    fn vfnmsub231sh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29576        self.emit(
29577            VFNMSUB231SHRRR_MASK_ER,
29578            op0.as_operand(),
29579            op1.as_operand(),
29580            op2.as_operand(),
29581            &NOREG,
29582        );
29583    }
29584}
29585
29586/// `VFNMSUB231SH_MASKZ`.
29587///
29588/// Supported operand variants:
29589///
29590/// ```text
29591/// +---+---------------+
29592/// | # | Operands      |
29593/// +---+---------------+
29594/// | 1 | Xmm, Xmm, Mem |
29595/// | 2 | Xmm, Xmm, Xmm |
29596/// +---+---------------+
29597/// ```
29598pub trait Vfnmsub231shMaskzEmitter<A, B, C> {
29599    fn vfnmsub231sh_maskz(&mut self, op0: A, op1: B, op2: C);
29600}
29601
29602impl<'a> Vfnmsub231shMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29603    fn vfnmsub231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29604        self.emit(
29605            VFNMSUB231SHRRR_MASKZ,
29606            op0.as_operand(),
29607            op1.as_operand(),
29608            op2.as_operand(),
29609            &NOREG,
29610        );
29611    }
29612}
29613
29614impl<'a> Vfnmsub231shMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
29615    fn vfnmsub231sh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
29616        self.emit(
29617            VFNMSUB231SHRRM_MASKZ,
29618            op0.as_operand(),
29619            op1.as_operand(),
29620            op2.as_operand(),
29621            &NOREG,
29622        );
29623    }
29624}
29625
29626/// `VFNMSUB231SH_MASKZ_ER`.
29627///
29628/// Supported operand variants:
29629///
29630/// ```text
29631/// +---+---------------+
29632/// | # | Operands      |
29633/// +---+---------------+
29634/// | 1 | Xmm, Xmm, Xmm |
29635/// +---+---------------+
29636/// ```
29637pub trait Vfnmsub231shMaskzErEmitter<A, B, C> {
29638    fn vfnmsub231sh_maskz_er(&mut self, op0: A, op1: B, op2: C);
29639}
29640
29641impl<'a> Vfnmsub231shMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
29642    fn vfnmsub231sh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
29643        self.emit(
29644            VFNMSUB231SHRRR_MASKZ_ER,
29645            op0.as_operand(),
29646            op1.as_operand(),
29647            op2.as_operand(),
29648            &NOREG,
29649        );
29650    }
29651}
29652
29653/// `VFPCLASSPH`.
29654///
29655/// Supported operand variants:
29656///
29657/// ```text
29658/// +---+----------------+
29659/// | # | Operands       |
29660/// +---+----------------+
29661/// | 1 | KReg, Mem, Imm |
29662/// | 2 | KReg, Xmm, Imm |
29663/// | 3 | KReg, Ymm, Imm |
29664/// | 4 | KReg, Zmm, Imm |
29665/// +---+----------------+
29666/// ```
29667pub trait VfpclassphEmitter<A, B, C> {
29668    fn vfpclassph(&mut self, op0: A, op1: B, op2: C);
29669}
29670
29671impl<'a> VfpclassphEmitter<KReg, Xmm, Imm> for Assembler<'a> {
29672    fn vfpclassph(&mut self, op0: KReg, op1: Xmm, op2: Imm) {
29673        self.emit(
29674            VFPCLASSPH128KRI,
29675            op0.as_operand(),
29676            op1.as_operand(),
29677            op2.as_operand(),
29678            &NOREG,
29679        );
29680    }
29681}
29682
29683impl<'a> VfpclassphEmitter<KReg, Mem, Imm> for Assembler<'a> {
29684    fn vfpclassph(&mut self, op0: KReg, op1: Mem, op2: Imm) {
29685        self.emit(
29686            VFPCLASSPH128KMI,
29687            op0.as_operand(),
29688            op1.as_operand(),
29689            op2.as_operand(),
29690            &NOREG,
29691        );
29692    }
29693}
29694
29695impl<'a> VfpclassphEmitter<KReg, Ymm, Imm> for Assembler<'a> {
29696    fn vfpclassph(&mut self, op0: KReg, op1: Ymm, op2: Imm) {
29697        self.emit(
29698            VFPCLASSPH256KRI,
29699            op0.as_operand(),
29700            op1.as_operand(),
29701            op2.as_operand(),
29702            &NOREG,
29703        );
29704    }
29705}
29706
29707impl<'a> VfpclassphEmitter<KReg, Zmm, Imm> for Assembler<'a> {
29708    fn vfpclassph(&mut self, op0: KReg, op1: Zmm, op2: Imm) {
29709        self.emit(
29710            VFPCLASSPH512KRI,
29711            op0.as_operand(),
29712            op1.as_operand(),
29713            op2.as_operand(),
29714            &NOREG,
29715        );
29716    }
29717}
29718
29719/// `VFPCLASSPH_MASK`.
29720///
29721/// Supported operand variants:
29722///
29723/// ```text
29724/// +---+----------------+
29725/// | # | Operands       |
29726/// +---+----------------+
29727/// | 1 | KReg, Mem, Imm |
29728/// | 2 | KReg, Xmm, Imm |
29729/// | 3 | KReg, Ymm, Imm |
29730/// | 4 | KReg, Zmm, Imm |
29731/// +---+----------------+
29732/// ```
29733pub trait VfpclassphMaskEmitter<A, B, C> {
29734    fn vfpclassph_mask(&mut self, op0: A, op1: B, op2: C);
29735}
29736
29737impl<'a> VfpclassphMaskEmitter<KReg, Xmm, Imm> for Assembler<'a> {
29738    fn vfpclassph_mask(&mut self, op0: KReg, op1: Xmm, op2: Imm) {
29739        self.emit(
29740            VFPCLASSPH128KRI_MASK,
29741            op0.as_operand(),
29742            op1.as_operand(),
29743            op2.as_operand(),
29744            &NOREG,
29745        );
29746    }
29747}
29748
29749impl<'a> VfpclassphMaskEmitter<KReg, Mem, Imm> for Assembler<'a> {
29750    fn vfpclassph_mask(&mut self, op0: KReg, op1: Mem, op2: Imm) {
29751        self.emit(
29752            VFPCLASSPH128KMI_MASK,
29753            op0.as_operand(),
29754            op1.as_operand(),
29755            op2.as_operand(),
29756            &NOREG,
29757        );
29758    }
29759}
29760
29761impl<'a> VfpclassphMaskEmitter<KReg, Ymm, Imm> for Assembler<'a> {
29762    fn vfpclassph_mask(&mut self, op0: KReg, op1: Ymm, op2: Imm) {
29763        self.emit(
29764            VFPCLASSPH256KRI_MASK,
29765            op0.as_operand(),
29766            op1.as_operand(),
29767            op2.as_operand(),
29768            &NOREG,
29769        );
29770    }
29771}
29772
29773impl<'a> VfpclassphMaskEmitter<KReg, Zmm, Imm> for Assembler<'a> {
29774    fn vfpclassph_mask(&mut self, op0: KReg, op1: Zmm, op2: Imm) {
29775        self.emit(
29776            VFPCLASSPH512KRI_MASK,
29777            op0.as_operand(),
29778            op1.as_operand(),
29779            op2.as_operand(),
29780            &NOREG,
29781        );
29782    }
29783}
29784
29785/// `VFPCLASSSH`.
29786///
29787/// Supported operand variants:
29788///
29789/// ```text
29790/// +---+----------------+
29791/// | # | Operands       |
29792/// +---+----------------+
29793/// | 1 | KReg, Mem, Imm |
29794/// | 2 | KReg, Xmm, Imm |
29795/// +---+----------------+
29796/// ```
29797pub trait VfpclassshEmitter<A, B, C> {
29798    fn vfpclasssh(&mut self, op0: A, op1: B, op2: C);
29799}
29800
29801impl<'a> VfpclassshEmitter<KReg, Xmm, Imm> for Assembler<'a> {
29802    fn vfpclasssh(&mut self, op0: KReg, op1: Xmm, op2: Imm) {
29803        self.emit(
29804            VFPCLASSSHKRI,
29805            op0.as_operand(),
29806            op1.as_operand(),
29807            op2.as_operand(),
29808            &NOREG,
29809        );
29810    }
29811}
29812
29813impl<'a> VfpclassshEmitter<KReg, Mem, Imm> for Assembler<'a> {
29814    fn vfpclasssh(&mut self, op0: KReg, op1: Mem, op2: Imm) {
29815        self.emit(
29816            VFPCLASSSHKMI,
29817            op0.as_operand(),
29818            op1.as_operand(),
29819            op2.as_operand(),
29820            &NOREG,
29821        );
29822    }
29823}
29824
29825/// `VFPCLASSSH_MASK`.
29826///
29827/// Supported operand variants:
29828///
29829/// ```text
29830/// +---+----------------+
29831/// | # | Operands       |
29832/// +---+----------------+
29833/// | 1 | KReg, Mem, Imm |
29834/// | 2 | KReg, Xmm, Imm |
29835/// +---+----------------+
29836/// ```
29837pub trait VfpclassshMaskEmitter<A, B, C> {
29838    fn vfpclasssh_mask(&mut self, op0: A, op1: B, op2: C);
29839}
29840
29841impl<'a> VfpclassshMaskEmitter<KReg, Xmm, Imm> for Assembler<'a> {
29842    fn vfpclasssh_mask(&mut self, op0: KReg, op1: Xmm, op2: Imm) {
29843        self.emit(
29844            VFPCLASSSHKRI_MASK,
29845            op0.as_operand(),
29846            op1.as_operand(),
29847            op2.as_operand(),
29848            &NOREG,
29849        );
29850    }
29851}
29852
29853impl<'a> VfpclassshMaskEmitter<KReg, Mem, Imm> for Assembler<'a> {
29854    fn vfpclasssh_mask(&mut self, op0: KReg, op1: Mem, op2: Imm) {
29855        self.emit(
29856            VFPCLASSSHKMI_MASK,
29857            op0.as_operand(),
29858            op1.as_operand(),
29859            op2.as_operand(),
29860            &NOREG,
29861        );
29862    }
29863}
29864
29865/// `VGETEXPPH`.
29866///
29867/// Supported operand variants:
29868///
29869/// ```text
29870/// +---+----------+
29871/// | # | Operands |
29872/// +---+----------+
29873/// | 1 | Xmm, Mem |
29874/// | 2 | Xmm, Xmm |
29875/// | 3 | Ymm, Mem |
29876/// | 4 | Ymm, Ymm |
29877/// | 5 | Zmm, Mem |
29878/// | 6 | Zmm, Zmm |
29879/// +---+----------+
29880/// ```
29881pub trait VgetexpphEmitter<A, B> {
29882    fn vgetexpph(&mut self, op0: A, op1: B);
29883}
29884
29885impl<'a> VgetexpphEmitter<Xmm, Xmm> for Assembler<'a> {
29886    fn vgetexpph(&mut self, op0: Xmm, op1: Xmm) {
29887        self.emit(
29888            VGETEXPPH128RR,
29889            op0.as_operand(),
29890            op1.as_operand(),
29891            &NOREG,
29892            &NOREG,
29893        );
29894    }
29895}
29896
29897impl<'a> VgetexpphEmitter<Xmm, Mem> for Assembler<'a> {
29898    fn vgetexpph(&mut self, op0: Xmm, op1: Mem) {
29899        self.emit(
29900            VGETEXPPH128RM,
29901            op0.as_operand(),
29902            op1.as_operand(),
29903            &NOREG,
29904            &NOREG,
29905        );
29906    }
29907}
29908
29909impl<'a> VgetexpphEmitter<Ymm, Ymm> for Assembler<'a> {
29910    fn vgetexpph(&mut self, op0: Ymm, op1: Ymm) {
29911        self.emit(
29912            VGETEXPPH256RR,
29913            op0.as_operand(),
29914            op1.as_operand(),
29915            &NOREG,
29916            &NOREG,
29917        );
29918    }
29919}
29920
29921impl<'a> VgetexpphEmitter<Ymm, Mem> for Assembler<'a> {
29922    fn vgetexpph(&mut self, op0: Ymm, op1: Mem) {
29923        self.emit(
29924            VGETEXPPH256RM,
29925            op0.as_operand(),
29926            op1.as_operand(),
29927            &NOREG,
29928            &NOREG,
29929        );
29930    }
29931}
29932
29933impl<'a> VgetexpphEmitter<Zmm, Zmm> for Assembler<'a> {
29934    fn vgetexpph(&mut self, op0: Zmm, op1: Zmm) {
29935        self.emit(
29936            VGETEXPPH512RR,
29937            op0.as_operand(),
29938            op1.as_operand(),
29939            &NOREG,
29940            &NOREG,
29941        );
29942    }
29943}
29944
29945impl<'a> VgetexpphEmitter<Zmm, Mem> for Assembler<'a> {
29946    fn vgetexpph(&mut self, op0: Zmm, op1: Mem) {
29947        self.emit(
29948            VGETEXPPH512RM,
29949            op0.as_operand(),
29950            op1.as_operand(),
29951            &NOREG,
29952            &NOREG,
29953        );
29954    }
29955}
29956
29957/// `VGETEXPPH_MASK`.
29958///
29959/// Supported operand variants:
29960///
29961/// ```text
29962/// +---+----------+
29963/// | # | Operands |
29964/// +---+----------+
29965/// | 1 | Xmm, Mem |
29966/// | 2 | Xmm, Xmm |
29967/// | 3 | Ymm, Mem |
29968/// | 4 | Ymm, Ymm |
29969/// | 5 | Zmm, Mem |
29970/// | 6 | Zmm, Zmm |
29971/// +---+----------+
29972/// ```
29973pub trait VgetexpphMaskEmitter<A, B> {
29974    fn vgetexpph_mask(&mut self, op0: A, op1: B);
29975}
29976
29977impl<'a> VgetexpphMaskEmitter<Xmm, Xmm> for Assembler<'a> {
29978    fn vgetexpph_mask(&mut self, op0: Xmm, op1: Xmm) {
29979        self.emit(
29980            VGETEXPPH128RR_MASK,
29981            op0.as_operand(),
29982            op1.as_operand(),
29983            &NOREG,
29984            &NOREG,
29985        );
29986    }
29987}
29988
29989impl<'a> VgetexpphMaskEmitter<Xmm, Mem> for Assembler<'a> {
29990    fn vgetexpph_mask(&mut self, op0: Xmm, op1: Mem) {
29991        self.emit(
29992            VGETEXPPH128RM_MASK,
29993            op0.as_operand(),
29994            op1.as_operand(),
29995            &NOREG,
29996            &NOREG,
29997        );
29998    }
29999}
30000
30001impl<'a> VgetexpphMaskEmitter<Ymm, Ymm> for Assembler<'a> {
30002    fn vgetexpph_mask(&mut self, op0: Ymm, op1: Ymm) {
30003        self.emit(
30004            VGETEXPPH256RR_MASK,
30005            op0.as_operand(),
30006            op1.as_operand(),
30007            &NOREG,
30008            &NOREG,
30009        );
30010    }
30011}
30012
30013impl<'a> VgetexpphMaskEmitter<Ymm, Mem> for Assembler<'a> {
30014    fn vgetexpph_mask(&mut self, op0: Ymm, op1: Mem) {
30015        self.emit(
30016            VGETEXPPH256RM_MASK,
30017            op0.as_operand(),
30018            op1.as_operand(),
30019            &NOREG,
30020            &NOREG,
30021        );
30022    }
30023}
30024
30025impl<'a> VgetexpphMaskEmitter<Zmm, Zmm> for Assembler<'a> {
30026    fn vgetexpph_mask(&mut self, op0: Zmm, op1: Zmm) {
30027        self.emit(
30028            VGETEXPPH512RR_MASK,
30029            op0.as_operand(),
30030            op1.as_operand(),
30031            &NOREG,
30032            &NOREG,
30033        );
30034    }
30035}
30036
30037impl<'a> VgetexpphMaskEmitter<Zmm, Mem> for Assembler<'a> {
30038    fn vgetexpph_mask(&mut self, op0: Zmm, op1: Mem) {
30039        self.emit(
30040            VGETEXPPH512RM_MASK,
30041            op0.as_operand(),
30042            op1.as_operand(),
30043            &NOREG,
30044            &NOREG,
30045        );
30046    }
30047}
30048
30049/// `VGETEXPPH_MASK_SAE`.
30050///
30051/// Supported operand variants:
30052///
30053/// ```text
30054/// +---+----------+
30055/// | # | Operands |
30056/// +---+----------+
30057/// | 1 | Zmm, Zmm |
30058/// +---+----------+
30059/// ```
30060pub trait VgetexpphMaskSaeEmitter<A, B> {
30061    fn vgetexpph_mask_sae(&mut self, op0: A, op1: B);
30062}
30063
30064impl<'a> VgetexpphMaskSaeEmitter<Zmm, Zmm> for Assembler<'a> {
30065    fn vgetexpph_mask_sae(&mut self, op0: Zmm, op1: Zmm) {
30066        self.emit(
30067            VGETEXPPH512RR_MASK_SAE,
30068            op0.as_operand(),
30069            op1.as_operand(),
30070            &NOREG,
30071            &NOREG,
30072        );
30073    }
30074}
30075
30076/// `VGETEXPPH_MASKZ`.
30077///
30078/// Supported operand variants:
30079///
30080/// ```text
30081/// +---+----------+
30082/// | # | Operands |
30083/// +---+----------+
30084/// | 1 | Xmm, Mem |
30085/// | 2 | Xmm, Xmm |
30086/// | 3 | Ymm, Mem |
30087/// | 4 | Ymm, Ymm |
30088/// | 5 | Zmm, Mem |
30089/// | 6 | Zmm, Zmm |
30090/// +---+----------+
30091/// ```
30092pub trait VgetexpphMaskzEmitter<A, B> {
30093    fn vgetexpph_maskz(&mut self, op0: A, op1: B);
30094}
30095
30096impl<'a> VgetexpphMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
30097    fn vgetexpph_maskz(&mut self, op0: Xmm, op1: Xmm) {
30098        self.emit(
30099            VGETEXPPH128RR_MASKZ,
30100            op0.as_operand(),
30101            op1.as_operand(),
30102            &NOREG,
30103            &NOREG,
30104        );
30105    }
30106}
30107
30108impl<'a> VgetexpphMaskzEmitter<Xmm, Mem> for Assembler<'a> {
30109    fn vgetexpph_maskz(&mut self, op0: Xmm, op1: Mem) {
30110        self.emit(
30111            VGETEXPPH128RM_MASKZ,
30112            op0.as_operand(),
30113            op1.as_operand(),
30114            &NOREG,
30115            &NOREG,
30116        );
30117    }
30118}
30119
30120impl<'a> VgetexpphMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
30121    fn vgetexpph_maskz(&mut self, op0: Ymm, op1: Ymm) {
30122        self.emit(
30123            VGETEXPPH256RR_MASKZ,
30124            op0.as_operand(),
30125            op1.as_operand(),
30126            &NOREG,
30127            &NOREG,
30128        );
30129    }
30130}
30131
30132impl<'a> VgetexpphMaskzEmitter<Ymm, Mem> for Assembler<'a> {
30133    fn vgetexpph_maskz(&mut self, op0: Ymm, op1: Mem) {
30134        self.emit(
30135            VGETEXPPH256RM_MASKZ,
30136            op0.as_operand(),
30137            op1.as_operand(),
30138            &NOREG,
30139            &NOREG,
30140        );
30141    }
30142}
30143
30144impl<'a> VgetexpphMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
30145    fn vgetexpph_maskz(&mut self, op0: Zmm, op1: Zmm) {
30146        self.emit(
30147            VGETEXPPH512RR_MASKZ,
30148            op0.as_operand(),
30149            op1.as_operand(),
30150            &NOREG,
30151            &NOREG,
30152        );
30153    }
30154}
30155
30156impl<'a> VgetexpphMaskzEmitter<Zmm, Mem> for Assembler<'a> {
30157    fn vgetexpph_maskz(&mut self, op0: Zmm, op1: Mem) {
30158        self.emit(
30159            VGETEXPPH512RM_MASKZ,
30160            op0.as_operand(),
30161            op1.as_operand(),
30162            &NOREG,
30163            &NOREG,
30164        );
30165    }
30166}
30167
30168/// `VGETEXPPH_MASKZ_SAE`.
30169///
30170/// Supported operand variants:
30171///
30172/// ```text
30173/// +---+----------+
30174/// | # | Operands |
30175/// +---+----------+
30176/// | 1 | Zmm, Zmm |
30177/// +---+----------+
30178/// ```
30179pub trait VgetexpphMaskzSaeEmitter<A, B> {
30180    fn vgetexpph_maskz_sae(&mut self, op0: A, op1: B);
30181}
30182
30183impl<'a> VgetexpphMaskzSaeEmitter<Zmm, Zmm> for Assembler<'a> {
30184    fn vgetexpph_maskz_sae(&mut self, op0: Zmm, op1: Zmm) {
30185        self.emit(
30186            VGETEXPPH512RR_MASKZ_SAE,
30187            op0.as_operand(),
30188            op1.as_operand(),
30189            &NOREG,
30190            &NOREG,
30191        );
30192    }
30193}
30194
30195/// `VGETEXPPH_SAE`.
30196///
30197/// Supported operand variants:
30198///
30199/// ```text
30200/// +---+----------+
30201/// | # | Operands |
30202/// +---+----------+
30203/// | 1 | Zmm, Zmm |
30204/// +---+----------+
30205/// ```
30206pub trait VgetexpphSaeEmitter<A, B> {
30207    fn vgetexpph_sae(&mut self, op0: A, op1: B);
30208}
30209
30210impl<'a> VgetexpphSaeEmitter<Zmm, Zmm> for Assembler<'a> {
30211    fn vgetexpph_sae(&mut self, op0: Zmm, op1: Zmm) {
30212        self.emit(
30213            VGETEXPPH512RR_SAE,
30214            op0.as_operand(),
30215            op1.as_operand(),
30216            &NOREG,
30217            &NOREG,
30218        );
30219    }
30220}
30221
30222/// `VGETEXPSH`.
30223///
30224/// Supported operand variants:
30225///
30226/// ```text
30227/// +---+---------------+
30228/// | # | Operands      |
30229/// +---+---------------+
30230/// | 1 | Xmm, Xmm, Mem |
30231/// | 2 | Xmm, Xmm, Xmm |
30232/// +---+---------------+
30233/// ```
30234pub trait VgetexpshEmitter<A, B, C> {
30235    fn vgetexpsh(&mut self, op0: A, op1: B, op2: C);
30236}
30237
30238impl<'a> VgetexpshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
30239    fn vgetexpsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
30240        self.emit(
30241            VGETEXPSHRRR,
30242            op0.as_operand(),
30243            op1.as_operand(),
30244            op2.as_operand(),
30245            &NOREG,
30246        );
30247    }
30248}
30249
30250impl<'a> VgetexpshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
30251    fn vgetexpsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
30252        self.emit(
30253            VGETEXPSHRRM,
30254            op0.as_operand(),
30255            op1.as_operand(),
30256            op2.as_operand(),
30257            &NOREG,
30258        );
30259    }
30260}
30261
30262/// `VGETEXPSH_MASK`.
30263///
30264/// Supported operand variants:
30265///
30266/// ```text
30267/// +---+---------------+
30268/// | # | Operands      |
30269/// +---+---------------+
30270/// | 1 | Xmm, Xmm, Mem |
30271/// | 2 | Xmm, Xmm, Xmm |
30272/// +---+---------------+
30273/// ```
30274pub trait VgetexpshMaskEmitter<A, B, C> {
30275    fn vgetexpsh_mask(&mut self, op0: A, op1: B, op2: C);
30276}
30277
30278impl<'a> VgetexpshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
30279    fn vgetexpsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
30280        self.emit(
30281            VGETEXPSHRRR_MASK,
30282            op0.as_operand(),
30283            op1.as_operand(),
30284            op2.as_operand(),
30285            &NOREG,
30286        );
30287    }
30288}
30289
30290impl<'a> VgetexpshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
30291    fn vgetexpsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
30292        self.emit(
30293            VGETEXPSHRRM_MASK,
30294            op0.as_operand(),
30295            op1.as_operand(),
30296            op2.as_operand(),
30297            &NOREG,
30298        );
30299    }
30300}
30301
30302/// `VGETEXPSH_MASK_SAE`.
30303///
30304/// Supported operand variants:
30305///
30306/// ```text
30307/// +---+---------------+
30308/// | # | Operands      |
30309/// +---+---------------+
30310/// | 1 | Xmm, Xmm, Xmm |
30311/// +---+---------------+
30312/// ```
30313pub trait VgetexpshMaskSaeEmitter<A, B, C> {
30314    fn vgetexpsh_mask_sae(&mut self, op0: A, op1: B, op2: C);
30315}
30316
30317impl<'a> VgetexpshMaskSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
30318    fn vgetexpsh_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
30319        self.emit(
30320            VGETEXPSHRRR_MASK_SAE,
30321            op0.as_operand(),
30322            op1.as_operand(),
30323            op2.as_operand(),
30324            &NOREG,
30325        );
30326    }
30327}
30328
30329/// `VGETEXPSH_MASKZ`.
30330///
30331/// Supported operand variants:
30332///
30333/// ```text
30334/// +---+---------------+
30335/// | # | Operands      |
30336/// +---+---------------+
30337/// | 1 | Xmm, Xmm, Mem |
30338/// | 2 | Xmm, Xmm, Xmm |
30339/// +---+---------------+
30340/// ```
30341pub trait VgetexpshMaskzEmitter<A, B, C> {
30342    fn vgetexpsh_maskz(&mut self, op0: A, op1: B, op2: C);
30343}
30344
30345impl<'a> VgetexpshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
30346    fn vgetexpsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
30347        self.emit(
30348            VGETEXPSHRRR_MASKZ,
30349            op0.as_operand(),
30350            op1.as_operand(),
30351            op2.as_operand(),
30352            &NOREG,
30353        );
30354    }
30355}
30356
30357impl<'a> VgetexpshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
30358    fn vgetexpsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
30359        self.emit(
30360            VGETEXPSHRRM_MASKZ,
30361            op0.as_operand(),
30362            op1.as_operand(),
30363            op2.as_operand(),
30364            &NOREG,
30365        );
30366    }
30367}
30368
30369/// `VGETEXPSH_MASKZ_SAE`.
30370///
30371/// Supported operand variants:
30372///
30373/// ```text
30374/// +---+---------------+
30375/// | # | Operands      |
30376/// +---+---------------+
30377/// | 1 | Xmm, Xmm, Xmm |
30378/// +---+---------------+
30379/// ```
30380pub trait VgetexpshMaskzSaeEmitter<A, B, C> {
30381    fn vgetexpsh_maskz_sae(&mut self, op0: A, op1: B, op2: C);
30382}
30383
30384impl<'a> VgetexpshMaskzSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
30385    fn vgetexpsh_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
30386        self.emit(
30387            VGETEXPSHRRR_MASKZ_SAE,
30388            op0.as_operand(),
30389            op1.as_operand(),
30390            op2.as_operand(),
30391            &NOREG,
30392        );
30393    }
30394}
30395
30396/// `VGETEXPSH_SAE`.
30397///
30398/// Supported operand variants:
30399///
30400/// ```text
30401/// +---+---------------+
30402/// | # | Operands      |
30403/// +---+---------------+
30404/// | 1 | Xmm, Xmm, Xmm |
30405/// +---+---------------+
30406/// ```
30407pub trait VgetexpshSaeEmitter<A, B, C> {
30408    fn vgetexpsh_sae(&mut self, op0: A, op1: B, op2: C);
30409}
30410
30411impl<'a> VgetexpshSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
30412    fn vgetexpsh_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
30413        self.emit(
30414            VGETEXPSHRRR_SAE,
30415            op0.as_operand(),
30416            op1.as_operand(),
30417            op2.as_operand(),
30418            &NOREG,
30419        );
30420    }
30421}
30422
30423/// `VGETMANTPH`.
30424///
30425/// Supported operand variants:
30426///
30427/// ```text
30428/// +---+---------------+
30429/// | # | Operands      |
30430/// +---+---------------+
30431/// | 1 | Xmm, Mem, Imm |
30432/// | 2 | Xmm, Xmm, Imm |
30433/// | 3 | Ymm, Mem, Imm |
30434/// | 4 | Ymm, Ymm, Imm |
30435/// | 5 | Zmm, Mem, Imm |
30436/// | 6 | Zmm, Zmm, Imm |
30437/// +---+---------------+
30438/// ```
30439pub trait VgetmantphEmitter<A, B, C> {
30440    fn vgetmantph(&mut self, op0: A, op1: B, op2: C);
30441}
30442
30443impl<'a> VgetmantphEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
30444    fn vgetmantph(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
30445        self.emit(
30446            VGETMANTPH128RRI,
30447            op0.as_operand(),
30448            op1.as_operand(),
30449            op2.as_operand(),
30450            &NOREG,
30451        );
30452    }
30453}
30454
30455impl<'a> VgetmantphEmitter<Xmm, Mem, Imm> for Assembler<'a> {
30456    fn vgetmantph(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
30457        self.emit(
30458            VGETMANTPH128RMI,
30459            op0.as_operand(),
30460            op1.as_operand(),
30461            op2.as_operand(),
30462            &NOREG,
30463        );
30464    }
30465}
30466
30467impl<'a> VgetmantphEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
30468    fn vgetmantph(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
30469        self.emit(
30470            VGETMANTPH256RRI,
30471            op0.as_operand(),
30472            op1.as_operand(),
30473            op2.as_operand(),
30474            &NOREG,
30475        );
30476    }
30477}
30478
30479impl<'a> VgetmantphEmitter<Ymm, Mem, Imm> for Assembler<'a> {
30480    fn vgetmantph(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
30481        self.emit(
30482            VGETMANTPH256RMI,
30483            op0.as_operand(),
30484            op1.as_operand(),
30485            op2.as_operand(),
30486            &NOREG,
30487        );
30488    }
30489}
30490
30491impl<'a> VgetmantphEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
30492    fn vgetmantph(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
30493        self.emit(
30494            VGETMANTPH512RRI,
30495            op0.as_operand(),
30496            op1.as_operand(),
30497            op2.as_operand(),
30498            &NOREG,
30499        );
30500    }
30501}
30502
30503impl<'a> VgetmantphEmitter<Zmm, Mem, Imm> for Assembler<'a> {
30504    fn vgetmantph(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
30505        self.emit(
30506            VGETMANTPH512RMI,
30507            op0.as_operand(),
30508            op1.as_operand(),
30509            op2.as_operand(),
30510            &NOREG,
30511        );
30512    }
30513}
30514
30515/// `VGETMANTPH_MASK`.
30516///
30517/// Supported operand variants:
30518///
30519/// ```text
30520/// +---+---------------+
30521/// | # | Operands      |
30522/// +---+---------------+
30523/// | 1 | Xmm, Mem, Imm |
30524/// | 2 | Xmm, Xmm, Imm |
30525/// | 3 | Ymm, Mem, Imm |
30526/// | 4 | Ymm, Ymm, Imm |
30527/// | 5 | Zmm, Mem, Imm |
30528/// | 6 | Zmm, Zmm, Imm |
30529/// +---+---------------+
30530/// ```
30531pub trait VgetmantphMaskEmitter<A, B, C> {
30532    fn vgetmantph_mask(&mut self, op0: A, op1: B, op2: C);
30533}
30534
30535impl<'a> VgetmantphMaskEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
30536    fn vgetmantph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
30537        self.emit(
30538            VGETMANTPH128RRI_MASK,
30539            op0.as_operand(),
30540            op1.as_operand(),
30541            op2.as_operand(),
30542            &NOREG,
30543        );
30544    }
30545}
30546
30547impl<'a> VgetmantphMaskEmitter<Xmm, Mem, Imm> for Assembler<'a> {
30548    fn vgetmantph_mask(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
30549        self.emit(
30550            VGETMANTPH128RMI_MASK,
30551            op0.as_operand(),
30552            op1.as_operand(),
30553            op2.as_operand(),
30554            &NOREG,
30555        );
30556    }
30557}
30558
30559impl<'a> VgetmantphMaskEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
30560    fn vgetmantph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
30561        self.emit(
30562            VGETMANTPH256RRI_MASK,
30563            op0.as_operand(),
30564            op1.as_operand(),
30565            op2.as_operand(),
30566            &NOREG,
30567        );
30568    }
30569}
30570
30571impl<'a> VgetmantphMaskEmitter<Ymm, Mem, Imm> for Assembler<'a> {
30572    fn vgetmantph_mask(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
30573        self.emit(
30574            VGETMANTPH256RMI_MASK,
30575            op0.as_operand(),
30576            op1.as_operand(),
30577            op2.as_operand(),
30578            &NOREG,
30579        );
30580    }
30581}
30582
30583impl<'a> VgetmantphMaskEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
30584    fn vgetmantph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
30585        self.emit(
30586            VGETMANTPH512RRI_MASK,
30587            op0.as_operand(),
30588            op1.as_operand(),
30589            op2.as_operand(),
30590            &NOREG,
30591        );
30592    }
30593}
30594
30595impl<'a> VgetmantphMaskEmitter<Zmm, Mem, Imm> for Assembler<'a> {
30596    fn vgetmantph_mask(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
30597        self.emit(
30598            VGETMANTPH512RMI_MASK,
30599            op0.as_operand(),
30600            op1.as_operand(),
30601            op2.as_operand(),
30602            &NOREG,
30603        );
30604    }
30605}
30606
30607/// `VGETMANTPH_MASK_SAE`.
30608///
30609/// Supported operand variants:
30610///
30611/// ```text
30612/// +---+---------------+
30613/// | # | Operands      |
30614/// +---+---------------+
30615/// | 1 | Zmm, Zmm, Imm |
30616/// +---+---------------+
30617/// ```
30618pub trait VgetmantphMaskSaeEmitter<A, B, C> {
30619    fn vgetmantph_mask_sae(&mut self, op0: A, op1: B, op2: C);
30620}
30621
30622impl<'a> VgetmantphMaskSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
30623    fn vgetmantph_mask_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
30624        self.emit(
30625            VGETMANTPH512RRI_MASK_SAE,
30626            op0.as_operand(),
30627            op1.as_operand(),
30628            op2.as_operand(),
30629            &NOREG,
30630        );
30631    }
30632}
30633
30634/// `VGETMANTPH_MASKZ`.
30635///
30636/// Supported operand variants:
30637///
30638/// ```text
30639/// +---+---------------+
30640/// | # | Operands      |
30641/// +---+---------------+
30642/// | 1 | Xmm, Mem, Imm |
30643/// | 2 | Xmm, Xmm, Imm |
30644/// | 3 | Ymm, Mem, Imm |
30645/// | 4 | Ymm, Ymm, Imm |
30646/// | 5 | Zmm, Mem, Imm |
30647/// | 6 | Zmm, Zmm, Imm |
30648/// +---+---------------+
30649/// ```
30650pub trait VgetmantphMaskzEmitter<A, B, C> {
30651    fn vgetmantph_maskz(&mut self, op0: A, op1: B, op2: C);
30652}
30653
30654impl<'a> VgetmantphMaskzEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
30655    fn vgetmantph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
30656        self.emit(
30657            VGETMANTPH128RRI_MASKZ,
30658            op0.as_operand(),
30659            op1.as_operand(),
30660            op2.as_operand(),
30661            &NOREG,
30662        );
30663    }
30664}
30665
30666impl<'a> VgetmantphMaskzEmitter<Xmm, Mem, Imm> for Assembler<'a> {
30667    fn vgetmantph_maskz(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
30668        self.emit(
30669            VGETMANTPH128RMI_MASKZ,
30670            op0.as_operand(),
30671            op1.as_operand(),
30672            op2.as_operand(),
30673            &NOREG,
30674        );
30675    }
30676}
30677
30678impl<'a> VgetmantphMaskzEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
30679    fn vgetmantph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
30680        self.emit(
30681            VGETMANTPH256RRI_MASKZ,
30682            op0.as_operand(),
30683            op1.as_operand(),
30684            op2.as_operand(),
30685            &NOREG,
30686        );
30687    }
30688}
30689
30690impl<'a> VgetmantphMaskzEmitter<Ymm, Mem, Imm> for Assembler<'a> {
30691    fn vgetmantph_maskz(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
30692        self.emit(
30693            VGETMANTPH256RMI_MASKZ,
30694            op0.as_operand(),
30695            op1.as_operand(),
30696            op2.as_operand(),
30697            &NOREG,
30698        );
30699    }
30700}
30701
30702impl<'a> VgetmantphMaskzEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
30703    fn vgetmantph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
30704        self.emit(
30705            VGETMANTPH512RRI_MASKZ,
30706            op0.as_operand(),
30707            op1.as_operand(),
30708            op2.as_operand(),
30709            &NOREG,
30710        );
30711    }
30712}
30713
30714impl<'a> VgetmantphMaskzEmitter<Zmm, Mem, Imm> for Assembler<'a> {
30715    fn vgetmantph_maskz(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
30716        self.emit(
30717            VGETMANTPH512RMI_MASKZ,
30718            op0.as_operand(),
30719            op1.as_operand(),
30720            op2.as_operand(),
30721            &NOREG,
30722        );
30723    }
30724}
30725
30726/// `VGETMANTPH_MASKZ_SAE`.
30727///
30728/// Supported operand variants:
30729///
30730/// ```text
30731/// +---+---------------+
30732/// | # | Operands      |
30733/// +---+---------------+
30734/// | 1 | Zmm, Zmm, Imm |
30735/// +---+---------------+
30736/// ```
30737pub trait VgetmantphMaskzSaeEmitter<A, B, C> {
30738    fn vgetmantph_maskz_sae(&mut self, op0: A, op1: B, op2: C);
30739}
30740
30741impl<'a> VgetmantphMaskzSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
30742    fn vgetmantph_maskz_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
30743        self.emit(
30744            VGETMANTPH512RRI_MASKZ_SAE,
30745            op0.as_operand(),
30746            op1.as_operand(),
30747            op2.as_operand(),
30748            &NOREG,
30749        );
30750    }
30751}
30752
30753/// `VGETMANTPH_SAE`.
30754///
30755/// Supported operand variants:
30756///
30757/// ```text
30758/// +---+---------------+
30759/// | # | Operands      |
30760/// +---+---------------+
30761/// | 1 | Zmm, Zmm, Imm |
30762/// +---+---------------+
30763/// ```
30764pub trait VgetmantphSaeEmitter<A, B, C> {
30765    fn vgetmantph_sae(&mut self, op0: A, op1: B, op2: C);
30766}
30767
30768impl<'a> VgetmantphSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
30769    fn vgetmantph_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
30770        self.emit(
30771            VGETMANTPH512RRI_SAE,
30772            op0.as_operand(),
30773            op1.as_operand(),
30774            op2.as_operand(),
30775            &NOREG,
30776        );
30777    }
30778}
30779
30780/// `VGETMANTSH`.
30781///
30782/// Supported operand variants:
30783///
30784/// ```text
30785/// +---+--------------------+
30786/// | # | Operands           |
30787/// +---+--------------------+
30788/// | 1 | Xmm, Xmm, Mem, Imm |
30789/// | 2 | Xmm, Xmm, Xmm, Imm |
30790/// +---+--------------------+
30791/// ```
30792pub trait VgetmantshEmitter<A, B, C, D> {
30793    fn vgetmantsh(&mut self, op0: A, op1: B, op2: C, op3: D);
30794}
30795
30796impl<'a> VgetmantshEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
30797    fn vgetmantsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
30798        self.emit(
30799            VGETMANTSHRRRI,
30800            op0.as_operand(),
30801            op1.as_operand(),
30802            op2.as_operand(),
30803            op3.as_operand(),
30804        );
30805    }
30806}
30807
30808impl<'a> VgetmantshEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
30809    fn vgetmantsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
30810        self.emit(
30811            VGETMANTSHRRMI,
30812            op0.as_operand(),
30813            op1.as_operand(),
30814            op2.as_operand(),
30815            op3.as_operand(),
30816        );
30817    }
30818}
30819
30820/// `VGETMANTSH_MASK`.
30821///
30822/// Supported operand variants:
30823///
30824/// ```text
30825/// +---+--------------------+
30826/// | # | Operands           |
30827/// +---+--------------------+
30828/// | 1 | Xmm, Xmm, Mem, Imm |
30829/// | 2 | Xmm, Xmm, Xmm, Imm |
30830/// +---+--------------------+
30831/// ```
30832pub trait VgetmantshMaskEmitter<A, B, C, D> {
30833    fn vgetmantsh_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
30834}
30835
30836impl<'a> VgetmantshMaskEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
30837    fn vgetmantsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
30838        self.emit(
30839            VGETMANTSHRRRI_MASK,
30840            op0.as_operand(),
30841            op1.as_operand(),
30842            op2.as_operand(),
30843            op3.as_operand(),
30844        );
30845    }
30846}
30847
30848impl<'a> VgetmantshMaskEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
30849    fn vgetmantsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
30850        self.emit(
30851            VGETMANTSHRRMI_MASK,
30852            op0.as_operand(),
30853            op1.as_operand(),
30854            op2.as_operand(),
30855            op3.as_operand(),
30856        );
30857    }
30858}
30859
30860/// `VGETMANTSH_MASK_SAE`.
30861///
30862/// Supported operand variants:
30863///
30864/// ```text
30865/// +---+--------------------+
30866/// | # | Operands           |
30867/// +---+--------------------+
30868/// | 1 | Xmm, Xmm, Xmm, Imm |
30869/// +---+--------------------+
30870/// ```
30871pub trait VgetmantshMaskSaeEmitter<A, B, C, D> {
30872    fn vgetmantsh_mask_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
30873}
30874
30875impl<'a> VgetmantshMaskSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
30876    fn vgetmantsh_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
30877        self.emit(
30878            VGETMANTSHRRRI_MASK_SAE,
30879            op0.as_operand(),
30880            op1.as_operand(),
30881            op2.as_operand(),
30882            op3.as_operand(),
30883        );
30884    }
30885}
30886
30887/// `VGETMANTSH_MASKZ`.
30888///
30889/// Supported operand variants:
30890///
30891/// ```text
30892/// +---+--------------------+
30893/// | # | Operands           |
30894/// +---+--------------------+
30895/// | 1 | Xmm, Xmm, Mem, Imm |
30896/// | 2 | Xmm, Xmm, Xmm, Imm |
30897/// +---+--------------------+
30898/// ```
30899pub trait VgetmantshMaskzEmitter<A, B, C, D> {
30900    fn vgetmantsh_maskz(&mut self, op0: A, op1: B, op2: C, op3: D);
30901}
30902
30903impl<'a> VgetmantshMaskzEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
30904    fn vgetmantsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
30905        self.emit(
30906            VGETMANTSHRRRI_MASKZ,
30907            op0.as_operand(),
30908            op1.as_operand(),
30909            op2.as_operand(),
30910            op3.as_operand(),
30911        );
30912    }
30913}
30914
30915impl<'a> VgetmantshMaskzEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
30916    fn vgetmantsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
30917        self.emit(
30918            VGETMANTSHRRMI_MASKZ,
30919            op0.as_operand(),
30920            op1.as_operand(),
30921            op2.as_operand(),
30922            op3.as_operand(),
30923        );
30924    }
30925}
30926
30927/// `VGETMANTSH_MASKZ_SAE`.
30928///
30929/// Supported operand variants:
30930///
30931/// ```text
30932/// +---+--------------------+
30933/// | # | Operands           |
30934/// +---+--------------------+
30935/// | 1 | Xmm, Xmm, Xmm, Imm |
30936/// +---+--------------------+
30937/// ```
30938pub trait VgetmantshMaskzSaeEmitter<A, B, C, D> {
30939    fn vgetmantsh_maskz_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
30940}
30941
30942impl<'a> VgetmantshMaskzSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
30943    fn vgetmantsh_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
30944        self.emit(
30945            VGETMANTSHRRRI_MASKZ_SAE,
30946            op0.as_operand(),
30947            op1.as_operand(),
30948            op2.as_operand(),
30949            op3.as_operand(),
30950        );
30951    }
30952}
30953
30954/// `VGETMANTSH_SAE`.
30955///
30956/// Supported operand variants:
30957///
30958/// ```text
30959/// +---+--------------------+
30960/// | # | Operands           |
30961/// +---+--------------------+
30962/// | 1 | Xmm, Xmm, Xmm, Imm |
30963/// +---+--------------------+
30964/// ```
30965pub trait VgetmantshSaeEmitter<A, B, C, D> {
30966    fn vgetmantsh_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
30967}
30968
30969impl<'a> VgetmantshSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
30970    fn vgetmantsh_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
30971        self.emit(
30972            VGETMANTSHRRRI_SAE,
30973            op0.as_operand(),
30974            op1.as_operand(),
30975            op2.as_operand(),
30976            op3.as_operand(),
30977        );
30978    }
30979}
30980
30981/// `VGF2P8AFFINEINVQB`.
30982///
30983/// Supported operand variants:
30984///
30985/// ```text
30986/// +---+--------------------+
30987/// | # | Operands           |
30988/// +---+--------------------+
30989/// | 1 | Xmm, Xmm, Mem, Imm |
30990/// | 2 | Xmm, Xmm, Xmm, Imm |
30991/// | 3 | Ymm, Ymm, Mem, Imm |
30992/// | 4 | Ymm, Ymm, Ymm, Imm |
30993/// | 5 | Zmm, Zmm, Mem, Imm |
30994/// | 6 | Zmm, Zmm, Zmm, Imm |
30995/// +---+--------------------+
30996/// ```
30997pub trait Vgf2p8affineinvqbEmitter<A, B, C, D> {
30998    fn vgf2p8affineinvqb(&mut self, op0: A, op1: B, op2: C, op3: D);
30999}
31000
31001impl<'a> Vgf2p8affineinvqbEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
31002    fn vgf2p8affineinvqb(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
31003        self.emit(
31004            VGF2P8AFFINEINVQB128RRRI,
31005            op0.as_operand(),
31006            op1.as_operand(),
31007            op2.as_operand(),
31008            op3.as_operand(),
31009        );
31010    }
31011}
31012
31013impl<'a> Vgf2p8affineinvqbEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
31014    fn vgf2p8affineinvqb(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
31015        self.emit(
31016            VGF2P8AFFINEINVQB128RRMI,
31017            op0.as_operand(),
31018            op1.as_operand(),
31019            op2.as_operand(),
31020            op3.as_operand(),
31021        );
31022    }
31023}
31024
31025impl<'a> Vgf2p8affineinvqbEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
31026    fn vgf2p8affineinvqb(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
31027        self.emit(
31028            VGF2P8AFFINEINVQB256RRRI,
31029            op0.as_operand(),
31030            op1.as_operand(),
31031            op2.as_operand(),
31032            op3.as_operand(),
31033        );
31034    }
31035}
31036
31037impl<'a> Vgf2p8affineinvqbEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
31038    fn vgf2p8affineinvqb(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
31039        self.emit(
31040            VGF2P8AFFINEINVQB256RRMI,
31041            op0.as_operand(),
31042            op1.as_operand(),
31043            op2.as_operand(),
31044            op3.as_operand(),
31045        );
31046    }
31047}
31048
31049impl<'a> Vgf2p8affineinvqbEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
31050    fn vgf2p8affineinvqb(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
31051        self.emit(
31052            VGF2P8AFFINEINVQB512RRRI,
31053            op0.as_operand(),
31054            op1.as_operand(),
31055            op2.as_operand(),
31056            op3.as_operand(),
31057        );
31058    }
31059}
31060
31061impl<'a> Vgf2p8affineinvqbEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
31062    fn vgf2p8affineinvqb(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
31063        self.emit(
31064            VGF2P8AFFINEINVQB512RRMI,
31065            op0.as_operand(),
31066            op1.as_operand(),
31067            op2.as_operand(),
31068            op3.as_operand(),
31069        );
31070    }
31071}
31072
31073/// `VGF2P8AFFINEINVQB_MASK`.
31074///
31075/// Supported operand variants:
31076///
31077/// ```text
31078/// +---+--------------------+
31079/// | # | Operands           |
31080/// +---+--------------------+
31081/// | 1 | Xmm, Xmm, Mem, Imm |
31082/// | 2 | Xmm, Xmm, Xmm, Imm |
31083/// | 3 | Ymm, Ymm, Mem, Imm |
31084/// | 4 | Ymm, Ymm, Ymm, Imm |
31085/// | 5 | Zmm, Zmm, Mem, Imm |
31086/// | 6 | Zmm, Zmm, Zmm, Imm |
31087/// +---+--------------------+
31088/// ```
31089pub trait Vgf2p8affineinvqbMaskEmitter<A, B, C, D> {
31090    fn vgf2p8affineinvqb_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
31091}
31092
31093impl<'a> Vgf2p8affineinvqbMaskEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
31094    fn vgf2p8affineinvqb_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
31095        self.emit(
31096            VGF2P8AFFINEINVQB128RRRI_MASK,
31097            op0.as_operand(),
31098            op1.as_operand(),
31099            op2.as_operand(),
31100            op3.as_operand(),
31101        );
31102    }
31103}
31104
31105impl<'a> Vgf2p8affineinvqbMaskEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
31106    fn vgf2p8affineinvqb_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
31107        self.emit(
31108            VGF2P8AFFINEINVQB128RRMI_MASK,
31109            op0.as_operand(),
31110            op1.as_operand(),
31111            op2.as_operand(),
31112            op3.as_operand(),
31113        );
31114    }
31115}
31116
31117impl<'a> Vgf2p8affineinvqbMaskEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
31118    fn vgf2p8affineinvqb_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
31119        self.emit(
31120            VGF2P8AFFINEINVQB256RRRI_MASK,
31121            op0.as_operand(),
31122            op1.as_operand(),
31123            op2.as_operand(),
31124            op3.as_operand(),
31125        );
31126    }
31127}
31128
31129impl<'a> Vgf2p8affineinvqbMaskEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
31130    fn vgf2p8affineinvqb_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
31131        self.emit(
31132            VGF2P8AFFINEINVQB256RRMI_MASK,
31133            op0.as_operand(),
31134            op1.as_operand(),
31135            op2.as_operand(),
31136            op3.as_operand(),
31137        );
31138    }
31139}
31140
31141impl<'a> Vgf2p8affineinvqbMaskEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
31142    fn vgf2p8affineinvqb_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
31143        self.emit(
31144            VGF2P8AFFINEINVQB512RRRI_MASK,
31145            op0.as_operand(),
31146            op1.as_operand(),
31147            op2.as_operand(),
31148            op3.as_operand(),
31149        );
31150    }
31151}
31152
31153impl<'a> Vgf2p8affineinvqbMaskEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
31154    fn vgf2p8affineinvqb_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
31155        self.emit(
31156            VGF2P8AFFINEINVQB512RRMI_MASK,
31157            op0.as_operand(),
31158            op1.as_operand(),
31159            op2.as_operand(),
31160            op3.as_operand(),
31161        );
31162    }
31163}
31164
31165/// `VGF2P8AFFINEINVQB_MASKZ`.
31166///
31167/// Supported operand variants:
31168///
31169/// ```text
31170/// +---+--------------------+
31171/// | # | Operands           |
31172/// +---+--------------------+
31173/// | 1 | Xmm, Xmm, Mem, Imm |
31174/// | 2 | Xmm, Xmm, Xmm, Imm |
31175/// | 3 | Ymm, Ymm, Mem, Imm |
31176/// | 4 | Ymm, Ymm, Ymm, Imm |
31177/// | 5 | Zmm, Zmm, Mem, Imm |
31178/// | 6 | Zmm, Zmm, Zmm, Imm |
31179/// +---+--------------------+
31180/// ```
31181pub trait Vgf2p8affineinvqbMaskzEmitter<A, B, C, D> {
31182    fn vgf2p8affineinvqb_maskz(&mut self, op0: A, op1: B, op2: C, op3: D);
31183}
31184
31185impl<'a> Vgf2p8affineinvqbMaskzEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
31186    fn vgf2p8affineinvqb_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
31187        self.emit(
31188            VGF2P8AFFINEINVQB128RRRI_MASKZ,
31189            op0.as_operand(),
31190            op1.as_operand(),
31191            op2.as_operand(),
31192            op3.as_operand(),
31193        );
31194    }
31195}
31196
31197impl<'a> Vgf2p8affineinvqbMaskzEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
31198    fn vgf2p8affineinvqb_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
31199        self.emit(
31200            VGF2P8AFFINEINVQB128RRMI_MASKZ,
31201            op0.as_operand(),
31202            op1.as_operand(),
31203            op2.as_operand(),
31204            op3.as_operand(),
31205        );
31206    }
31207}
31208
31209impl<'a> Vgf2p8affineinvqbMaskzEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
31210    fn vgf2p8affineinvqb_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
31211        self.emit(
31212            VGF2P8AFFINEINVQB256RRRI_MASKZ,
31213            op0.as_operand(),
31214            op1.as_operand(),
31215            op2.as_operand(),
31216            op3.as_operand(),
31217        );
31218    }
31219}
31220
31221impl<'a> Vgf2p8affineinvqbMaskzEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
31222    fn vgf2p8affineinvqb_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
31223        self.emit(
31224            VGF2P8AFFINEINVQB256RRMI_MASKZ,
31225            op0.as_operand(),
31226            op1.as_operand(),
31227            op2.as_operand(),
31228            op3.as_operand(),
31229        );
31230    }
31231}
31232
31233impl<'a> Vgf2p8affineinvqbMaskzEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
31234    fn vgf2p8affineinvqb_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
31235        self.emit(
31236            VGF2P8AFFINEINVQB512RRRI_MASKZ,
31237            op0.as_operand(),
31238            op1.as_operand(),
31239            op2.as_operand(),
31240            op3.as_operand(),
31241        );
31242    }
31243}
31244
31245impl<'a> Vgf2p8affineinvqbMaskzEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
31246    fn vgf2p8affineinvqb_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
31247        self.emit(
31248            VGF2P8AFFINEINVQB512RRMI_MASKZ,
31249            op0.as_operand(),
31250            op1.as_operand(),
31251            op2.as_operand(),
31252            op3.as_operand(),
31253        );
31254    }
31255}
31256
31257/// `VGF2P8AFFINEQB`.
31258///
31259/// Supported operand variants:
31260///
31261/// ```text
31262/// +---+--------------------+
31263/// | # | Operands           |
31264/// +---+--------------------+
31265/// | 1 | Xmm, Xmm, Mem, Imm |
31266/// | 2 | Xmm, Xmm, Xmm, Imm |
31267/// | 3 | Ymm, Ymm, Mem, Imm |
31268/// | 4 | Ymm, Ymm, Ymm, Imm |
31269/// | 5 | Zmm, Zmm, Mem, Imm |
31270/// | 6 | Zmm, Zmm, Zmm, Imm |
31271/// +---+--------------------+
31272/// ```
31273pub trait Vgf2p8affineqbEmitter<A, B, C, D> {
31274    fn vgf2p8affineqb(&mut self, op0: A, op1: B, op2: C, op3: D);
31275}
31276
31277impl<'a> Vgf2p8affineqbEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
31278    fn vgf2p8affineqb(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
31279        self.emit(
31280            VGF2P8AFFINEQB128RRRI,
31281            op0.as_operand(),
31282            op1.as_operand(),
31283            op2.as_operand(),
31284            op3.as_operand(),
31285        );
31286    }
31287}
31288
31289impl<'a> Vgf2p8affineqbEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
31290    fn vgf2p8affineqb(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
31291        self.emit(
31292            VGF2P8AFFINEQB128RRMI,
31293            op0.as_operand(),
31294            op1.as_operand(),
31295            op2.as_operand(),
31296            op3.as_operand(),
31297        );
31298    }
31299}
31300
31301impl<'a> Vgf2p8affineqbEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
31302    fn vgf2p8affineqb(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
31303        self.emit(
31304            VGF2P8AFFINEQB256RRRI,
31305            op0.as_operand(),
31306            op1.as_operand(),
31307            op2.as_operand(),
31308            op3.as_operand(),
31309        );
31310    }
31311}
31312
31313impl<'a> Vgf2p8affineqbEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
31314    fn vgf2p8affineqb(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
31315        self.emit(
31316            VGF2P8AFFINEQB256RRMI,
31317            op0.as_operand(),
31318            op1.as_operand(),
31319            op2.as_operand(),
31320            op3.as_operand(),
31321        );
31322    }
31323}
31324
31325impl<'a> Vgf2p8affineqbEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
31326    fn vgf2p8affineqb(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
31327        self.emit(
31328            VGF2P8AFFINEQB512RRRI,
31329            op0.as_operand(),
31330            op1.as_operand(),
31331            op2.as_operand(),
31332            op3.as_operand(),
31333        );
31334    }
31335}
31336
31337impl<'a> Vgf2p8affineqbEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
31338    fn vgf2p8affineqb(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
31339        self.emit(
31340            VGF2P8AFFINEQB512RRMI,
31341            op0.as_operand(),
31342            op1.as_operand(),
31343            op2.as_operand(),
31344            op3.as_operand(),
31345        );
31346    }
31347}
31348
31349/// `VGF2P8AFFINEQB_MASK`.
31350///
31351/// Supported operand variants:
31352///
31353/// ```text
31354/// +---+--------------------+
31355/// | # | Operands           |
31356/// +---+--------------------+
31357/// | 1 | Xmm, Xmm, Mem, Imm |
31358/// | 2 | Xmm, Xmm, Xmm, Imm |
31359/// | 3 | Ymm, Ymm, Mem, Imm |
31360/// | 4 | Ymm, Ymm, Ymm, Imm |
31361/// | 5 | Zmm, Zmm, Mem, Imm |
31362/// | 6 | Zmm, Zmm, Zmm, Imm |
31363/// +---+--------------------+
31364/// ```
31365pub trait Vgf2p8affineqbMaskEmitter<A, B, C, D> {
31366    fn vgf2p8affineqb_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
31367}
31368
31369impl<'a> Vgf2p8affineqbMaskEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
31370    fn vgf2p8affineqb_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
31371        self.emit(
31372            VGF2P8AFFINEQB128RRRI_MASK,
31373            op0.as_operand(),
31374            op1.as_operand(),
31375            op2.as_operand(),
31376            op3.as_operand(),
31377        );
31378    }
31379}
31380
31381impl<'a> Vgf2p8affineqbMaskEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
31382    fn vgf2p8affineqb_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
31383        self.emit(
31384            VGF2P8AFFINEQB128RRMI_MASK,
31385            op0.as_operand(),
31386            op1.as_operand(),
31387            op2.as_operand(),
31388            op3.as_operand(),
31389        );
31390    }
31391}
31392
31393impl<'a> Vgf2p8affineqbMaskEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
31394    fn vgf2p8affineqb_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
31395        self.emit(
31396            VGF2P8AFFINEQB256RRRI_MASK,
31397            op0.as_operand(),
31398            op1.as_operand(),
31399            op2.as_operand(),
31400            op3.as_operand(),
31401        );
31402    }
31403}
31404
31405impl<'a> Vgf2p8affineqbMaskEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
31406    fn vgf2p8affineqb_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
31407        self.emit(
31408            VGF2P8AFFINEQB256RRMI_MASK,
31409            op0.as_operand(),
31410            op1.as_operand(),
31411            op2.as_operand(),
31412            op3.as_operand(),
31413        );
31414    }
31415}
31416
31417impl<'a> Vgf2p8affineqbMaskEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
31418    fn vgf2p8affineqb_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
31419        self.emit(
31420            VGF2P8AFFINEQB512RRRI_MASK,
31421            op0.as_operand(),
31422            op1.as_operand(),
31423            op2.as_operand(),
31424            op3.as_operand(),
31425        );
31426    }
31427}
31428
31429impl<'a> Vgf2p8affineqbMaskEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
31430    fn vgf2p8affineqb_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
31431        self.emit(
31432            VGF2P8AFFINEQB512RRMI_MASK,
31433            op0.as_operand(),
31434            op1.as_operand(),
31435            op2.as_operand(),
31436            op3.as_operand(),
31437        );
31438    }
31439}
31440
31441/// `VGF2P8AFFINEQB_MASKZ`.
31442///
31443/// Supported operand variants:
31444///
31445/// ```text
31446/// +---+--------------------+
31447/// | # | Operands           |
31448/// +---+--------------------+
31449/// | 1 | Xmm, Xmm, Mem, Imm |
31450/// | 2 | Xmm, Xmm, Xmm, Imm |
31451/// | 3 | Ymm, Ymm, Mem, Imm |
31452/// | 4 | Ymm, Ymm, Ymm, Imm |
31453/// | 5 | Zmm, Zmm, Mem, Imm |
31454/// | 6 | Zmm, Zmm, Zmm, Imm |
31455/// +---+--------------------+
31456/// ```
31457pub trait Vgf2p8affineqbMaskzEmitter<A, B, C, D> {
31458    fn vgf2p8affineqb_maskz(&mut self, op0: A, op1: B, op2: C, op3: D);
31459}
31460
31461impl<'a> Vgf2p8affineqbMaskzEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
31462    fn vgf2p8affineqb_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
31463        self.emit(
31464            VGF2P8AFFINEQB128RRRI_MASKZ,
31465            op0.as_operand(),
31466            op1.as_operand(),
31467            op2.as_operand(),
31468            op3.as_operand(),
31469        );
31470    }
31471}
31472
31473impl<'a> Vgf2p8affineqbMaskzEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
31474    fn vgf2p8affineqb_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
31475        self.emit(
31476            VGF2P8AFFINEQB128RRMI_MASKZ,
31477            op0.as_operand(),
31478            op1.as_operand(),
31479            op2.as_operand(),
31480            op3.as_operand(),
31481        );
31482    }
31483}
31484
31485impl<'a> Vgf2p8affineqbMaskzEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
31486    fn vgf2p8affineqb_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
31487        self.emit(
31488            VGF2P8AFFINEQB256RRRI_MASKZ,
31489            op0.as_operand(),
31490            op1.as_operand(),
31491            op2.as_operand(),
31492            op3.as_operand(),
31493        );
31494    }
31495}
31496
31497impl<'a> Vgf2p8affineqbMaskzEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
31498    fn vgf2p8affineqb_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
31499        self.emit(
31500            VGF2P8AFFINEQB256RRMI_MASKZ,
31501            op0.as_operand(),
31502            op1.as_operand(),
31503            op2.as_operand(),
31504            op3.as_operand(),
31505        );
31506    }
31507}
31508
31509impl<'a> Vgf2p8affineqbMaskzEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
31510    fn vgf2p8affineqb_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
31511        self.emit(
31512            VGF2P8AFFINEQB512RRRI_MASKZ,
31513            op0.as_operand(),
31514            op1.as_operand(),
31515            op2.as_operand(),
31516            op3.as_operand(),
31517        );
31518    }
31519}
31520
31521impl<'a> Vgf2p8affineqbMaskzEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
31522    fn vgf2p8affineqb_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
31523        self.emit(
31524            VGF2P8AFFINEQB512RRMI_MASKZ,
31525            op0.as_operand(),
31526            op1.as_operand(),
31527            op2.as_operand(),
31528            op3.as_operand(),
31529        );
31530    }
31531}
31532
31533/// `VGF2P8MULB`.
31534///
31535/// Supported operand variants:
31536///
31537/// ```text
31538/// +---+---------------+
31539/// | # | Operands      |
31540/// +---+---------------+
31541/// | 1 | Xmm, Xmm, Mem |
31542/// | 2 | Xmm, Xmm, Xmm |
31543/// | 3 | Ymm, Ymm, Mem |
31544/// | 4 | Ymm, Ymm, Ymm |
31545/// | 5 | Zmm, Zmm, Mem |
31546/// | 6 | Zmm, Zmm, Zmm |
31547/// +---+---------------+
31548/// ```
31549pub trait Vgf2p8mulbEmitter<A, B, C> {
31550    fn vgf2p8mulb(&mut self, op0: A, op1: B, op2: C);
31551}
31552
31553impl<'a> Vgf2p8mulbEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
31554    fn vgf2p8mulb(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
31555        self.emit(
31556            VGF2P8MULB128RRR,
31557            op0.as_operand(),
31558            op1.as_operand(),
31559            op2.as_operand(),
31560            &NOREG,
31561        );
31562    }
31563}
31564
31565impl<'a> Vgf2p8mulbEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
31566    fn vgf2p8mulb(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
31567        self.emit(
31568            VGF2P8MULB128RRM,
31569            op0.as_operand(),
31570            op1.as_operand(),
31571            op2.as_operand(),
31572            &NOREG,
31573        );
31574    }
31575}
31576
31577impl<'a> Vgf2p8mulbEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
31578    fn vgf2p8mulb(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
31579        self.emit(
31580            VGF2P8MULB256RRR,
31581            op0.as_operand(),
31582            op1.as_operand(),
31583            op2.as_operand(),
31584            &NOREG,
31585        );
31586    }
31587}
31588
31589impl<'a> Vgf2p8mulbEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
31590    fn vgf2p8mulb(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
31591        self.emit(
31592            VGF2P8MULB256RRM,
31593            op0.as_operand(),
31594            op1.as_operand(),
31595            op2.as_operand(),
31596            &NOREG,
31597        );
31598    }
31599}
31600
31601impl<'a> Vgf2p8mulbEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
31602    fn vgf2p8mulb(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
31603        self.emit(
31604            VGF2P8MULB512RRR,
31605            op0.as_operand(),
31606            op1.as_operand(),
31607            op2.as_operand(),
31608            &NOREG,
31609        );
31610    }
31611}
31612
31613impl<'a> Vgf2p8mulbEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
31614    fn vgf2p8mulb(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
31615        self.emit(
31616            VGF2P8MULB512RRM,
31617            op0.as_operand(),
31618            op1.as_operand(),
31619            op2.as_operand(),
31620            &NOREG,
31621        );
31622    }
31623}
31624
31625/// `VGF2P8MULB_MASK`.
31626///
31627/// Supported operand variants:
31628///
31629/// ```text
31630/// +---+---------------+
31631/// | # | Operands      |
31632/// +---+---------------+
31633/// | 1 | Xmm, Xmm, Mem |
31634/// | 2 | Xmm, Xmm, Xmm |
31635/// | 3 | Ymm, Ymm, Mem |
31636/// | 4 | Ymm, Ymm, Ymm |
31637/// | 5 | Zmm, Zmm, Mem |
31638/// | 6 | Zmm, Zmm, Zmm |
31639/// +---+---------------+
31640/// ```
31641pub trait Vgf2p8mulbMaskEmitter<A, B, C> {
31642    fn vgf2p8mulb_mask(&mut self, op0: A, op1: B, op2: C);
31643}
31644
31645impl<'a> Vgf2p8mulbMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
31646    fn vgf2p8mulb_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
31647        self.emit(
31648            VGF2P8MULB128RRR_MASK,
31649            op0.as_operand(),
31650            op1.as_operand(),
31651            op2.as_operand(),
31652            &NOREG,
31653        );
31654    }
31655}
31656
31657impl<'a> Vgf2p8mulbMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
31658    fn vgf2p8mulb_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
31659        self.emit(
31660            VGF2P8MULB128RRM_MASK,
31661            op0.as_operand(),
31662            op1.as_operand(),
31663            op2.as_operand(),
31664            &NOREG,
31665        );
31666    }
31667}
31668
31669impl<'a> Vgf2p8mulbMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
31670    fn vgf2p8mulb_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
31671        self.emit(
31672            VGF2P8MULB256RRR_MASK,
31673            op0.as_operand(),
31674            op1.as_operand(),
31675            op2.as_operand(),
31676            &NOREG,
31677        );
31678    }
31679}
31680
31681impl<'a> Vgf2p8mulbMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
31682    fn vgf2p8mulb_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
31683        self.emit(
31684            VGF2P8MULB256RRM_MASK,
31685            op0.as_operand(),
31686            op1.as_operand(),
31687            op2.as_operand(),
31688            &NOREG,
31689        );
31690    }
31691}
31692
31693impl<'a> Vgf2p8mulbMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
31694    fn vgf2p8mulb_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
31695        self.emit(
31696            VGF2P8MULB512RRR_MASK,
31697            op0.as_operand(),
31698            op1.as_operand(),
31699            op2.as_operand(),
31700            &NOREG,
31701        );
31702    }
31703}
31704
31705impl<'a> Vgf2p8mulbMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
31706    fn vgf2p8mulb_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
31707        self.emit(
31708            VGF2P8MULB512RRM_MASK,
31709            op0.as_operand(),
31710            op1.as_operand(),
31711            op2.as_operand(),
31712            &NOREG,
31713        );
31714    }
31715}
31716
31717/// `VGF2P8MULB_MASKZ`.
31718///
31719/// Supported operand variants:
31720///
31721/// ```text
31722/// +---+---------------+
31723/// | # | Operands      |
31724/// +---+---------------+
31725/// | 1 | Xmm, Xmm, Mem |
31726/// | 2 | Xmm, Xmm, Xmm |
31727/// | 3 | Ymm, Ymm, Mem |
31728/// | 4 | Ymm, Ymm, Ymm |
31729/// | 5 | Zmm, Zmm, Mem |
31730/// | 6 | Zmm, Zmm, Zmm |
31731/// +---+---------------+
31732/// ```
31733pub trait Vgf2p8mulbMaskzEmitter<A, B, C> {
31734    fn vgf2p8mulb_maskz(&mut self, op0: A, op1: B, op2: C);
31735}
31736
31737impl<'a> Vgf2p8mulbMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
31738    fn vgf2p8mulb_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
31739        self.emit(
31740            VGF2P8MULB128RRR_MASKZ,
31741            op0.as_operand(),
31742            op1.as_operand(),
31743            op2.as_operand(),
31744            &NOREG,
31745        );
31746    }
31747}
31748
31749impl<'a> Vgf2p8mulbMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
31750    fn vgf2p8mulb_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
31751        self.emit(
31752            VGF2P8MULB128RRM_MASKZ,
31753            op0.as_operand(),
31754            op1.as_operand(),
31755            op2.as_operand(),
31756            &NOREG,
31757        );
31758    }
31759}
31760
31761impl<'a> Vgf2p8mulbMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
31762    fn vgf2p8mulb_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
31763        self.emit(
31764            VGF2P8MULB256RRR_MASKZ,
31765            op0.as_operand(),
31766            op1.as_operand(),
31767            op2.as_operand(),
31768            &NOREG,
31769        );
31770    }
31771}
31772
31773impl<'a> Vgf2p8mulbMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
31774    fn vgf2p8mulb_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
31775        self.emit(
31776            VGF2P8MULB256RRM_MASKZ,
31777            op0.as_operand(),
31778            op1.as_operand(),
31779            op2.as_operand(),
31780            &NOREG,
31781        );
31782    }
31783}
31784
31785impl<'a> Vgf2p8mulbMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
31786    fn vgf2p8mulb_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
31787        self.emit(
31788            VGF2P8MULB512RRR_MASKZ,
31789            op0.as_operand(),
31790            op1.as_operand(),
31791            op2.as_operand(),
31792            &NOREG,
31793        );
31794    }
31795}
31796
31797impl<'a> Vgf2p8mulbMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
31798    fn vgf2p8mulb_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
31799        self.emit(
31800            VGF2P8MULB512RRM_MASKZ,
31801            op0.as_operand(),
31802            op1.as_operand(),
31803            op2.as_operand(),
31804            &NOREG,
31805        );
31806    }
31807}
31808
31809/// `VMAXPH`.
31810///
31811/// Supported operand variants:
31812///
31813/// ```text
31814/// +---+---------------+
31815/// | # | Operands      |
31816/// +---+---------------+
31817/// | 1 | Xmm, Xmm, Mem |
31818/// | 2 | Xmm, Xmm, Xmm |
31819/// | 3 | Ymm, Ymm, Mem |
31820/// | 4 | Ymm, Ymm, Ymm |
31821/// | 5 | Zmm, Zmm, Mem |
31822/// | 6 | Zmm, Zmm, Zmm |
31823/// +---+---------------+
31824/// ```
31825pub trait VmaxphEmitter<A, B, C> {
31826    fn vmaxph(&mut self, op0: A, op1: B, op2: C);
31827}
31828
31829impl<'a> VmaxphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
31830    fn vmaxph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
31831        self.emit(
31832            VMAXPH128RRR,
31833            op0.as_operand(),
31834            op1.as_operand(),
31835            op2.as_operand(),
31836            &NOREG,
31837        );
31838    }
31839}
31840
31841impl<'a> VmaxphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
31842    fn vmaxph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
31843        self.emit(
31844            VMAXPH128RRM,
31845            op0.as_operand(),
31846            op1.as_operand(),
31847            op2.as_operand(),
31848            &NOREG,
31849        );
31850    }
31851}
31852
31853impl<'a> VmaxphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
31854    fn vmaxph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
31855        self.emit(
31856            VMAXPH256RRR,
31857            op0.as_operand(),
31858            op1.as_operand(),
31859            op2.as_operand(),
31860            &NOREG,
31861        );
31862    }
31863}
31864
31865impl<'a> VmaxphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
31866    fn vmaxph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
31867        self.emit(
31868            VMAXPH256RRM,
31869            op0.as_operand(),
31870            op1.as_operand(),
31871            op2.as_operand(),
31872            &NOREG,
31873        );
31874    }
31875}
31876
31877impl<'a> VmaxphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
31878    fn vmaxph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
31879        self.emit(
31880            VMAXPH512RRR,
31881            op0.as_operand(),
31882            op1.as_operand(),
31883            op2.as_operand(),
31884            &NOREG,
31885        );
31886    }
31887}
31888
31889impl<'a> VmaxphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
31890    fn vmaxph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
31891        self.emit(
31892            VMAXPH512RRM,
31893            op0.as_operand(),
31894            op1.as_operand(),
31895            op2.as_operand(),
31896            &NOREG,
31897        );
31898    }
31899}
31900
31901/// `VMAXPH_MASK`.
31902///
31903/// Supported operand variants:
31904///
31905/// ```text
31906/// +---+---------------+
31907/// | # | Operands      |
31908/// +---+---------------+
31909/// | 1 | Xmm, Xmm, Mem |
31910/// | 2 | Xmm, Xmm, Xmm |
31911/// | 3 | Ymm, Ymm, Mem |
31912/// | 4 | Ymm, Ymm, Ymm |
31913/// | 5 | Zmm, Zmm, Mem |
31914/// | 6 | Zmm, Zmm, Zmm |
31915/// +---+---------------+
31916/// ```
31917pub trait VmaxphMaskEmitter<A, B, C> {
31918    fn vmaxph_mask(&mut self, op0: A, op1: B, op2: C);
31919}
31920
31921impl<'a> VmaxphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
31922    fn vmaxph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
31923        self.emit(
31924            VMAXPH128RRR_MASK,
31925            op0.as_operand(),
31926            op1.as_operand(),
31927            op2.as_operand(),
31928            &NOREG,
31929        );
31930    }
31931}
31932
31933impl<'a> VmaxphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
31934    fn vmaxph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
31935        self.emit(
31936            VMAXPH128RRM_MASK,
31937            op0.as_operand(),
31938            op1.as_operand(),
31939            op2.as_operand(),
31940            &NOREG,
31941        );
31942    }
31943}
31944
31945impl<'a> VmaxphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
31946    fn vmaxph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
31947        self.emit(
31948            VMAXPH256RRR_MASK,
31949            op0.as_operand(),
31950            op1.as_operand(),
31951            op2.as_operand(),
31952            &NOREG,
31953        );
31954    }
31955}
31956
31957impl<'a> VmaxphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
31958    fn vmaxph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
31959        self.emit(
31960            VMAXPH256RRM_MASK,
31961            op0.as_operand(),
31962            op1.as_operand(),
31963            op2.as_operand(),
31964            &NOREG,
31965        );
31966    }
31967}
31968
31969impl<'a> VmaxphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
31970    fn vmaxph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
31971        self.emit(
31972            VMAXPH512RRR_MASK,
31973            op0.as_operand(),
31974            op1.as_operand(),
31975            op2.as_operand(),
31976            &NOREG,
31977        );
31978    }
31979}
31980
31981impl<'a> VmaxphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
31982    fn vmaxph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
31983        self.emit(
31984            VMAXPH512RRM_MASK,
31985            op0.as_operand(),
31986            op1.as_operand(),
31987            op2.as_operand(),
31988            &NOREG,
31989        );
31990    }
31991}
31992
31993/// `VMAXPH_MASK_SAE`.
31994///
31995/// Supported operand variants:
31996///
31997/// ```text
31998/// +---+---------------+
31999/// | # | Operands      |
32000/// +---+---------------+
32001/// | 1 | Zmm, Zmm, Zmm |
32002/// +---+---------------+
32003/// ```
32004pub trait VmaxphMaskSaeEmitter<A, B, C> {
32005    fn vmaxph_mask_sae(&mut self, op0: A, op1: B, op2: C);
32006}
32007
32008impl<'a> VmaxphMaskSaeEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32009    fn vmaxph_mask_sae(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32010        self.emit(
32011            VMAXPH512RRR_MASK_SAE,
32012            op0.as_operand(),
32013            op1.as_operand(),
32014            op2.as_operand(),
32015            &NOREG,
32016        );
32017    }
32018}
32019
32020/// `VMAXPH_MASKZ`.
32021///
32022/// Supported operand variants:
32023///
32024/// ```text
32025/// +---+---------------+
32026/// | # | Operands      |
32027/// +---+---------------+
32028/// | 1 | Xmm, Xmm, Mem |
32029/// | 2 | Xmm, Xmm, Xmm |
32030/// | 3 | Ymm, Ymm, Mem |
32031/// | 4 | Ymm, Ymm, Ymm |
32032/// | 5 | Zmm, Zmm, Mem |
32033/// | 6 | Zmm, Zmm, Zmm |
32034/// +---+---------------+
32035/// ```
32036pub trait VmaxphMaskzEmitter<A, B, C> {
32037    fn vmaxph_maskz(&mut self, op0: A, op1: B, op2: C);
32038}
32039
32040impl<'a> VmaxphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32041    fn vmaxph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32042        self.emit(
32043            VMAXPH128RRR_MASKZ,
32044            op0.as_operand(),
32045            op1.as_operand(),
32046            op2.as_operand(),
32047            &NOREG,
32048        );
32049    }
32050}
32051
32052impl<'a> VmaxphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32053    fn vmaxph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32054        self.emit(
32055            VMAXPH128RRM_MASKZ,
32056            op0.as_operand(),
32057            op1.as_operand(),
32058            op2.as_operand(),
32059            &NOREG,
32060        );
32061    }
32062}
32063
32064impl<'a> VmaxphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
32065    fn vmaxph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
32066        self.emit(
32067            VMAXPH256RRR_MASKZ,
32068            op0.as_operand(),
32069            op1.as_operand(),
32070            op2.as_operand(),
32071            &NOREG,
32072        );
32073    }
32074}
32075
32076impl<'a> VmaxphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
32077    fn vmaxph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
32078        self.emit(
32079            VMAXPH256RRM_MASKZ,
32080            op0.as_operand(),
32081            op1.as_operand(),
32082            op2.as_operand(),
32083            &NOREG,
32084        );
32085    }
32086}
32087
32088impl<'a> VmaxphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32089    fn vmaxph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32090        self.emit(
32091            VMAXPH512RRR_MASKZ,
32092            op0.as_operand(),
32093            op1.as_operand(),
32094            op2.as_operand(),
32095            &NOREG,
32096        );
32097    }
32098}
32099
32100impl<'a> VmaxphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
32101    fn vmaxph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
32102        self.emit(
32103            VMAXPH512RRM_MASKZ,
32104            op0.as_operand(),
32105            op1.as_operand(),
32106            op2.as_operand(),
32107            &NOREG,
32108        );
32109    }
32110}
32111
32112/// `VMAXPH_MASKZ_SAE`.
32113///
32114/// Supported operand variants:
32115///
32116/// ```text
32117/// +---+---------------+
32118/// | # | Operands      |
32119/// +---+---------------+
32120/// | 1 | Zmm, Zmm, Zmm |
32121/// +---+---------------+
32122/// ```
32123pub trait VmaxphMaskzSaeEmitter<A, B, C> {
32124    fn vmaxph_maskz_sae(&mut self, op0: A, op1: B, op2: C);
32125}
32126
32127impl<'a> VmaxphMaskzSaeEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32128    fn vmaxph_maskz_sae(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32129        self.emit(
32130            VMAXPH512RRR_MASKZ_SAE,
32131            op0.as_operand(),
32132            op1.as_operand(),
32133            op2.as_operand(),
32134            &NOREG,
32135        );
32136    }
32137}
32138
32139/// `VMAXPH_SAE`.
32140///
32141/// Supported operand variants:
32142///
32143/// ```text
32144/// +---+---------------+
32145/// | # | Operands      |
32146/// +---+---------------+
32147/// | 1 | Zmm, Zmm, Zmm |
32148/// +---+---------------+
32149/// ```
32150pub trait VmaxphSaeEmitter<A, B, C> {
32151    fn vmaxph_sae(&mut self, op0: A, op1: B, op2: C);
32152}
32153
32154impl<'a> VmaxphSaeEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32155    fn vmaxph_sae(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32156        self.emit(
32157            VMAXPH512RRR_SAE,
32158            op0.as_operand(),
32159            op1.as_operand(),
32160            op2.as_operand(),
32161            &NOREG,
32162        );
32163    }
32164}
32165
32166/// `VMAXSH`.
32167///
32168/// Supported operand variants:
32169///
32170/// ```text
32171/// +---+---------------+
32172/// | # | Operands      |
32173/// +---+---------------+
32174/// | 1 | Xmm, Xmm, Mem |
32175/// | 2 | Xmm, Xmm, Xmm |
32176/// +---+---------------+
32177/// ```
32178pub trait VmaxshEmitter<A, B, C> {
32179    fn vmaxsh(&mut self, op0: A, op1: B, op2: C);
32180}
32181
32182impl<'a> VmaxshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32183    fn vmaxsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32184        self.emit(
32185            VMAXSHRRR,
32186            op0.as_operand(),
32187            op1.as_operand(),
32188            op2.as_operand(),
32189            &NOREG,
32190        );
32191    }
32192}
32193
32194impl<'a> VmaxshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32195    fn vmaxsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32196        self.emit(
32197            VMAXSHRRM,
32198            op0.as_operand(),
32199            op1.as_operand(),
32200            op2.as_operand(),
32201            &NOREG,
32202        );
32203    }
32204}
32205
32206/// `VMAXSH_MASK`.
32207///
32208/// Supported operand variants:
32209///
32210/// ```text
32211/// +---+---------------+
32212/// | # | Operands      |
32213/// +---+---------------+
32214/// | 1 | Xmm, Xmm, Mem |
32215/// | 2 | Xmm, Xmm, Xmm |
32216/// +---+---------------+
32217/// ```
32218pub trait VmaxshMaskEmitter<A, B, C> {
32219    fn vmaxsh_mask(&mut self, op0: A, op1: B, op2: C);
32220}
32221
32222impl<'a> VmaxshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32223    fn vmaxsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32224        self.emit(
32225            VMAXSHRRR_MASK,
32226            op0.as_operand(),
32227            op1.as_operand(),
32228            op2.as_operand(),
32229            &NOREG,
32230        );
32231    }
32232}
32233
32234impl<'a> VmaxshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32235    fn vmaxsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32236        self.emit(
32237            VMAXSHRRM_MASK,
32238            op0.as_operand(),
32239            op1.as_operand(),
32240            op2.as_operand(),
32241            &NOREG,
32242        );
32243    }
32244}
32245
32246/// `VMAXSH_MASK_SAE`.
32247///
32248/// Supported operand variants:
32249///
32250/// ```text
32251/// +---+---------------+
32252/// | # | Operands      |
32253/// +---+---------------+
32254/// | 1 | Xmm, Xmm, Xmm |
32255/// +---+---------------+
32256/// ```
32257pub trait VmaxshMaskSaeEmitter<A, B, C> {
32258    fn vmaxsh_mask_sae(&mut self, op0: A, op1: B, op2: C);
32259}
32260
32261impl<'a> VmaxshMaskSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32262    fn vmaxsh_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32263        self.emit(
32264            VMAXSHRRR_MASK_SAE,
32265            op0.as_operand(),
32266            op1.as_operand(),
32267            op2.as_operand(),
32268            &NOREG,
32269        );
32270    }
32271}
32272
32273/// `VMAXSH_MASKZ`.
32274///
32275/// Supported operand variants:
32276///
32277/// ```text
32278/// +---+---------------+
32279/// | # | Operands      |
32280/// +---+---------------+
32281/// | 1 | Xmm, Xmm, Mem |
32282/// | 2 | Xmm, Xmm, Xmm |
32283/// +---+---------------+
32284/// ```
32285pub trait VmaxshMaskzEmitter<A, B, C> {
32286    fn vmaxsh_maskz(&mut self, op0: A, op1: B, op2: C);
32287}
32288
32289impl<'a> VmaxshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32290    fn vmaxsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32291        self.emit(
32292            VMAXSHRRR_MASKZ,
32293            op0.as_operand(),
32294            op1.as_operand(),
32295            op2.as_operand(),
32296            &NOREG,
32297        );
32298    }
32299}
32300
32301impl<'a> VmaxshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32302    fn vmaxsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32303        self.emit(
32304            VMAXSHRRM_MASKZ,
32305            op0.as_operand(),
32306            op1.as_operand(),
32307            op2.as_operand(),
32308            &NOREG,
32309        );
32310    }
32311}
32312
32313/// `VMAXSH_MASKZ_SAE`.
32314///
32315/// Supported operand variants:
32316///
32317/// ```text
32318/// +---+---------------+
32319/// | # | Operands      |
32320/// +---+---------------+
32321/// | 1 | Xmm, Xmm, Xmm |
32322/// +---+---------------+
32323/// ```
32324pub trait VmaxshMaskzSaeEmitter<A, B, C> {
32325    fn vmaxsh_maskz_sae(&mut self, op0: A, op1: B, op2: C);
32326}
32327
32328impl<'a> VmaxshMaskzSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32329    fn vmaxsh_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32330        self.emit(
32331            VMAXSHRRR_MASKZ_SAE,
32332            op0.as_operand(),
32333            op1.as_operand(),
32334            op2.as_operand(),
32335            &NOREG,
32336        );
32337    }
32338}
32339
32340/// `VMAXSH_SAE`.
32341///
32342/// Supported operand variants:
32343///
32344/// ```text
32345/// +---+---------------+
32346/// | # | Operands      |
32347/// +---+---------------+
32348/// | 1 | Xmm, Xmm, Xmm |
32349/// +---+---------------+
32350/// ```
32351pub trait VmaxshSaeEmitter<A, B, C> {
32352    fn vmaxsh_sae(&mut self, op0: A, op1: B, op2: C);
32353}
32354
32355impl<'a> VmaxshSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32356    fn vmaxsh_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32357        self.emit(
32358            VMAXSHRRR_SAE,
32359            op0.as_operand(),
32360            op1.as_operand(),
32361            op2.as_operand(),
32362            &NOREG,
32363        );
32364    }
32365}
32366
32367/// `VMINPH`.
32368///
32369/// Supported operand variants:
32370///
32371/// ```text
32372/// +---+---------------+
32373/// | # | Operands      |
32374/// +---+---------------+
32375/// | 1 | Xmm, Xmm, Mem |
32376/// | 2 | Xmm, Xmm, Xmm |
32377/// | 3 | Ymm, Ymm, Mem |
32378/// | 4 | Ymm, Ymm, Ymm |
32379/// | 5 | Zmm, Zmm, Mem |
32380/// | 6 | Zmm, Zmm, Zmm |
32381/// +---+---------------+
32382/// ```
32383pub trait VminphEmitter<A, B, C> {
32384    fn vminph(&mut self, op0: A, op1: B, op2: C);
32385}
32386
32387impl<'a> VminphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32388    fn vminph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32389        self.emit(
32390            VMINPH128RRR,
32391            op0.as_operand(),
32392            op1.as_operand(),
32393            op2.as_operand(),
32394            &NOREG,
32395        );
32396    }
32397}
32398
32399impl<'a> VminphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32400    fn vminph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32401        self.emit(
32402            VMINPH128RRM,
32403            op0.as_operand(),
32404            op1.as_operand(),
32405            op2.as_operand(),
32406            &NOREG,
32407        );
32408    }
32409}
32410
32411impl<'a> VminphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
32412    fn vminph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
32413        self.emit(
32414            VMINPH256RRR,
32415            op0.as_operand(),
32416            op1.as_operand(),
32417            op2.as_operand(),
32418            &NOREG,
32419        );
32420    }
32421}
32422
32423impl<'a> VminphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
32424    fn vminph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
32425        self.emit(
32426            VMINPH256RRM,
32427            op0.as_operand(),
32428            op1.as_operand(),
32429            op2.as_operand(),
32430            &NOREG,
32431        );
32432    }
32433}
32434
32435impl<'a> VminphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32436    fn vminph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32437        self.emit(
32438            VMINPH512RRR,
32439            op0.as_operand(),
32440            op1.as_operand(),
32441            op2.as_operand(),
32442            &NOREG,
32443        );
32444    }
32445}
32446
32447impl<'a> VminphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
32448    fn vminph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
32449        self.emit(
32450            VMINPH512RRM,
32451            op0.as_operand(),
32452            op1.as_operand(),
32453            op2.as_operand(),
32454            &NOREG,
32455        );
32456    }
32457}
32458
32459/// `VMINPH_MASK`.
32460///
32461/// Supported operand variants:
32462///
32463/// ```text
32464/// +---+---------------+
32465/// | # | Operands      |
32466/// +---+---------------+
32467/// | 1 | Xmm, Xmm, Mem |
32468/// | 2 | Xmm, Xmm, Xmm |
32469/// | 3 | Ymm, Ymm, Mem |
32470/// | 4 | Ymm, Ymm, Ymm |
32471/// | 5 | Zmm, Zmm, Mem |
32472/// | 6 | Zmm, Zmm, Zmm |
32473/// +---+---------------+
32474/// ```
32475pub trait VminphMaskEmitter<A, B, C> {
32476    fn vminph_mask(&mut self, op0: A, op1: B, op2: C);
32477}
32478
32479impl<'a> VminphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32480    fn vminph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32481        self.emit(
32482            VMINPH128RRR_MASK,
32483            op0.as_operand(),
32484            op1.as_operand(),
32485            op2.as_operand(),
32486            &NOREG,
32487        );
32488    }
32489}
32490
32491impl<'a> VminphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32492    fn vminph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32493        self.emit(
32494            VMINPH128RRM_MASK,
32495            op0.as_operand(),
32496            op1.as_operand(),
32497            op2.as_operand(),
32498            &NOREG,
32499        );
32500    }
32501}
32502
32503impl<'a> VminphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
32504    fn vminph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
32505        self.emit(
32506            VMINPH256RRR_MASK,
32507            op0.as_operand(),
32508            op1.as_operand(),
32509            op2.as_operand(),
32510            &NOREG,
32511        );
32512    }
32513}
32514
32515impl<'a> VminphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
32516    fn vminph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
32517        self.emit(
32518            VMINPH256RRM_MASK,
32519            op0.as_operand(),
32520            op1.as_operand(),
32521            op2.as_operand(),
32522            &NOREG,
32523        );
32524    }
32525}
32526
32527impl<'a> VminphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32528    fn vminph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32529        self.emit(
32530            VMINPH512RRR_MASK,
32531            op0.as_operand(),
32532            op1.as_operand(),
32533            op2.as_operand(),
32534            &NOREG,
32535        );
32536    }
32537}
32538
32539impl<'a> VminphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
32540    fn vminph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
32541        self.emit(
32542            VMINPH512RRM_MASK,
32543            op0.as_operand(),
32544            op1.as_operand(),
32545            op2.as_operand(),
32546            &NOREG,
32547        );
32548    }
32549}
32550
32551/// `VMINPH_MASK_SAE`.
32552///
32553/// Supported operand variants:
32554///
32555/// ```text
32556/// +---+---------------+
32557/// | # | Operands      |
32558/// +---+---------------+
32559/// | 1 | Zmm, Zmm, Zmm |
32560/// +---+---------------+
32561/// ```
32562pub trait VminphMaskSaeEmitter<A, B, C> {
32563    fn vminph_mask_sae(&mut self, op0: A, op1: B, op2: C);
32564}
32565
32566impl<'a> VminphMaskSaeEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32567    fn vminph_mask_sae(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32568        self.emit(
32569            VMINPH512RRR_MASK_SAE,
32570            op0.as_operand(),
32571            op1.as_operand(),
32572            op2.as_operand(),
32573            &NOREG,
32574        );
32575    }
32576}
32577
32578/// `VMINPH_MASKZ`.
32579///
32580/// Supported operand variants:
32581///
32582/// ```text
32583/// +---+---------------+
32584/// | # | Operands      |
32585/// +---+---------------+
32586/// | 1 | Xmm, Xmm, Mem |
32587/// | 2 | Xmm, Xmm, Xmm |
32588/// | 3 | Ymm, Ymm, Mem |
32589/// | 4 | Ymm, Ymm, Ymm |
32590/// | 5 | Zmm, Zmm, Mem |
32591/// | 6 | Zmm, Zmm, Zmm |
32592/// +---+---------------+
32593/// ```
32594pub trait VminphMaskzEmitter<A, B, C> {
32595    fn vminph_maskz(&mut self, op0: A, op1: B, op2: C);
32596}
32597
32598impl<'a> VminphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32599    fn vminph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32600        self.emit(
32601            VMINPH128RRR_MASKZ,
32602            op0.as_operand(),
32603            op1.as_operand(),
32604            op2.as_operand(),
32605            &NOREG,
32606        );
32607    }
32608}
32609
32610impl<'a> VminphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32611    fn vminph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32612        self.emit(
32613            VMINPH128RRM_MASKZ,
32614            op0.as_operand(),
32615            op1.as_operand(),
32616            op2.as_operand(),
32617            &NOREG,
32618        );
32619    }
32620}
32621
32622impl<'a> VminphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
32623    fn vminph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
32624        self.emit(
32625            VMINPH256RRR_MASKZ,
32626            op0.as_operand(),
32627            op1.as_operand(),
32628            op2.as_operand(),
32629            &NOREG,
32630        );
32631    }
32632}
32633
32634impl<'a> VminphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
32635    fn vminph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
32636        self.emit(
32637            VMINPH256RRM_MASKZ,
32638            op0.as_operand(),
32639            op1.as_operand(),
32640            op2.as_operand(),
32641            &NOREG,
32642        );
32643    }
32644}
32645
32646impl<'a> VminphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32647    fn vminph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32648        self.emit(
32649            VMINPH512RRR_MASKZ,
32650            op0.as_operand(),
32651            op1.as_operand(),
32652            op2.as_operand(),
32653            &NOREG,
32654        );
32655    }
32656}
32657
32658impl<'a> VminphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
32659    fn vminph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
32660        self.emit(
32661            VMINPH512RRM_MASKZ,
32662            op0.as_operand(),
32663            op1.as_operand(),
32664            op2.as_operand(),
32665            &NOREG,
32666        );
32667    }
32668}
32669
32670/// `VMINPH_MASKZ_SAE`.
32671///
32672/// Supported operand variants:
32673///
32674/// ```text
32675/// +---+---------------+
32676/// | # | Operands      |
32677/// +---+---------------+
32678/// | 1 | Zmm, Zmm, Zmm |
32679/// +---+---------------+
32680/// ```
32681pub trait VminphMaskzSaeEmitter<A, B, C> {
32682    fn vminph_maskz_sae(&mut self, op0: A, op1: B, op2: C);
32683}
32684
32685impl<'a> VminphMaskzSaeEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32686    fn vminph_maskz_sae(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32687        self.emit(
32688            VMINPH512RRR_MASKZ_SAE,
32689            op0.as_operand(),
32690            op1.as_operand(),
32691            op2.as_operand(),
32692            &NOREG,
32693        );
32694    }
32695}
32696
32697/// `VMINPH_SAE`.
32698///
32699/// Supported operand variants:
32700///
32701/// ```text
32702/// +---+---------------+
32703/// | # | Operands      |
32704/// +---+---------------+
32705/// | 1 | Zmm, Zmm, Zmm |
32706/// +---+---------------+
32707/// ```
32708pub trait VminphSaeEmitter<A, B, C> {
32709    fn vminph_sae(&mut self, op0: A, op1: B, op2: C);
32710}
32711
32712impl<'a> VminphSaeEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
32713    fn vminph_sae(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
32714        self.emit(
32715            VMINPH512RRR_SAE,
32716            op0.as_operand(),
32717            op1.as_operand(),
32718            op2.as_operand(),
32719            &NOREG,
32720        );
32721    }
32722}
32723
32724/// `VMINSH`.
32725///
32726/// Supported operand variants:
32727///
32728/// ```text
32729/// +---+---------------+
32730/// | # | Operands      |
32731/// +---+---------------+
32732/// | 1 | Xmm, Xmm, Mem |
32733/// | 2 | Xmm, Xmm, Xmm |
32734/// +---+---------------+
32735/// ```
32736pub trait VminshEmitter<A, B, C> {
32737    fn vminsh(&mut self, op0: A, op1: B, op2: C);
32738}
32739
32740impl<'a> VminshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32741    fn vminsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32742        self.emit(
32743            VMINSHRRR,
32744            op0.as_operand(),
32745            op1.as_operand(),
32746            op2.as_operand(),
32747            &NOREG,
32748        );
32749    }
32750}
32751
32752impl<'a> VminshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32753    fn vminsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32754        self.emit(
32755            VMINSHRRM,
32756            op0.as_operand(),
32757            op1.as_operand(),
32758            op2.as_operand(),
32759            &NOREG,
32760        );
32761    }
32762}
32763
32764/// `VMINSH_MASK`.
32765///
32766/// Supported operand variants:
32767///
32768/// ```text
32769/// +---+---------------+
32770/// | # | Operands      |
32771/// +---+---------------+
32772/// | 1 | Xmm, Xmm, Mem |
32773/// | 2 | Xmm, Xmm, Xmm |
32774/// +---+---------------+
32775/// ```
32776pub trait VminshMaskEmitter<A, B, C> {
32777    fn vminsh_mask(&mut self, op0: A, op1: B, op2: C);
32778}
32779
32780impl<'a> VminshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32781    fn vminsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32782        self.emit(
32783            VMINSHRRR_MASK,
32784            op0.as_operand(),
32785            op1.as_operand(),
32786            op2.as_operand(),
32787            &NOREG,
32788        );
32789    }
32790}
32791
32792impl<'a> VminshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32793    fn vminsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32794        self.emit(
32795            VMINSHRRM_MASK,
32796            op0.as_operand(),
32797            op1.as_operand(),
32798            op2.as_operand(),
32799            &NOREG,
32800        );
32801    }
32802}
32803
32804/// `VMINSH_MASK_SAE`.
32805///
32806/// Supported operand variants:
32807///
32808/// ```text
32809/// +---+---------------+
32810/// | # | Operands      |
32811/// +---+---------------+
32812/// | 1 | Xmm, Xmm, Xmm |
32813/// +---+---------------+
32814/// ```
32815pub trait VminshMaskSaeEmitter<A, B, C> {
32816    fn vminsh_mask_sae(&mut self, op0: A, op1: B, op2: C);
32817}
32818
32819impl<'a> VminshMaskSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32820    fn vminsh_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32821        self.emit(
32822            VMINSHRRR_MASK_SAE,
32823            op0.as_operand(),
32824            op1.as_operand(),
32825            op2.as_operand(),
32826            &NOREG,
32827        );
32828    }
32829}
32830
32831/// `VMINSH_MASKZ`.
32832///
32833/// Supported operand variants:
32834///
32835/// ```text
32836/// +---+---------------+
32837/// | # | Operands      |
32838/// +---+---------------+
32839/// | 1 | Xmm, Xmm, Mem |
32840/// | 2 | Xmm, Xmm, Xmm |
32841/// +---+---------------+
32842/// ```
32843pub trait VminshMaskzEmitter<A, B, C> {
32844    fn vminsh_maskz(&mut self, op0: A, op1: B, op2: C);
32845}
32846
32847impl<'a> VminshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32848    fn vminsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32849        self.emit(
32850            VMINSHRRR_MASKZ,
32851            op0.as_operand(),
32852            op1.as_operand(),
32853            op2.as_operand(),
32854            &NOREG,
32855        );
32856    }
32857}
32858
32859impl<'a> VminshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
32860    fn vminsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
32861        self.emit(
32862            VMINSHRRM_MASKZ,
32863            op0.as_operand(),
32864            op1.as_operand(),
32865            op2.as_operand(),
32866            &NOREG,
32867        );
32868    }
32869}
32870
32871/// `VMINSH_MASKZ_SAE`.
32872///
32873/// Supported operand variants:
32874///
32875/// ```text
32876/// +---+---------------+
32877/// | # | Operands      |
32878/// +---+---------------+
32879/// | 1 | Xmm, Xmm, Xmm |
32880/// +---+---------------+
32881/// ```
32882pub trait VminshMaskzSaeEmitter<A, B, C> {
32883    fn vminsh_maskz_sae(&mut self, op0: A, op1: B, op2: C);
32884}
32885
32886impl<'a> VminshMaskzSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32887    fn vminsh_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32888        self.emit(
32889            VMINSHRRR_MASKZ_SAE,
32890            op0.as_operand(),
32891            op1.as_operand(),
32892            op2.as_operand(),
32893            &NOREG,
32894        );
32895    }
32896}
32897
32898/// `VMINSH_SAE`.
32899///
32900/// Supported operand variants:
32901///
32902/// ```text
32903/// +---+---------------+
32904/// | # | Operands      |
32905/// +---+---------------+
32906/// | 1 | Xmm, Xmm, Xmm |
32907/// +---+---------------+
32908/// ```
32909pub trait VminshSaeEmitter<A, B, C> {
32910    fn vminsh_sae(&mut self, op0: A, op1: B, op2: C);
32911}
32912
32913impl<'a> VminshSaeEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
32914    fn vminsh_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32915        self.emit(
32916            VMINSHRRR_SAE,
32917            op0.as_operand(),
32918            op1.as_operand(),
32919            op2.as_operand(),
32920            &NOREG,
32921        );
32922    }
32923}
32924
32925/// `VMOVSH`.
32926///
32927/// Supported operand variants:
32928///
32929/// ```text
32930/// +---+----------+
32931/// | # | Operands |
32932/// +---+----------+
32933/// | 1 | Mem, Xmm |
32934/// | 2 | Xmm, Mem |
32935/// +---+----------+
32936/// ```
32937pub trait VmovshEmitter_2<A, B> {
32938    fn vmovsh_2(&mut self, op0: A, op1: B);
32939}
32940
32941impl<'a> VmovshEmitter_2<Xmm, Mem> for Assembler<'a> {
32942    fn vmovsh_2(&mut self, op0: Xmm, op1: Mem) {
32943        self.emit(VMOVSHRM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
32944    }
32945}
32946
32947impl<'a> VmovshEmitter_2<Mem, Xmm> for Assembler<'a> {
32948    fn vmovsh_2(&mut self, op0: Mem, op1: Xmm) {
32949        self.emit(VMOVSHMR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
32950    }
32951}
32952
32953/// `VMOVSH`.
32954///
32955/// Supported operand variants:
32956///
32957/// ```text
32958/// +---+---------------+
32959/// | # | Operands      |
32960/// +---+---------------+
32961/// | 1 | Xmm, Xmm, Xmm |
32962/// +---+---------------+
32963/// ```
32964pub trait VmovshEmitter_3<A, B, C> {
32965    fn vmovsh_3(&mut self, op0: A, op1: B, op2: C);
32966}
32967
32968impl<'a> VmovshEmitter_3<Xmm, Xmm, Xmm> for Assembler<'a> {
32969    fn vmovsh_3(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32970        self.emit(
32971            VMOVSHRRR,
32972            op0.as_operand(),
32973            op1.as_operand(),
32974            op2.as_operand(),
32975            &NOREG,
32976        );
32977    }
32978}
32979
32980/// `VMOVSH_MASK`.
32981///
32982/// Supported operand variants:
32983///
32984/// ```text
32985/// +---+----------+
32986/// | # | Operands |
32987/// +---+----------+
32988/// | 1 | Mem, Xmm |
32989/// | 2 | Xmm, Mem |
32990/// +---+----------+
32991/// ```
32992pub trait VmovshMaskEmitter_2<A, B> {
32993    fn vmovsh_mask_2(&mut self, op0: A, op1: B);
32994}
32995
32996impl<'a> VmovshMaskEmitter_2<Xmm, Mem> for Assembler<'a> {
32997    fn vmovsh_mask_2(&mut self, op0: Xmm, op1: Mem) {
32998        self.emit(
32999            VMOVSHRM_MASK,
33000            op0.as_operand(),
33001            op1.as_operand(),
33002            &NOREG,
33003            &NOREG,
33004        );
33005    }
33006}
33007
33008impl<'a> VmovshMaskEmitter_2<Mem, Xmm> for Assembler<'a> {
33009    fn vmovsh_mask_2(&mut self, op0: Mem, op1: Xmm) {
33010        self.emit(
33011            VMOVSHMR_MASK,
33012            op0.as_operand(),
33013            op1.as_operand(),
33014            &NOREG,
33015            &NOREG,
33016        );
33017    }
33018}
33019
33020/// `VMOVSH_MASK`.
33021///
33022/// Supported operand variants:
33023///
33024/// ```text
33025/// +---+---------------+
33026/// | # | Operands      |
33027/// +---+---------------+
33028/// | 1 | Xmm, Xmm, Xmm |
33029/// +---+---------------+
33030/// ```
33031pub trait VmovshMaskEmitter_3<A, B, C> {
33032    fn vmovsh_mask_3(&mut self, op0: A, op1: B, op2: C);
33033}
33034
33035impl<'a> VmovshMaskEmitter_3<Xmm, Xmm, Xmm> for Assembler<'a> {
33036    fn vmovsh_mask_3(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33037        self.emit(
33038            VMOVSHRRR_MASK,
33039            op0.as_operand(),
33040            op1.as_operand(),
33041            op2.as_operand(),
33042            &NOREG,
33043        );
33044    }
33045}
33046
33047/// `VMOVSH_MASKZ`.
33048///
33049/// Supported operand variants:
33050///
33051/// ```text
33052/// +---+----------+
33053/// | # | Operands |
33054/// +---+----------+
33055/// | 1 | Xmm, Mem |
33056/// +---+----------+
33057/// ```
33058pub trait VmovshMaskzEmitter_2<A, B> {
33059    fn vmovsh_maskz_2(&mut self, op0: A, op1: B);
33060}
33061
33062impl<'a> VmovshMaskzEmitter_2<Xmm, Mem> for Assembler<'a> {
33063    fn vmovsh_maskz_2(&mut self, op0: Xmm, op1: Mem) {
33064        self.emit(
33065            VMOVSHRM_MASKZ,
33066            op0.as_operand(),
33067            op1.as_operand(),
33068            &NOREG,
33069            &NOREG,
33070        );
33071    }
33072}
33073
33074/// `VMOVSH_MASKZ`.
33075///
33076/// Supported operand variants:
33077///
33078/// ```text
33079/// +---+---------------+
33080/// | # | Operands      |
33081/// +---+---------------+
33082/// | 1 | Xmm, Xmm, Xmm |
33083/// +---+---------------+
33084/// ```
33085pub trait VmovshMaskzEmitter_3<A, B, C> {
33086    fn vmovsh_maskz_3(&mut self, op0: A, op1: B, op2: C);
33087}
33088
33089impl<'a> VmovshMaskzEmitter_3<Xmm, Xmm, Xmm> for Assembler<'a> {
33090    fn vmovsh_maskz_3(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33091        self.emit(
33092            VMOVSHRRR_MASKZ,
33093            op0.as_operand(),
33094            op1.as_operand(),
33095            op2.as_operand(),
33096            &NOREG,
33097        );
33098    }
33099}
33100
33101/// `VMOVW_G2X`.
33102///
33103/// Supported operand variants:
33104///
33105/// ```text
33106/// +---+----------+
33107/// | # | Operands |
33108/// +---+----------+
33109/// | 1 | Xmm, Gpd |
33110/// | 2 | Xmm, Mem |
33111/// +---+----------+
33112/// ```
33113pub trait VmovwG2xEmitter<A, B> {
33114    fn vmovw_g2x(&mut self, op0: A, op1: B);
33115}
33116
33117impl<'a> VmovwG2xEmitter<Xmm, Gpd> for Assembler<'a> {
33118    fn vmovw_g2x(&mut self, op0: Xmm, op1: Gpd) {
33119        self.emit(
33120            VMOVW_G2XRR,
33121            op0.as_operand(),
33122            op1.as_operand(),
33123            &NOREG,
33124            &NOREG,
33125        );
33126    }
33127}
33128
33129impl<'a> VmovwG2xEmitter<Xmm, Mem> for Assembler<'a> {
33130    fn vmovw_g2x(&mut self, op0: Xmm, op1: Mem) {
33131        self.emit(
33132            VMOVW_G2XRM,
33133            op0.as_operand(),
33134            op1.as_operand(),
33135            &NOREG,
33136            &NOREG,
33137        );
33138    }
33139}
33140
33141/// `VMOVW_X2G`.
33142///
33143/// Supported operand variants:
33144///
33145/// ```text
33146/// +---+----------+
33147/// | # | Operands |
33148/// +---+----------+
33149/// | 1 | Gpd, Xmm |
33150/// | 2 | Mem, Xmm |
33151/// +---+----------+
33152/// ```
33153pub trait VmovwX2gEmitter<A, B> {
33154    fn vmovw_x2g(&mut self, op0: A, op1: B);
33155}
33156
33157impl<'a> VmovwX2gEmitter<Gpd, Xmm> for Assembler<'a> {
33158    fn vmovw_x2g(&mut self, op0: Gpd, op1: Xmm) {
33159        self.emit(
33160            VMOVW_X2GRR,
33161            op0.as_operand(),
33162            op1.as_operand(),
33163            &NOREG,
33164            &NOREG,
33165        );
33166    }
33167}
33168
33169impl<'a> VmovwX2gEmitter<Mem, Xmm> for Assembler<'a> {
33170    fn vmovw_x2g(&mut self, op0: Mem, op1: Xmm) {
33171        self.emit(
33172            VMOVW_X2GMR,
33173            op0.as_operand(),
33174            op1.as_operand(),
33175            &NOREG,
33176            &NOREG,
33177        );
33178    }
33179}
33180
33181/// `VMULPH`.
33182///
33183/// Supported operand variants:
33184///
33185/// ```text
33186/// +---+---------------+
33187/// | # | Operands      |
33188/// +---+---------------+
33189/// | 1 | Xmm, Xmm, Mem |
33190/// | 2 | Xmm, Xmm, Xmm |
33191/// | 3 | Ymm, Ymm, Mem |
33192/// | 4 | Ymm, Ymm, Ymm |
33193/// | 5 | Zmm, Zmm, Mem |
33194/// | 6 | Zmm, Zmm, Zmm |
33195/// +---+---------------+
33196/// ```
33197pub trait VmulphEmitter<A, B, C> {
33198    fn vmulph(&mut self, op0: A, op1: B, op2: C);
33199}
33200
33201impl<'a> VmulphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33202    fn vmulph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33203        self.emit(
33204            VMULPH128RRR,
33205            op0.as_operand(),
33206            op1.as_operand(),
33207            op2.as_operand(),
33208            &NOREG,
33209        );
33210    }
33211}
33212
33213impl<'a> VmulphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33214    fn vmulph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33215        self.emit(
33216            VMULPH128RRM,
33217            op0.as_operand(),
33218            op1.as_operand(),
33219            op2.as_operand(),
33220            &NOREG,
33221        );
33222    }
33223}
33224
33225impl<'a> VmulphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
33226    fn vmulph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
33227        self.emit(
33228            VMULPH256RRR,
33229            op0.as_operand(),
33230            op1.as_operand(),
33231            op2.as_operand(),
33232            &NOREG,
33233        );
33234    }
33235}
33236
33237impl<'a> VmulphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
33238    fn vmulph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
33239        self.emit(
33240            VMULPH256RRM,
33241            op0.as_operand(),
33242            op1.as_operand(),
33243            op2.as_operand(),
33244            &NOREG,
33245        );
33246    }
33247}
33248
33249impl<'a> VmulphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
33250    fn vmulph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
33251        self.emit(
33252            VMULPH512RRR,
33253            op0.as_operand(),
33254            op1.as_operand(),
33255            op2.as_operand(),
33256            &NOREG,
33257        );
33258    }
33259}
33260
33261impl<'a> VmulphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
33262    fn vmulph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
33263        self.emit(
33264            VMULPH512RRM,
33265            op0.as_operand(),
33266            op1.as_operand(),
33267            op2.as_operand(),
33268            &NOREG,
33269        );
33270    }
33271}
33272
33273/// `VMULPH_ER`.
33274///
33275/// Supported operand variants:
33276///
33277/// ```text
33278/// +---+---------------+
33279/// | # | Operands      |
33280/// +---+---------------+
33281/// | 1 | Zmm, Zmm, Zmm |
33282/// +---+---------------+
33283/// ```
33284pub trait VmulphErEmitter<A, B, C> {
33285    fn vmulph_er(&mut self, op0: A, op1: B, op2: C);
33286}
33287
33288impl<'a> VmulphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
33289    fn vmulph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
33290        self.emit(
33291            VMULPH512RRR_ER,
33292            op0.as_operand(),
33293            op1.as_operand(),
33294            op2.as_operand(),
33295            &NOREG,
33296        );
33297    }
33298}
33299
33300/// `VMULPH_MASK`.
33301///
33302/// Supported operand variants:
33303///
33304/// ```text
33305/// +---+---------------+
33306/// | # | Operands      |
33307/// +---+---------------+
33308/// | 1 | Xmm, Xmm, Mem |
33309/// | 2 | Xmm, Xmm, Xmm |
33310/// | 3 | Ymm, Ymm, Mem |
33311/// | 4 | Ymm, Ymm, Ymm |
33312/// | 5 | Zmm, Zmm, Mem |
33313/// | 6 | Zmm, Zmm, Zmm |
33314/// +---+---------------+
33315/// ```
33316pub trait VmulphMaskEmitter<A, B, C> {
33317    fn vmulph_mask(&mut self, op0: A, op1: B, op2: C);
33318}
33319
33320impl<'a> VmulphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33321    fn vmulph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33322        self.emit(
33323            VMULPH128RRR_MASK,
33324            op0.as_operand(),
33325            op1.as_operand(),
33326            op2.as_operand(),
33327            &NOREG,
33328        );
33329    }
33330}
33331
33332impl<'a> VmulphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33333    fn vmulph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33334        self.emit(
33335            VMULPH128RRM_MASK,
33336            op0.as_operand(),
33337            op1.as_operand(),
33338            op2.as_operand(),
33339            &NOREG,
33340        );
33341    }
33342}
33343
33344impl<'a> VmulphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
33345    fn vmulph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
33346        self.emit(
33347            VMULPH256RRR_MASK,
33348            op0.as_operand(),
33349            op1.as_operand(),
33350            op2.as_operand(),
33351            &NOREG,
33352        );
33353    }
33354}
33355
33356impl<'a> VmulphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
33357    fn vmulph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
33358        self.emit(
33359            VMULPH256RRM_MASK,
33360            op0.as_operand(),
33361            op1.as_operand(),
33362            op2.as_operand(),
33363            &NOREG,
33364        );
33365    }
33366}
33367
33368impl<'a> VmulphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
33369    fn vmulph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
33370        self.emit(
33371            VMULPH512RRR_MASK,
33372            op0.as_operand(),
33373            op1.as_operand(),
33374            op2.as_operand(),
33375            &NOREG,
33376        );
33377    }
33378}
33379
33380impl<'a> VmulphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
33381    fn vmulph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
33382        self.emit(
33383            VMULPH512RRM_MASK,
33384            op0.as_operand(),
33385            op1.as_operand(),
33386            op2.as_operand(),
33387            &NOREG,
33388        );
33389    }
33390}
33391
33392/// `VMULPH_MASK_ER`.
33393///
33394/// Supported operand variants:
33395///
33396/// ```text
33397/// +---+---------------+
33398/// | # | Operands      |
33399/// +---+---------------+
33400/// | 1 | Zmm, Zmm, Zmm |
33401/// +---+---------------+
33402/// ```
33403pub trait VmulphMaskErEmitter<A, B, C> {
33404    fn vmulph_mask_er(&mut self, op0: A, op1: B, op2: C);
33405}
33406
33407impl<'a> VmulphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
33408    fn vmulph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
33409        self.emit(
33410            VMULPH512RRR_MASK_ER,
33411            op0.as_operand(),
33412            op1.as_operand(),
33413            op2.as_operand(),
33414            &NOREG,
33415        );
33416    }
33417}
33418
33419/// `VMULPH_MASKZ`.
33420///
33421/// Supported operand variants:
33422///
33423/// ```text
33424/// +---+---------------+
33425/// | # | Operands      |
33426/// +---+---------------+
33427/// | 1 | Xmm, Xmm, Mem |
33428/// | 2 | Xmm, Xmm, Xmm |
33429/// | 3 | Ymm, Ymm, Mem |
33430/// | 4 | Ymm, Ymm, Ymm |
33431/// | 5 | Zmm, Zmm, Mem |
33432/// | 6 | Zmm, Zmm, Zmm |
33433/// +---+---------------+
33434/// ```
33435pub trait VmulphMaskzEmitter<A, B, C> {
33436    fn vmulph_maskz(&mut self, op0: A, op1: B, op2: C);
33437}
33438
33439impl<'a> VmulphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33440    fn vmulph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33441        self.emit(
33442            VMULPH128RRR_MASKZ,
33443            op0.as_operand(),
33444            op1.as_operand(),
33445            op2.as_operand(),
33446            &NOREG,
33447        );
33448    }
33449}
33450
33451impl<'a> VmulphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33452    fn vmulph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33453        self.emit(
33454            VMULPH128RRM_MASKZ,
33455            op0.as_operand(),
33456            op1.as_operand(),
33457            op2.as_operand(),
33458            &NOREG,
33459        );
33460    }
33461}
33462
33463impl<'a> VmulphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
33464    fn vmulph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
33465        self.emit(
33466            VMULPH256RRR_MASKZ,
33467            op0.as_operand(),
33468            op1.as_operand(),
33469            op2.as_operand(),
33470            &NOREG,
33471        );
33472    }
33473}
33474
33475impl<'a> VmulphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
33476    fn vmulph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
33477        self.emit(
33478            VMULPH256RRM_MASKZ,
33479            op0.as_operand(),
33480            op1.as_operand(),
33481            op2.as_operand(),
33482            &NOREG,
33483        );
33484    }
33485}
33486
33487impl<'a> VmulphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
33488    fn vmulph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
33489        self.emit(
33490            VMULPH512RRR_MASKZ,
33491            op0.as_operand(),
33492            op1.as_operand(),
33493            op2.as_operand(),
33494            &NOREG,
33495        );
33496    }
33497}
33498
33499impl<'a> VmulphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
33500    fn vmulph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
33501        self.emit(
33502            VMULPH512RRM_MASKZ,
33503            op0.as_operand(),
33504            op1.as_operand(),
33505            op2.as_operand(),
33506            &NOREG,
33507        );
33508    }
33509}
33510
33511/// `VMULPH_MASKZ_ER`.
33512///
33513/// Supported operand variants:
33514///
33515/// ```text
33516/// +---+---------------+
33517/// | # | Operands      |
33518/// +---+---------------+
33519/// | 1 | Zmm, Zmm, Zmm |
33520/// +---+---------------+
33521/// ```
33522pub trait VmulphMaskzErEmitter<A, B, C> {
33523    fn vmulph_maskz_er(&mut self, op0: A, op1: B, op2: C);
33524}
33525
33526impl<'a> VmulphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
33527    fn vmulph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
33528        self.emit(
33529            VMULPH512RRR_MASKZ_ER,
33530            op0.as_operand(),
33531            op1.as_operand(),
33532            op2.as_operand(),
33533            &NOREG,
33534        );
33535    }
33536}
33537
33538/// `VMULSH`.
33539///
33540/// Supported operand variants:
33541///
33542/// ```text
33543/// +---+---------------+
33544/// | # | Operands      |
33545/// +---+---------------+
33546/// | 1 | Xmm, Xmm, Mem |
33547/// | 2 | Xmm, Xmm, Xmm |
33548/// +---+---------------+
33549/// ```
33550pub trait VmulshEmitter<A, B, C> {
33551    fn vmulsh(&mut self, op0: A, op1: B, op2: C);
33552}
33553
33554impl<'a> VmulshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33555    fn vmulsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33556        self.emit(
33557            VMULSHRRR,
33558            op0.as_operand(),
33559            op1.as_operand(),
33560            op2.as_operand(),
33561            &NOREG,
33562        );
33563    }
33564}
33565
33566impl<'a> VmulshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33567    fn vmulsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33568        self.emit(
33569            VMULSHRRM,
33570            op0.as_operand(),
33571            op1.as_operand(),
33572            op2.as_operand(),
33573            &NOREG,
33574        );
33575    }
33576}
33577
33578/// `VMULSH_ER`.
33579///
33580/// Supported operand variants:
33581///
33582/// ```text
33583/// +---+---------------+
33584/// | # | Operands      |
33585/// +---+---------------+
33586/// | 1 | Xmm, Xmm, Xmm |
33587/// +---+---------------+
33588/// ```
33589pub trait VmulshErEmitter<A, B, C> {
33590    fn vmulsh_er(&mut self, op0: A, op1: B, op2: C);
33591}
33592
33593impl<'a> VmulshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33594    fn vmulsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33595        self.emit(
33596            VMULSHRRR_ER,
33597            op0.as_operand(),
33598            op1.as_operand(),
33599            op2.as_operand(),
33600            &NOREG,
33601        );
33602    }
33603}
33604
33605/// `VMULSH_MASK`.
33606///
33607/// Supported operand variants:
33608///
33609/// ```text
33610/// +---+---------------+
33611/// | # | Operands      |
33612/// +---+---------------+
33613/// | 1 | Xmm, Xmm, Mem |
33614/// | 2 | Xmm, Xmm, Xmm |
33615/// +---+---------------+
33616/// ```
33617pub trait VmulshMaskEmitter<A, B, C> {
33618    fn vmulsh_mask(&mut self, op0: A, op1: B, op2: C);
33619}
33620
33621impl<'a> VmulshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33622    fn vmulsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33623        self.emit(
33624            VMULSHRRR_MASK,
33625            op0.as_operand(),
33626            op1.as_operand(),
33627            op2.as_operand(),
33628            &NOREG,
33629        );
33630    }
33631}
33632
33633impl<'a> VmulshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33634    fn vmulsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33635        self.emit(
33636            VMULSHRRM_MASK,
33637            op0.as_operand(),
33638            op1.as_operand(),
33639            op2.as_operand(),
33640            &NOREG,
33641        );
33642    }
33643}
33644
33645/// `VMULSH_MASK_ER`.
33646///
33647/// Supported operand variants:
33648///
33649/// ```text
33650/// +---+---------------+
33651/// | # | Operands      |
33652/// +---+---------------+
33653/// | 1 | Xmm, Xmm, Xmm |
33654/// +---+---------------+
33655/// ```
33656pub trait VmulshMaskErEmitter<A, B, C> {
33657    fn vmulsh_mask_er(&mut self, op0: A, op1: B, op2: C);
33658}
33659
33660impl<'a> VmulshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33661    fn vmulsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33662        self.emit(
33663            VMULSHRRR_MASK_ER,
33664            op0.as_operand(),
33665            op1.as_operand(),
33666            op2.as_operand(),
33667            &NOREG,
33668        );
33669    }
33670}
33671
33672/// `VMULSH_MASKZ`.
33673///
33674/// Supported operand variants:
33675///
33676/// ```text
33677/// +---+---------------+
33678/// | # | Operands      |
33679/// +---+---------------+
33680/// | 1 | Xmm, Xmm, Mem |
33681/// | 2 | Xmm, Xmm, Xmm |
33682/// +---+---------------+
33683/// ```
33684pub trait VmulshMaskzEmitter<A, B, C> {
33685    fn vmulsh_maskz(&mut self, op0: A, op1: B, op2: C);
33686}
33687
33688impl<'a> VmulshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33689    fn vmulsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33690        self.emit(
33691            VMULSHRRR_MASKZ,
33692            op0.as_operand(),
33693            op1.as_operand(),
33694            op2.as_operand(),
33695            &NOREG,
33696        );
33697    }
33698}
33699
33700impl<'a> VmulshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33701    fn vmulsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33702        self.emit(
33703            VMULSHRRM_MASKZ,
33704            op0.as_operand(),
33705            op1.as_operand(),
33706            op2.as_operand(),
33707            &NOREG,
33708        );
33709    }
33710}
33711
33712/// `VMULSH_MASKZ_ER`.
33713///
33714/// Supported operand variants:
33715///
33716/// ```text
33717/// +---+---------------+
33718/// | # | Operands      |
33719/// +---+---------------+
33720/// | 1 | Xmm, Xmm, Xmm |
33721/// +---+---------------+
33722/// ```
33723pub trait VmulshMaskzErEmitter<A, B, C> {
33724    fn vmulsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
33725}
33726
33727impl<'a> VmulshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33728    fn vmulsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33729        self.emit(
33730            VMULSHRRR_MASKZ_ER,
33731            op0.as_operand(),
33732            op1.as_operand(),
33733            op2.as_operand(),
33734            &NOREG,
33735        );
33736    }
33737}
33738
33739/// `VPCLMULQDQ`.
33740///
33741/// Supported operand variants:
33742///
33743/// ```text
33744/// +---+--------------------+
33745/// | # | Operands           |
33746/// +---+--------------------+
33747/// | 1 | Xmm, Xmm, Mem, Imm |
33748/// | 2 | Xmm, Xmm, Xmm, Imm |
33749/// | 3 | Ymm, Ymm, Mem, Imm |
33750/// | 4 | Ymm, Ymm, Ymm, Imm |
33751/// | 5 | Zmm, Zmm, Mem, Imm |
33752/// | 6 | Zmm, Zmm, Zmm, Imm |
33753/// +---+--------------------+
33754/// ```
33755pub trait VpclmulqdqEmitter<A, B, C, D> {
33756    fn vpclmulqdq(&mut self, op0: A, op1: B, op2: C, op3: D);
33757}
33758
33759impl<'a> VpclmulqdqEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
33760    fn vpclmulqdq(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
33761        self.emit(
33762            VPCLMULQDQ128RRRI,
33763            op0.as_operand(),
33764            op1.as_operand(),
33765            op2.as_operand(),
33766            op3.as_operand(),
33767        );
33768    }
33769}
33770
33771impl<'a> VpclmulqdqEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
33772    fn vpclmulqdq(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
33773        self.emit(
33774            VPCLMULQDQ128RRMI,
33775            op0.as_operand(),
33776            op1.as_operand(),
33777            op2.as_operand(),
33778            op3.as_operand(),
33779        );
33780    }
33781}
33782
33783impl<'a> VpclmulqdqEmitter<Ymm, Ymm, Ymm, Imm> for Assembler<'a> {
33784    fn vpclmulqdq(&mut self, op0: Ymm, op1: Ymm, op2: Ymm, op3: Imm) {
33785        self.emit(
33786            VPCLMULQDQ256RRRI,
33787            op0.as_operand(),
33788            op1.as_operand(),
33789            op2.as_operand(),
33790            op3.as_operand(),
33791        );
33792    }
33793}
33794
33795impl<'a> VpclmulqdqEmitter<Ymm, Ymm, Mem, Imm> for Assembler<'a> {
33796    fn vpclmulqdq(&mut self, op0: Ymm, op1: Ymm, op2: Mem, op3: Imm) {
33797        self.emit(
33798            VPCLMULQDQ256RRMI,
33799            op0.as_operand(),
33800            op1.as_operand(),
33801            op2.as_operand(),
33802            op3.as_operand(),
33803        );
33804    }
33805}
33806
33807impl<'a> VpclmulqdqEmitter<Zmm, Zmm, Zmm, Imm> for Assembler<'a> {
33808    fn vpclmulqdq(&mut self, op0: Zmm, op1: Zmm, op2: Zmm, op3: Imm) {
33809        self.emit(
33810            VPCLMULQDQ512RRRI,
33811            op0.as_operand(),
33812            op1.as_operand(),
33813            op2.as_operand(),
33814            op3.as_operand(),
33815        );
33816    }
33817}
33818
33819impl<'a> VpclmulqdqEmitter<Zmm, Zmm, Mem, Imm> for Assembler<'a> {
33820    fn vpclmulqdq(&mut self, op0: Zmm, op1: Zmm, op2: Mem, op3: Imm) {
33821        self.emit(
33822            VPCLMULQDQ512RRMI,
33823            op0.as_operand(),
33824            op1.as_operand(),
33825            op2.as_operand(),
33826            op3.as_operand(),
33827        );
33828    }
33829}
33830
33831/// `VPDPBSSD`.
33832///
33833/// Supported operand variants:
33834///
33835/// ```text
33836/// +---+---------------+
33837/// | # | Operands      |
33838/// +---+---------------+
33839/// | 1 | Xmm, Xmm, Mem |
33840/// | 2 | Xmm, Xmm, Xmm |
33841/// | 3 | Ymm, Ymm, Mem |
33842/// | 4 | Ymm, Ymm, Ymm |
33843/// +---+---------------+
33844/// ```
33845pub trait VpdpbssdEmitter<A, B, C> {
33846    fn vpdpbssd(&mut self, op0: A, op1: B, op2: C);
33847}
33848
33849impl<'a> VpdpbssdEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33850    fn vpdpbssd(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33851        self.emit(
33852            VPDPBSSD128RRR,
33853            op0.as_operand(),
33854            op1.as_operand(),
33855            op2.as_operand(),
33856            &NOREG,
33857        );
33858    }
33859}
33860
33861impl<'a> VpdpbssdEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33862    fn vpdpbssd(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33863        self.emit(
33864            VPDPBSSD128RRM,
33865            op0.as_operand(),
33866            op1.as_operand(),
33867            op2.as_operand(),
33868            &NOREG,
33869        );
33870    }
33871}
33872
33873impl<'a> VpdpbssdEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
33874    fn vpdpbssd(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
33875        self.emit(
33876            VPDPBSSD256RRR,
33877            op0.as_operand(),
33878            op1.as_operand(),
33879            op2.as_operand(),
33880            &NOREG,
33881        );
33882    }
33883}
33884
33885impl<'a> VpdpbssdEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
33886    fn vpdpbssd(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
33887        self.emit(
33888            VPDPBSSD256RRM,
33889            op0.as_operand(),
33890            op1.as_operand(),
33891            op2.as_operand(),
33892            &NOREG,
33893        );
33894    }
33895}
33896
33897/// `VPDPBSSDS`.
33898///
33899/// Supported operand variants:
33900///
33901/// ```text
33902/// +---+---------------+
33903/// | # | Operands      |
33904/// +---+---------------+
33905/// | 1 | Xmm, Xmm, Mem |
33906/// | 2 | Xmm, Xmm, Xmm |
33907/// | 3 | Ymm, Ymm, Mem |
33908/// | 4 | Ymm, Ymm, Ymm |
33909/// +---+---------------+
33910/// ```
33911pub trait VpdpbssdsEmitter<A, B, C> {
33912    fn vpdpbssds(&mut self, op0: A, op1: B, op2: C);
33913}
33914
33915impl<'a> VpdpbssdsEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33916    fn vpdpbssds(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33917        self.emit(
33918            VPDPBSSDS128RRR,
33919            op0.as_operand(),
33920            op1.as_operand(),
33921            op2.as_operand(),
33922            &NOREG,
33923        );
33924    }
33925}
33926
33927impl<'a> VpdpbssdsEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33928    fn vpdpbssds(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33929        self.emit(
33930            VPDPBSSDS128RRM,
33931            op0.as_operand(),
33932            op1.as_operand(),
33933            op2.as_operand(),
33934            &NOREG,
33935        );
33936    }
33937}
33938
33939impl<'a> VpdpbssdsEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
33940    fn vpdpbssds(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
33941        self.emit(
33942            VPDPBSSDS256RRR,
33943            op0.as_operand(),
33944            op1.as_operand(),
33945            op2.as_operand(),
33946            &NOREG,
33947        );
33948    }
33949}
33950
33951impl<'a> VpdpbssdsEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
33952    fn vpdpbssds(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
33953        self.emit(
33954            VPDPBSSDS256RRM,
33955            op0.as_operand(),
33956            op1.as_operand(),
33957            op2.as_operand(),
33958            &NOREG,
33959        );
33960    }
33961}
33962
33963/// `VPDPBSUD`.
33964///
33965/// Supported operand variants:
33966///
33967/// ```text
33968/// +---+---------------+
33969/// | # | Operands      |
33970/// +---+---------------+
33971/// | 1 | Xmm, Xmm, Mem |
33972/// | 2 | Xmm, Xmm, Xmm |
33973/// | 3 | Ymm, Ymm, Mem |
33974/// | 4 | Ymm, Ymm, Ymm |
33975/// +---+---------------+
33976/// ```
33977pub trait VpdpbsudEmitter<A, B, C> {
33978    fn vpdpbsud(&mut self, op0: A, op1: B, op2: C);
33979}
33980
33981impl<'a> VpdpbsudEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
33982    fn vpdpbsud(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
33983        self.emit(
33984            VPDPBSUD128RRR,
33985            op0.as_operand(),
33986            op1.as_operand(),
33987            op2.as_operand(),
33988            &NOREG,
33989        );
33990    }
33991}
33992
33993impl<'a> VpdpbsudEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
33994    fn vpdpbsud(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
33995        self.emit(
33996            VPDPBSUD128RRM,
33997            op0.as_operand(),
33998            op1.as_operand(),
33999            op2.as_operand(),
34000            &NOREG,
34001        );
34002    }
34003}
34004
34005impl<'a> VpdpbsudEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
34006    fn vpdpbsud(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
34007        self.emit(
34008            VPDPBSUD256RRR,
34009            op0.as_operand(),
34010            op1.as_operand(),
34011            op2.as_operand(),
34012            &NOREG,
34013        );
34014    }
34015}
34016
34017impl<'a> VpdpbsudEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
34018    fn vpdpbsud(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
34019        self.emit(
34020            VPDPBSUD256RRM,
34021            op0.as_operand(),
34022            op1.as_operand(),
34023            op2.as_operand(),
34024            &NOREG,
34025        );
34026    }
34027}
34028
34029/// `VPDPBSUDS`.
34030///
34031/// Supported operand variants:
34032///
34033/// ```text
34034/// +---+---------------+
34035/// | # | Operands      |
34036/// +---+---------------+
34037/// | 1 | Xmm, Xmm, Mem |
34038/// | 2 | Xmm, Xmm, Xmm |
34039/// | 3 | Ymm, Ymm, Mem |
34040/// | 4 | Ymm, Ymm, Ymm |
34041/// +---+---------------+
34042/// ```
34043pub trait VpdpbsudsEmitter<A, B, C> {
34044    fn vpdpbsuds(&mut self, op0: A, op1: B, op2: C);
34045}
34046
34047impl<'a> VpdpbsudsEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
34048    fn vpdpbsuds(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
34049        self.emit(
34050            VPDPBSUDS128RRR,
34051            op0.as_operand(),
34052            op1.as_operand(),
34053            op2.as_operand(),
34054            &NOREG,
34055        );
34056    }
34057}
34058
34059impl<'a> VpdpbsudsEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
34060    fn vpdpbsuds(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
34061        self.emit(
34062            VPDPBSUDS128RRM,
34063            op0.as_operand(),
34064            op1.as_operand(),
34065            op2.as_operand(),
34066            &NOREG,
34067        );
34068    }
34069}
34070
34071impl<'a> VpdpbsudsEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
34072    fn vpdpbsuds(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
34073        self.emit(
34074            VPDPBSUDS256RRR,
34075            op0.as_operand(),
34076            op1.as_operand(),
34077            op2.as_operand(),
34078            &NOREG,
34079        );
34080    }
34081}
34082
34083impl<'a> VpdpbsudsEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
34084    fn vpdpbsuds(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
34085        self.emit(
34086            VPDPBSUDS256RRM,
34087            op0.as_operand(),
34088            op1.as_operand(),
34089            op2.as_operand(),
34090            &NOREG,
34091        );
34092    }
34093}
34094
34095/// `VPDPBUUD`.
34096///
34097/// Supported operand variants:
34098///
34099/// ```text
34100/// +---+---------------+
34101/// | # | Operands      |
34102/// +---+---------------+
34103/// | 1 | Xmm, Xmm, Mem |
34104/// | 2 | Xmm, Xmm, Xmm |
34105/// | 3 | Ymm, Ymm, Mem |
34106/// | 4 | Ymm, Ymm, Ymm |
34107/// +---+---------------+
34108/// ```
34109pub trait VpdpbuudEmitter<A, B, C> {
34110    fn vpdpbuud(&mut self, op0: A, op1: B, op2: C);
34111}
34112
34113impl<'a> VpdpbuudEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
34114    fn vpdpbuud(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
34115        self.emit(
34116            VPDPBUUD128RRR,
34117            op0.as_operand(),
34118            op1.as_operand(),
34119            op2.as_operand(),
34120            &NOREG,
34121        );
34122    }
34123}
34124
34125impl<'a> VpdpbuudEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
34126    fn vpdpbuud(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
34127        self.emit(
34128            VPDPBUUD128RRM,
34129            op0.as_operand(),
34130            op1.as_operand(),
34131            op2.as_operand(),
34132            &NOREG,
34133        );
34134    }
34135}
34136
34137impl<'a> VpdpbuudEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
34138    fn vpdpbuud(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
34139        self.emit(
34140            VPDPBUUD256RRR,
34141            op0.as_operand(),
34142            op1.as_operand(),
34143            op2.as_operand(),
34144            &NOREG,
34145        );
34146    }
34147}
34148
34149impl<'a> VpdpbuudEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
34150    fn vpdpbuud(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
34151        self.emit(
34152            VPDPBUUD256RRM,
34153            op0.as_operand(),
34154            op1.as_operand(),
34155            op2.as_operand(),
34156            &NOREG,
34157        );
34158    }
34159}
34160
34161/// `VPDPBUUDS`.
34162///
34163/// Supported operand variants:
34164///
34165/// ```text
34166/// +---+---------------+
34167/// | # | Operands      |
34168/// +---+---------------+
34169/// | 1 | Xmm, Xmm, Mem |
34170/// | 2 | Xmm, Xmm, Xmm |
34171/// | 3 | Ymm, Ymm, Mem |
34172/// | 4 | Ymm, Ymm, Ymm |
34173/// +---+---------------+
34174/// ```
34175pub trait VpdpbuudsEmitter<A, B, C> {
34176    fn vpdpbuuds(&mut self, op0: A, op1: B, op2: C);
34177}
34178
34179impl<'a> VpdpbuudsEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
34180    fn vpdpbuuds(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
34181        self.emit(
34182            VPDPBUUDS128RRR,
34183            op0.as_operand(),
34184            op1.as_operand(),
34185            op2.as_operand(),
34186            &NOREG,
34187        );
34188    }
34189}
34190
34191impl<'a> VpdpbuudsEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
34192    fn vpdpbuuds(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
34193        self.emit(
34194            VPDPBUUDS128RRM,
34195            op0.as_operand(),
34196            op1.as_operand(),
34197            op2.as_operand(),
34198            &NOREG,
34199        );
34200    }
34201}
34202
34203impl<'a> VpdpbuudsEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
34204    fn vpdpbuuds(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
34205        self.emit(
34206            VPDPBUUDS256RRR,
34207            op0.as_operand(),
34208            op1.as_operand(),
34209            op2.as_operand(),
34210            &NOREG,
34211        );
34212    }
34213}
34214
34215impl<'a> VpdpbuudsEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
34216    fn vpdpbuuds(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
34217        self.emit(
34218            VPDPBUUDS256RRM,
34219            op0.as_operand(),
34220            op1.as_operand(),
34221            op2.as_operand(),
34222            &NOREG,
34223        );
34224    }
34225}
34226
34227/// `VRCPPH`.
34228///
34229/// Supported operand variants:
34230///
34231/// ```text
34232/// +---+----------+
34233/// | # | Operands |
34234/// +---+----------+
34235/// | 1 | Xmm, Mem |
34236/// | 2 | Xmm, Xmm |
34237/// | 3 | Ymm, Mem |
34238/// | 4 | Ymm, Ymm |
34239/// | 5 | Zmm, Mem |
34240/// | 6 | Zmm, Zmm |
34241/// +---+----------+
34242/// ```
34243pub trait VrcpphEmitter<A, B> {
34244    fn vrcpph(&mut self, op0: A, op1: B);
34245}
34246
34247impl<'a> VrcpphEmitter<Xmm, Xmm> for Assembler<'a> {
34248    fn vrcpph(&mut self, op0: Xmm, op1: Xmm) {
34249        self.emit(
34250            VRCPPH128RR,
34251            op0.as_operand(),
34252            op1.as_operand(),
34253            &NOREG,
34254            &NOREG,
34255        );
34256    }
34257}
34258
34259impl<'a> VrcpphEmitter<Xmm, Mem> for Assembler<'a> {
34260    fn vrcpph(&mut self, op0: Xmm, op1: Mem) {
34261        self.emit(
34262            VRCPPH128RM,
34263            op0.as_operand(),
34264            op1.as_operand(),
34265            &NOREG,
34266            &NOREG,
34267        );
34268    }
34269}
34270
34271impl<'a> VrcpphEmitter<Ymm, Ymm> for Assembler<'a> {
34272    fn vrcpph(&mut self, op0: Ymm, op1: Ymm) {
34273        self.emit(
34274            VRCPPH256RR,
34275            op0.as_operand(),
34276            op1.as_operand(),
34277            &NOREG,
34278            &NOREG,
34279        );
34280    }
34281}
34282
34283impl<'a> VrcpphEmitter<Ymm, Mem> for Assembler<'a> {
34284    fn vrcpph(&mut self, op0: Ymm, op1: Mem) {
34285        self.emit(
34286            VRCPPH256RM,
34287            op0.as_operand(),
34288            op1.as_operand(),
34289            &NOREG,
34290            &NOREG,
34291        );
34292    }
34293}
34294
34295impl<'a> VrcpphEmitter<Zmm, Zmm> for Assembler<'a> {
34296    fn vrcpph(&mut self, op0: Zmm, op1: Zmm) {
34297        self.emit(
34298            VRCPPH512RR,
34299            op0.as_operand(),
34300            op1.as_operand(),
34301            &NOREG,
34302            &NOREG,
34303        );
34304    }
34305}
34306
34307impl<'a> VrcpphEmitter<Zmm, Mem> for Assembler<'a> {
34308    fn vrcpph(&mut self, op0: Zmm, op1: Mem) {
34309        self.emit(
34310            VRCPPH512RM,
34311            op0.as_operand(),
34312            op1.as_operand(),
34313            &NOREG,
34314            &NOREG,
34315        );
34316    }
34317}
34318
34319/// `VRCPPH_MASK`.
34320///
34321/// Supported operand variants:
34322///
34323/// ```text
34324/// +---+----------+
34325/// | # | Operands |
34326/// +---+----------+
34327/// | 1 | Xmm, Mem |
34328/// | 2 | Xmm, Xmm |
34329/// | 3 | Ymm, Mem |
34330/// | 4 | Ymm, Ymm |
34331/// | 5 | Zmm, Mem |
34332/// | 6 | Zmm, Zmm |
34333/// +---+----------+
34334/// ```
34335pub trait VrcpphMaskEmitter<A, B> {
34336    fn vrcpph_mask(&mut self, op0: A, op1: B);
34337}
34338
34339impl<'a> VrcpphMaskEmitter<Xmm, Xmm> for Assembler<'a> {
34340    fn vrcpph_mask(&mut self, op0: Xmm, op1: Xmm) {
34341        self.emit(
34342            VRCPPH128RR_MASK,
34343            op0.as_operand(),
34344            op1.as_operand(),
34345            &NOREG,
34346            &NOREG,
34347        );
34348    }
34349}
34350
34351impl<'a> VrcpphMaskEmitter<Xmm, Mem> for Assembler<'a> {
34352    fn vrcpph_mask(&mut self, op0: Xmm, op1: Mem) {
34353        self.emit(
34354            VRCPPH128RM_MASK,
34355            op0.as_operand(),
34356            op1.as_operand(),
34357            &NOREG,
34358            &NOREG,
34359        );
34360    }
34361}
34362
34363impl<'a> VrcpphMaskEmitter<Ymm, Ymm> for Assembler<'a> {
34364    fn vrcpph_mask(&mut self, op0: Ymm, op1: Ymm) {
34365        self.emit(
34366            VRCPPH256RR_MASK,
34367            op0.as_operand(),
34368            op1.as_operand(),
34369            &NOREG,
34370            &NOREG,
34371        );
34372    }
34373}
34374
34375impl<'a> VrcpphMaskEmitter<Ymm, Mem> for Assembler<'a> {
34376    fn vrcpph_mask(&mut self, op0: Ymm, op1: Mem) {
34377        self.emit(
34378            VRCPPH256RM_MASK,
34379            op0.as_operand(),
34380            op1.as_operand(),
34381            &NOREG,
34382            &NOREG,
34383        );
34384    }
34385}
34386
34387impl<'a> VrcpphMaskEmitter<Zmm, Zmm> for Assembler<'a> {
34388    fn vrcpph_mask(&mut self, op0: Zmm, op1: Zmm) {
34389        self.emit(
34390            VRCPPH512RR_MASK,
34391            op0.as_operand(),
34392            op1.as_operand(),
34393            &NOREG,
34394            &NOREG,
34395        );
34396    }
34397}
34398
34399impl<'a> VrcpphMaskEmitter<Zmm, Mem> for Assembler<'a> {
34400    fn vrcpph_mask(&mut self, op0: Zmm, op1: Mem) {
34401        self.emit(
34402            VRCPPH512RM_MASK,
34403            op0.as_operand(),
34404            op1.as_operand(),
34405            &NOREG,
34406            &NOREG,
34407        );
34408    }
34409}
34410
34411/// `VRCPPH_MASKZ`.
34412///
34413/// Supported operand variants:
34414///
34415/// ```text
34416/// +---+----------+
34417/// | # | Operands |
34418/// +---+----------+
34419/// | 1 | Xmm, Mem |
34420/// | 2 | Xmm, Xmm |
34421/// | 3 | Ymm, Mem |
34422/// | 4 | Ymm, Ymm |
34423/// | 5 | Zmm, Mem |
34424/// | 6 | Zmm, Zmm |
34425/// +---+----------+
34426/// ```
34427pub trait VrcpphMaskzEmitter<A, B> {
34428    fn vrcpph_maskz(&mut self, op0: A, op1: B);
34429}
34430
34431impl<'a> VrcpphMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
34432    fn vrcpph_maskz(&mut self, op0: Xmm, op1: Xmm) {
34433        self.emit(
34434            VRCPPH128RR_MASKZ,
34435            op0.as_operand(),
34436            op1.as_operand(),
34437            &NOREG,
34438            &NOREG,
34439        );
34440    }
34441}
34442
34443impl<'a> VrcpphMaskzEmitter<Xmm, Mem> for Assembler<'a> {
34444    fn vrcpph_maskz(&mut self, op0: Xmm, op1: Mem) {
34445        self.emit(
34446            VRCPPH128RM_MASKZ,
34447            op0.as_operand(),
34448            op1.as_operand(),
34449            &NOREG,
34450            &NOREG,
34451        );
34452    }
34453}
34454
34455impl<'a> VrcpphMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
34456    fn vrcpph_maskz(&mut self, op0: Ymm, op1: Ymm) {
34457        self.emit(
34458            VRCPPH256RR_MASKZ,
34459            op0.as_operand(),
34460            op1.as_operand(),
34461            &NOREG,
34462            &NOREG,
34463        );
34464    }
34465}
34466
34467impl<'a> VrcpphMaskzEmitter<Ymm, Mem> for Assembler<'a> {
34468    fn vrcpph_maskz(&mut self, op0: Ymm, op1: Mem) {
34469        self.emit(
34470            VRCPPH256RM_MASKZ,
34471            op0.as_operand(),
34472            op1.as_operand(),
34473            &NOREG,
34474            &NOREG,
34475        );
34476    }
34477}
34478
34479impl<'a> VrcpphMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
34480    fn vrcpph_maskz(&mut self, op0: Zmm, op1: Zmm) {
34481        self.emit(
34482            VRCPPH512RR_MASKZ,
34483            op0.as_operand(),
34484            op1.as_operand(),
34485            &NOREG,
34486            &NOREG,
34487        );
34488    }
34489}
34490
34491impl<'a> VrcpphMaskzEmitter<Zmm, Mem> for Assembler<'a> {
34492    fn vrcpph_maskz(&mut self, op0: Zmm, op1: Mem) {
34493        self.emit(
34494            VRCPPH512RM_MASKZ,
34495            op0.as_operand(),
34496            op1.as_operand(),
34497            &NOREG,
34498            &NOREG,
34499        );
34500    }
34501}
34502
34503/// `VRCPSH`.
34504///
34505/// Supported operand variants:
34506///
34507/// ```text
34508/// +---+---------------+
34509/// | # | Operands      |
34510/// +---+---------------+
34511/// | 1 | Xmm, Xmm, Mem |
34512/// | 2 | Xmm, Xmm, Xmm |
34513/// +---+---------------+
34514/// ```
34515pub trait VrcpshEmitter<A, B, C> {
34516    fn vrcpsh(&mut self, op0: A, op1: B, op2: C);
34517}
34518
34519impl<'a> VrcpshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
34520    fn vrcpsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
34521        self.emit(
34522            VRCPSHRRR,
34523            op0.as_operand(),
34524            op1.as_operand(),
34525            op2.as_operand(),
34526            &NOREG,
34527        );
34528    }
34529}
34530
34531impl<'a> VrcpshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
34532    fn vrcpsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
34533        self.emit(
34534            VRCPSHRRM,
34535            op0.as_operand(),
34536            op1.as_operand(),
34537            op2.as_operand(),
34538            &NOREG,
34539        );
34540    }
34541}
34542
34543/// `VRCPSH_MASK`.
34544///
34545/// Supported operand variants:
34546///
34547/// ```text
34548/// +---+---------------+
34549/// | # | Operands      |
34550/// +---+---------------+
34551/// | 1 | Xmm, Xmm, Mem |
34552/// | 2 | Xmm, Xmm, Xmm |
34553/// +---+---------------+
34554/// ```
34555pub trait VrcpshMaskEmitter<A, B, C> {
34556    fn vrcpsh_mask(&mut self, op0: A, op1: B, op2: C);
34557}
34558
34559impl<'a> VrcpshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
34560    fn vrcpsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
34561        self.emit(
34562            VRCPSHRRR_MASK,
34563            op0.as_operand(),
34564            op1.as_operand(),
34565            op2.as_operand(),
34566            &NOREG,
34567        );
34568    }
34569}
34570
34571impl<'a> VrcpshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
34572    fn vrcpsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
34573        self.emit(
34574            VRCPSHRRM_MASK,
34575            op0.as_operand(),
34576            op1.as_operand(),
34577            op2.as_operand(),
34578            &NOREG,
34579        );
34580    }
34581}
34582
34583/// `VRCPSH_MASKZ`.
34584///
34585/// Supported operand variants:
34586///
34587/// ```text
34588/// +---+---------------+
34589/// | # | Operands      |
34590/// +---+---------------+
34591/// | 1 | Xmm, Xmm, Mem |
34592/// | 2 | Xmm, Xmm, Xmm |
34593/// +---+---------------+
34594/// ```
34595pub trait VrcpshMaskzEmitter<A, B, C> {
34596    fn vrcpsh_maskz(&mut self, op0: A, op1: B, op2: C);
34597}
34598
34599impl<'a> VrcpshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
34600    fn vrcpsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
34601        self.emit(
34602            VRCPSHRRR_MASKZ,
34603            op0.as_operand(),
34604            op1.as_operand(),
34605            op2.as_operand(),
34606            &NOREG,
34607        );
34608    }
34609}
34610
34611impl<'a> VrcpshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
34612    fn vrcpsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
34613        self.emit(
34614            VRCPSHRRM_MASKZ,
34615            op0.as_operand(),
34616            op1.as_operand(),
34617            op2.as_operand(),
34618            &NOREG,
34619        );
34620    }
34621}
34622
34623/// `VREDUCEPH`.
34624///
34625/// Supported operand variants:
34626///
34627/// ```text
34628/// +---+---------------+
34629/// | # | Operands      |
34630/// +---+---------------+
34631/// | 1 | Xmm, Mem, Imm |
34632/// | 2 | Xmm, Xmm, Imm |
34633/// | 3 | Ymm, Mem, Imm |
34634/// | 4 | Ymm, Ymm, Imm |
34635/// | 5 | Zmm, Mem, Imm |
34636/// | 6 | Zmm, Zmm, Imm |
34637/// +---+---------------+
34638/// ```
34639pub trait VreducephEmitter<A, B, C> {
34640    fn vreduceph(&mut self, op0: A, op1: B, op2: C);
34641}
34642
34643impl<'a> VreducephEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
34644    fn vreduceph(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
34645        self.emit(
34646            VREDUCEPH128RRI,
34647            op0.as_operand(),
34648            op1.as_operand(),
34649            op2.as_operand(),
34650            &NOREG,
34651        );
34652    }
34653}
34654
34655impl<'a> VreducephEmitter<Xmm, Mem, Imm> for Assembler<'a> {
34656    fn vreduceph(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
34657        self.emit(
34658            VREDUCEPH128RMI,
34659            op0.as_operand(),
34660            op1.as_operand(),
34661            op2.as_operand(),
34662            &NOREG,
34663        );
34664    }
34665}
34666
34667impl<'a> VreducephEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
34668    fn vreduceph(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
34669        self.emit(
34670            VREDUCEPH256RRI,
34671            op0.as_operand(),
34672            op1.as_operand(),
34673            op2.as_operand(),
34674            &NOREG,
34675        );
34676    }
34677}
34678
34679impl<'a> VreducephEmitter<Ymm, Mem, Imm> for Assembler<'a> {
34680    fn vreduceph(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
34681        self.emit(
34682            VREDUCEPH256RMI,
34683            op0.as_operand(),
34684            op1.as_operand(),
34685            op2.as_operand(),
34686            &NOREG,
34687        );
34688    }
34689}
34690
34691impl<'a> VreducephEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
34692    fn vreduceph(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
34693        self.emit(
34694            VREDUCEPH512RRI,
34695            op0.as_operand(),
34696            op1.as_operand(),
34697            op2.as_operand(),
34698            &NOREG,
34699        );
34700    }
34701}
34702
34703impl<'a> VreducephEmitter<Zmm, Mem, Imm> for Assembler<'a> {
34704    fn vreduceph(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
34705        self.emit(
34706            VREDUCEPH512RMI,
34707            op0.as_operand(),
34708            op1.as_operand(),
34709            op2.as_operand(),
34710            &NOREG,
34711        );
34712    }
34713}
34714
34715/// `VREDUCEPH_MASK`.
34716///
34717/// Supported operand variants:
34718///
34719/// ```text
34720/// +---+---------------+
34721/// | # | Operands      |
34722/// +---+---------------+
34723/// | 1 | Xmm, Mem, Imm |
34724/// | 2 | Xmm, Xmm, Imm |
34725/// | 3 | Ymm, Mem, Imm |
34726/// | 4 | Ymm, Ymm, Imm |
34727/// | 5 | Zmm, Mem, Imm |
34728/// | 6 | Zmm, Zmm, Imm |
34729/// +---+---------------+
34730/// ```
34731pub trait VreducephMaskEmitter<A, B, C> {
34732    fn vreduceph_mask(&mut self, op0: A, op1: B, op2: C);
34733}
34734
34735impl<'a> VreducephMaskEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
34736    fn vreduceph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
34737        self.emit(
34738            VREDUCEPH128RRI_MASK,
34739            op0.as_operand(),
34740            op1.as_operand(),
34741            op2.as_operand(),
34742            &NOREG,
34743        );
34744    }
34745}
34746
34747impl<'a> VreducephMaskEmitter<Xmm, Mem, Imm> for Assembler<'a> {
34748    fn vreduceph_mask(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
34749        self.emit(
34750            VREDUCEPH128RMI_MASK,
34751            op0.as_operand(),
34752            op1.as_operand(),
34753            op2.as_operand(),
34754            &NOREG,
34755        );
34756    }
34757}
34758
34759impl<'a> VreducephMaskEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
34760    fn vreduceph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
34761        self.emit(
34762            VREDUCEPH256RRI_MASK,
34763            op0.as_operand(),
34764            op1.as_operand(),
34765            op2.as_operand(),
34766            &NOREG,
34767        );
34768    }
34769}
34770
34771impl<'a> VreducephMaskEmitter<Ymm, Mem, Imm> for Assembler<'a> {
34772    fn vreduceph_mask(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
34773        self.emit(
34774            VREDUCEPH256RMI_MASK,
34775            op0.as_operand(),
34776            op1.as_operand(),
34777            op2.as_operand(),
34778            &NOREG,
34779        );
34780    }
34781}
34782
34783impl<'a> VreducephMaskEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
34784    fn vreduceph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
34785        self.emit(
34786            VREDUCEPH512RRI_MASK,
34787            op0.as_operand(),
34788            op1.as_operand(),
34789            op2.as_operand(),
34790            &NOREG,
34791        );
34792    }
34793}
34794
34795impl<'a> VreducephMaskEmitter<Zmm, Mem, Imm> for Assembler<'a> {
34796    fn vreduceph_mask(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
34797        self.emit(
34798            VREDUCEPH512RMI_MASK,
34799            op0.as_operand(),
34800            op1.as_operand(),
34801            op2.as_operand(),
34802            &NOREG,
34803        );
34804    }
34805}
34806
34807/// `VREDUCEPH_MASK_SAE`.
34808///
34809/// Supported operand variants:
34810///
34811/// ```text
34812/// +---+---------------+
34813/// | # | Operands      |
34814/// +---+---------------+
34815/// | 1 | Zmm, Zmm, Imm |
34816/// +---+---------------+
34817/// ```
34818pub trait VreducephMaskSaeEmitter<A, B, C> {
34819    fn vreduceph_mask_sae(&mut self, op0: A, op1: B, op2: C);
34820}
34821
34822impl<'a> VreducephMaskSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
34823    fn vreduceph_mask_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
34824        self.emit(
34825            VREDUCEPH512RRI_MASK_SAE,
34826            op0.as_operand(),
34827            op1.as_operand(),
34828            op2.as_operand(),
34829            &NOREG,
34830        );
34831    }
34832}
34833
34834/// `VREDUCEPH_MASKZ`.
34835///
34836/// Supported operand variants:
34837///
34838/// ```text
34839/// +---+---------------+
34840/// | # | Operands      |
34841/// +---+---------------+
34842/// | 1 | Xmm, Mem, Imm |
34843/// | 2 | Xmm, Xmm, Imm |
34844/// | 3 | Ymm, Mem, Imm |
34845/// | 4 | Ymm, Ymm, Imm |
34846/// | 5 | Zmm, Mem, Imm |
34847/// | 6 | Zmm, Zmm, Imm |
34848/// +---+---------------+
34849/// ```
34850pub trait VreducephMaskzEmitter<A, B, C> {
34851    fn vreduceph_maskz(&mut self, op0: A, op1: B, op2: C);
34852}
34853
34854impl<'a> VreducephMaskzEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
34855    fn vreduceph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
34856        self.emit(
34857            VREDUCEPH128RRI_MASKZ,
34858            op0.as_operand(),
34859            op1.as_operand(),
34860            op2.as_operand(),
34861            &NOREG,
34862        );
34863    }
34864}
34865
34866impl<'a> VreducephMaskzEmitter<Xmm, Mem, Imm> for Assembler<'a> {
34867    fn vreduceph_maskz(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
34868        self.emit(
34869            VREDUCEPH128RMI_MASKZ,
34870            op0.as_operand(),
34871            op1.as_operand(),
34872            op2.as_operand(),
34873            &NOREG,
34874        );
34875    }
34876}
34877
34878impl<'a> VreducephMaskzEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
34879    fn vreduceph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
34880        self.emit(
34881            VREDUCEPH256RRI_MASKZ,
34882            op0.as_operand(),
34883            op1.as_operand(),
34884            op2.as_operand(),
34885            &NOREG,
34886        );
34887    }
34888}
34889
34890impl<'a> VreducephMaskzEmitter<Ymm, Mem, Imm> for Assembler<'a> {
34891    fn vreduceph_maskz(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
34892        self.emit(
34893            VREDUCEPH256RMI_MASKZ,
34894            op0.as_operand(),
34895            op1.as_operand(),
34896            op2.as_operand(),
34897            &NOREG,
34898        );
34899    }
34900}
34901
34902impl<'a> VreducephMaskzEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
34903    fn vreduceph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
34904        self.emit(
34905            VREDUCEPH512RRI_MASKZ,
34906            op0.as_operand(),
34907            op1.as_operand(),
34908            op2.as_operand(),
34909            &NOREG,
34910        );
34911    }
34912}
34913
34914impl<'a> VreducephMaskzEmitter<Zmm, Mem, Imm> for Assembler<'a> {
34915    fn vreduceph_maskz(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
34916        self.emit(
34917            VREDUCEPH512RMI_MASKZ,
34918            op0.as_operand(),
34919            op1.as_operand(),
34920            op2.as_operand(),
34921            &NOREG,
34922        );
34923    }
34924}
34925
34926/// `VREDUCEPH_MASKZ_SAE`.
34927///
34928/// Supported operand variants:
34929///
34930/// ```text
34931/// +---+---------------+
34932/// | # | Operands      |
34933/// +---+---------------+
34934/// | 1 | Zmm, Zmm, Imm |
34935/// +---+---------------+
34936/// ```
34937pub trait VreducephMaskzSaeEmitter<A, B, C> {
34938    fn vreduceph_maskz_sae(&mut self, op0: A, op1: B, op2: C);
34939}
34940
34941impl<'a> VreducephMaskzSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
34942    fn vreduceph_maskz_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
34943        self.emit(
34944            VREDUCEPH512RRI_MASKZ_SAE,
34945            op0.as_operand(),
34946            op1.as_operand(),
34947            op2.as_operand(),
34948            &NOREG,
34949        );
34950    }
34951}
34952
34953/// `VREDUCEPH_SAE`.
34954///
34955/// Supported operand variants:
34956///
34957/// ```text
34958/// +---+---------------+
34959/// | # | Operands      |
34960/// +---+---------------+
34961/// | 1 | Zmm, Zmm, Imm |
34962/// +---+---------------+
34963/// ```
34964pub trait VreducephSaeEmitter<A, B, C> {
34965    fn vreduceph_sae(&mut self, op0: A, op1: B, op2: C);
34966}
34967
34968impl<'a> VreducephSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
34969    fn vreduceph_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
34970        self.emit(
34971            VREDUCEPH512RRI_SAE,
34972            op0.as_operand(),
34973            op1.as_operand(),
34974            op2.as_operand(),
34975            &NOREG,
34976        );
34977    }
34978}
34979
34980/// `VREDUCESH`.
34981///
34982/// Supported operand variants:
34983///
34984/// ```text
34985/// +---+--------------------+
34986/// | # | Operands           |
34987/// +---+--------------------+
34988/// | 1 | Xmm, Xmm, Mem, Imm |
34989/// | 2 | Xmm, Xmm, Xmm, Imm |
34990/// +---+--------------------+
34991/// ```
34992pub trait VreduceshEmitter<A, B, C, D> {
34993    fn vreducesh(&mut self, op0: A, op1: B, op2: C, op3: D);
34994}
34995
34996impl<'a> VreduceshEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
34997    fn vreducesh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
34998        self.emit(
34999            VREDUCESHRRRI,
35000            op0.as_operand(),
35001            op1.as_operand(),
35002            op2.as_operand(),
35003            op3.as_operand(),
35004        );
35005    }
35006}
35007
35008impl<'a> VreduceshEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
35009    fn vreducesh(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
35010        self.emit(
35011            VREDUCESHRRMI,
35012            op0.as_operand(),
35013            op1.as_operand(),
35014            op2.as_operand(),
35015            op3.as_operand(),
35016        );
35017    }
35018}
35019
35020/// `VREDUCESH_MASK`.
35021///
35022/// Supported operand variants:
35023///
35024/// ```text
35025/// +---+--------------------+
35026/// | # | Operands           |
35027/// +---+--------------------+
35028/// | 1 | Xmm, Xmm, Mem, Imm |
35029/// | 2 | Xmm, Xmm, Xmm, Imm |
35030/// +---+--------------------+
35031/// ```
35032pub trait VreduceshMaskEmitter<A, B, C, D> {
35033    fn vreducesh_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
35034}
35035
35036impl<'a> VreduceshMaskEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35037    fn vreducesh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35038        self.emit(
35039            VREDUCESHRRRI_MASK,
35040            op0.as_operand(),
35041            op1.as_operand(),
35042            op2.as_operand(),
35043            op3.as_operand(),
35044        );
35045    }
35046}
35047
35048impl<'a> VreduceshMaskEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
35049    fn vreducesh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
35050        self.emit(
35051            VREDUCESHRRMI_MASK,
35052            op0.as_operand(),
35053            op1.as_operand(),
35054            op2.as_operand(),
35055            op3.as_operand(),
35056        );
35057    }
35058}
35059
35060/// `VREDUCESH_MASK_SAE`.
35061///
35062/// Supported operand variants:
35063///
35064/// ```text
35065/// +---+--------------------+
35066/// | # | Operands           |
35067/// +---+--------------------+
35068/// | 1 | Xmm, Xmm, Xmm, Imm |
35069/// +---+--------------------+
35070/// ```
35071pub trait VreduceshMaskSaeEmitter<A, B, C, D> {
35072    fn vreducesh_mask_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
35073}
35074
35075impl<'a> VreduceshMaskSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35076    fn vreducesh_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35077        self.emit(
35078            VREDUCESHRRRI_MASK_SAE,
35079            op0.as_operand(),
35080            op1.as_operand(),
35081            op2.as_operand(),
35082            op3.as_operand(),
35083        );
35084    }
35085}
35086
35087/// `VREDUCESH_MASKZ`.
35088///
35089/// Supported operand variants:
35090///
35091/// ```text
35092/// +---+--------------------+
35093/// | # | Operands           |
35094/// +---+--------------------+
35095/// | 1 | Xmm, Xmm, Mem, Imm |
35096/// | 2 | Xmm, Xmm, Xmm, Imm |
35097/// +---+--------------------+
35098/// ```
35099pub trait VreduceshMaskzEmitter<A, B, C, D> {
35100    fn vreducesh_maskz(&mut self, op0: A, op1: B, op2: C, op3: D);
35101}
35102
35103impl<'a> VreduceshMaskzEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35104    fn vreducesh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35105        self.emit(
35106            VREDUCESHRRRI_MASKZ,
35107            op0.as_operand(),
35108            op1.as_operand(),
35109            op2.as_operand(),
35110            op3.as_operand(),
35111        );
35112    }
35113}
35114
35115impl<'a> VreduceshMaskzEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
35116    fn vreducesh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
35117        self.emit(
35118            VREDUCESHRRMI_MASKZ,
35119            op0.as_operand(),
35120            op1.as_operand(),
35121            op2.as_operand(),
35122            op3.as_operand(),
35123        );
35124    }
35125}
35126
35127/// `VREDUCESH_MASKZ_SAE`.
35128///
35129/// Supported operand variants:
35130///
35131/// ```text
35132/// +---+--------------------+
35133/// | # | Operands           |
35134/// +---+--------------------+
35135/// | 1 | Xmm, Xmm, Xmm, Imm |
35136/// +---+--------------------+
35137/// ```
35138pub trait VreduceshMaskzSaeEmitter<A, B, C, D> {
35139    fn vreducesh_maskz_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
35140}
35141
35142impl<'a> VreduceshMaskzSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35143    fn vreducesh_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35144        self.emit(
35145            VREDUCESHRRRI_MASKZ_SAE,
35146            op0.as_operand(),
35147            op1.as_operand(),
35148            op2.as_operand(),
35149            op3.as_operand(),
35150        );
35151    }
35152}
35153
35154/// `VREDUCESH_SAE`.
35155///
35156/// Supported operand variants:
35157///
35158/// ```text
35159/// +---+--------------------+
35160/// | # | Operands           |
35161/// +---+--------------------+
35162/// | 1 | Xmm, Xmm, Xmm, Imm |
35163/// +---+--------------------+
35164/// ```
35165pub trait VreduceshSaeEmitter<A, B, C, D> {
35166    fn vreducesh_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
35167}
35168
35169impl<'a> VreduceshSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35170    fn vreducesh_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35171        self.emit(
35172            VREDUCESHRRRI_SAE,
35173            op0.as_operand(),
35174            op1.as_operand(),
35175            op2.as_operand(),
35176            op3.as_operand(),
35177        );
35178    }
35179}
35180
35181/// `VRNDSCALEPH`.
35182///
35183/// Supported operand variants:
35184///
35185/// ```text
35186/// +---+---------------+
35187/// | # | Operands      |
35188/// +---+---------------+
35189/// | 1 | Xmm, Mem, Imm |
35190/// | 2 | Xmm, Xmm, Imm |
35191/// | 3 | Ymm, Mem, Imm |
35192/// | 4 | Ymm, Ymm, Imm |
35193/// | 5 | Zmm, Mem, Imm |
35194/// | 6 | Zmm, Zmm, Imm |
35195/// +---+---------------+
35196/// ```
35197pub trait VrndscalephEmitter<A, B, C> {
35198    fn vrndscaleph(&mut self, op0: A, op1: B, op2: C);
35199}
35200
35201impl<'a> VrndscalephEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
35202    fn vrndscaleph(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
35203        self.emit(
35204            VRNDSCALEPH128RRI,
35205            op0.as_operand(),
35206            op1.as_operand(),
35207            op2.as_operand(),
35208            &NOREG,
35209        );
35210    }
35211}
35212
35213impl<'a> VrndscalephEmitter<Xmm, Mem, Imm> for Assembler<'a> {
35214    fn vrndscaleph(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
35215        self.emit(
35216            VRNDSCALEPH128RMI,
35217            op0.as_operand(),
35218            op1.as_operand(),
35219            op2.as_operand(),
35220            &NOREG,
35221        );
35222    }
35223}
35224
35225impl<'a> VrndscalephEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
35226    fn vrndscaleph(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
35227        self.emit(
35228            VRNDSCALEPH256RRI,
35229            op0.as_operand(),
35230            op1.as_operand(),
35231            op2.as_operand(),
35232            &NOREG,
35233        );
35234    }
35235}
35236
35237impl<'a> VrndscalephEmitter<Ymm, Mem, Imm> for Assembler<'a> {
35238    fn vrndscaleph(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
35239        self.emit(
35240            VRNDSCALEPH256RMI,
35241            op0.as_operand(),
35242            op1.as_operand(),
35243            op2.as_operand(),
35244            &NOREG,
35245        );
35246    }
35247}
35248
35249impl<'a> VrndscalephEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
35250    fn vrndscaleph(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
35251        self.emit(
35252            VRNDSCALEPH512RRI,
35253            op0.as_operand(),
35254            op1.as_operand(),
35255            op2.as_operand(),
35256            &NOREG,
35257        );
35258    }
35259}
35260
35261impl<'a> VrndscalephEmitter<Zmm, Mem, Imm> for Assembler<'a> {
35262    fn vrndscaleph(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
35263        self.emit(
35264            VRNDSCALEPH512RMI,
35265            op0.as_operand(),
35266            op1.as_operand(),
35267            op2.as_operand(),
35268            &NOREG,
35269        );
35270    }
35271}
35272
35273/// `VRNDSCALEPH_MASK`.
35274///
35275/// Supported operand variants:
35276///
35277/// ```text
35278/// +---+---------------+
35279/// | # | Operands      |
35280/// +---+---------------+
35281/// | 1 | Xmm, Mem, Imm |
35282/// | 2 | Xmm, Xmm, Imm |
35283/// | 3 | Ymm, Mem, Imm |
35284/// | 4 | Ymm, Ymm, Imm |
35285/// | 5 | Zmm, Mem, Imm |
35286/// | 6 | Zmm, Zmm, Imm |
35287/// +---+---------------+
35288/// ```
35289pub trait VrndscalephMaskEmitter<A, B, C> {
35290    fn vrndscaleph_mask(&mut self, op0: A, op1: B, op2: C);
35291}
35292
35293impl<'a> VrndscalephMaskEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
35294    fn vrndscaleph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
35295        self.emit(
35296            VRNDSCALEPH128RRI_MASK,
35297            op0.as_operand(),
35298            op1.as_operand(),
35299            op2.as_operand(),
35300            &NOREG,
35301        );
35302    }
35303}
35304
35305impl<'a> VrndscalephMaskEmitter<Xmm, Mem, Imm> for Assembler<'a> {
35306    fn vrndscaleph_mask(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
35307        self.emit(
35308            VRNDSCALEPH128RMI_MASK,
35309            op0.as_operand(),
35310            op1.as_operand(),
35311            op2.as_operand(),
35312            &NOREG,
35313        );
35314    }
35315}
35316
35317impl<'a> VrndscalephMaskEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
35318    fn vrndscaleph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
35319        self.emit(
35320            VRNDSCALEPH256RRI_MASK,
35321            op0.as_operand(),
35322            op1.as_operand(),
35323            op2.as_operand(),
35324            &NOREG,
35325        );
35326    }
35327}
35328
35329impl<'a> VrndscalephMaskEmitter<Ymm, Mem, Imm> for Assembler<'a> {
35330    fn vrndscaleph_mask(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
35331        self.emit(
35332            VRNDSCALEPH256RMI_MASK,
35333            op0.as_operand(),
35334            op1.as_operand(),
35335            op2.as_operand(),
35336            &NOREG,
35337        );
35338    }
35339}
35340
35341impl<'a> VrndscalephMaskEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
35342    fn vrndscaleph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
35343        self.emit(
35344            VRNDSCALEPH512RRI_MASK,
35345            op0.as_operand(),
35346            op1.as_operand(),
35347            op2.as_operand(),
35348            &NOREG,
35349        );
35350    }
35351}
35352
35353impl<'a> VrndscalephMaskEmitter<Zmm, Mem, Imm> for Assembler<'a> {
35354    fn vrndscaleph_mask(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
35355        self.emit(
35356            VRNDSCALEPH512RMI_MASK,
35357            op0.as_operand(),
35358            op1.as_operand(),
35359            op2.as_operand(),
35360            &NOREG,
35361        );
35362    }
35363}
35364
35365/// `VRNDSCALEPH_MASK_SAE`.
35366///
35367/// Supported operand variants:
35368///
35369/// ```text
35370/// +---+---------------+
35371/// | # | Operands      |
35372/// +---+---------------+
35373/// | 1 | Zmm, Zmm, Imm |
35374/// +---+---------------+
35375/// ```
35376pub trait VrndscalephMaskSaeEmitter<A, B, C> {
35377    fn vrndscaleph_mask_sae(&mut self, op0: A, op1: B, op2: C);
35378}
35379
35380impl<'a> VrndscalephMaskSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
35381    fn vrndscaleph_mask_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
35382        self.emit(
35383            VRNDSCALEPH512RRI_MASK_SAE,
35384            op0.as_operand(),
35385            op1.as_operand(),
35386            op2.as_operand(),
35387            &NOREG,
35388        );
35389    }
35390}
35391
35392/// `VRNDSCALEPH_MASKZ`.
35393///
35394/// Supported operand variants:
35395///
35396/// ```text
35397/// +---+---------------+
35398/// | # | Operands      |
35399/// +---+---------------+
35400/// | 1 | Xmm, Mem, Imm |
35401/// | 2 | Xmm, Xmm, Imm |
35402/// | 3 | Ymm, Mem, Imm |
35403/// | 4 | Ymm, Ymm, Imm |
35404/// | 5 | Zmm, Mem, Imm |
35405/// | 6 | Zmm, Zmm, Imm |
35406/// +---+---------------+
35407/// ```
35408pub trait VrndscalephMaskzEmitter<A, B, C> {
35409    fn vrndscaleph_maskz(&mut self, op0: A, op1: B, op2: C);
35410}
35411
35412impl<'a> VrndscalephMaskzEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
35413    fn vrndscaleph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
35414        self.emit(
35415            VRNDSCALEPH128RRI_MASKZ,
35416            op0.as_operand(),
35417            op1.as_operand(),
35418            op2.as_operand(),
35419            &NOREG,
35420        );
35421    }
35422}
35423
35424impl<'a> VrndscalephMaskzEmitter<Xmm, Mem, Imm> for Assembler<'a> {
35425    fn vrndscaleph_maskz(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
35426        self.emit(
35427            VRNDSCALEPH128RMI_MASKZ,
35428            op0.as_operand(),
35429            op1.as_operand(),
35430            op2.as_operand(),
35431            &NOREG,
35432        );
35433    }
35434}
35435
35436impl<'a> VrndscalephMaskzEmitter<Ymm, Ymm, Imm> for Assembler<'a> {
35437    fn vrndscaleph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Imm) {
35438        self.emit(
35439            VRNDSCALEPH256RRI_MASKZ,
35440            op0.as_operand(),
35441            op1.as_operand(),
35442            op2.as_operand(),
35443            &NOREG,
35444        );
35445    }
35446}
35447
35448impl<'a> VrndscalephMaskzEmitter<Ymm, Mem, Imm> for Assembler<'a> {
35449    fn vrndscaleph_maskz(&mut self, op0: Ymm, op1: Mem, op2: Imm) {
35450        self.emit(
35451            VRNDSCALEPH256RMI_MASKZ,
35452            op0.as_operand(),
35453            op1.as_operand(),
35454            op2.as_operand(),
35455            &NOREG,
35456        );
35457    }
35458}
35459
35460impl<'a> VrndscalephMaskzEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
35461    fn vrndscaleph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
35462        self.emit(
35463            VRNDSCALEPH512RRI_MASKZ,
35464            op0.as_operand(),
35465            op1.as_operand(),
35466            op2.as_operand(),
35467            &NOREG,
35468        );
35469    }
35470}
35471
35472impl<'a> VrndscalephMaskzEmitter<Zmm, Mem, Imm> for Assembler<'a> {
35473    fn vrndscaleph_maskz(&mut self, op0: Zmm, op1: Mem, op2: Imm) {
35474        self.emit(
35475            VRNDSCALEPH512RMI_MASKZ,
35476            op0.as_operand(),
35477            op1.as_operand(),
35478            op2.as_operand(),
35479            &NOREG,
35480        );
35481    }
35482}
35483
35484/// `VRNDSCALEPH_MASKZ_SAE`.
35485///
35486/// Supported operand variants:
35487///
35488/// ```text
35489/// +---+---------------+
35490/// | # | Operands      |
35491/// +---+---------------+
35492/// | 1 | Zmm, Zmm, Imm |
35493/// +---+---------------+
35494/// ```
35495pub trait VrndscalephMaskzSaeEmitter<A, B, C> {
35496    fn vrndscaleph_maskz_sae(&mut self, op0: A, op1: B, op2: C);
35497}
35498
35499impl<'a> VrndscalephMaskzSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
35500    fn vrndscaleph_maskz_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
35501        self.emit(
35502            VRNDSCALEPH512RRI_MASKZ_SAE,
35503            op0.as_operand(),
35504            op1.as_operand(),
35505            op2.as_operand(),
35506            &NOREG,
35507        );
35508    }
35509}
35510
35511/// `VRNDSCALEPH_SAE`.
35512///
35513/// Supported operand variants:
35514///
35515/// ```text
35516/// +---+---------------+
35517/// | # | Operands      |
35518/// +---+---------------+
35519/// | 1 | Zmm, Zmm, Imm |
35520/// +---+---------------+
35521/// ```
35522pub trait VrndscalephSaeEmitter<A, B, C> {
35523    fn vrndscaleph_sae(&mut self, op0: A, op1: B, op2: C);
35524}
35525
35526impl<'a> VrndscalephSaeEmitter<Zmm, Zmm, Imm> for Assembler<'a> {
35527    fn vrndscaleph_sae(&mut self, op0: Zmm, op1: Zmm, op2: Imm) {
35528        self.emit(
35529            VRNDSCALEPH512RRI_SAE,
35530            op0.as_operand(),
35531            op1.as_operand(),
35532            op2.as_operand(),
35533            &NOREG,
35534        );
35535    }
35536}
35537
35538/// `VRNDSCALESH`.
35539///
35540/// Supported operand variants:
35541///
35542/// ```text
35543/// +---+--------------------+
35544/// | # | Operands           |
35545/// +---+--------------------+
35546/// | 1 | Xmm, Xmm, Mem, Imm |
35547/// | 2 | Xmm, Xmm, Xmm, Imm |
35548/// +---+--------------------+
35549/// ```
35550pub trait VrndscaleshEmitter<A, B, C, D> {
35551    fn vrndscalesh(&mut self, op0: A, op1: B, op2: C, op3: D);
35552}
35553
35554impl<'a> VrndscaleshEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35555    fn vrndscalesh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35556        self.emit(
35557            VRNDSCALESHRRRI,
35558            op0.as_operand(),
35559            op1.as_operand(),
35560            op2.as_operand(),
35561            op3.as_operand(),
35562        );
35563    }
35564}
35565
35566impl<'a> VrndscaleshEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
35567    fn vrndscalesh(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
35568        self.emit(
35569            VRNDSCALESHRRMI,
35570            op0.as_operand(),
35571            op1.as_operand(),
35572            op2.as_operand(),
35573            op3.as_operand(),
35574        );
35575    }
35576}
35577
35578/// `VRNDSCALESH_MASK`.
35579///
35580/// Supported operand variants:
35581///
35582/// ```text
35583/// +---+--------------------+
35584/// | # | Operands           |
35585/// +---+--------------------+
35586/// | 1 | Xmm, Xmm, Mem, Imm |
35587/// | 2 | Xmm, Xmm, Xmm, Imm |
35588/// +---+--------------------+
35589/// ```
35590pub trait VrndscaleshMaskEmitter<A, B, C, D> {
35591    fn vrndscalesh_mask(&mut self, op0: A, op1: B, op2: C, op3: D);
35592}
35593
35594impl<'a> VrndscaleshMaskEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35595    fn vrndscalesh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35596        self.emit(
35597            VRNDSCALESHRRRI_MASK,
35598            op0.as_operand(),
35599            op1.as_operand(),
35600            op2.as_operand(),
35601            op3.as_operand(),
35602        );
35603    }
35604}
35605
35606impl<'a> VrndscaleshMaskEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
35607    fn vrndscalesh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
35608        self.emit(
35609            VRNDSCALESHRRMI_MASK,
35610            op0.as_operand(),
35611            op1.as_operand(),
35612            op2.as_operand(),
35613            op3.as_operand(),
35614        );
35615    }
35616}
35617
35618/// `VRNDSCALESH_MASK_SAE`.
35619///
35620/// Supported operand variants:
35621///
35622/// ```text
35623/// +---+--------------------+
35624/// | # | Operands           |
35625/// +---+--------------------+
35626/// | 1 | Xmm, Xmm, Xmm, Imm |
35627/// +---+--------------------+
35628/// ```
35629pub trait VrndscaleshMaskSaeEmitter<A, B, C, D> {
35630    fn vrndscalesh_mask_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
35631}
35632
35633impl<'a> VrndscaleshMaskSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35634    fn vrndscalesh_mask_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35635        self.emit(
35636            VRNDSCALESHRRRI_MASK_SAE,
35637            op0.as_operand(),
35638            op1.as_operand(),
35639            op2.as_operand(),
35640            op3.as_operand(),
35641        );
35642    }
35643}
35644
35645/// `VRNDSCALESH_MASKZ`.
35646///
35647/// Supported operand variants:
35648///
35649/// ```text
35650/// +---+--------------------+
35651/// | # | Operands           |
35652/// +---+--------------------+
35653/// | 1 | Xmm, Xmm, Mem, Imm |
35654/// | 2 | Xmm, Xmm, Xmm, Imm |
35655/// +---+--------------------+
35656/// ```
35657pub trait VrndscaleshMaskzEmitter<A, B, C, D> {
35658    fn vrndscalesh_maskz(&mut self, op0: A, op1: B, op2: C, op3: D);
35659}
35660
35661impl<'a> VrndscaleshMaskzEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35662    fn vrndscalesh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35663        self.emit(
35664            VRNDSCALESHRRRI_MASKZ,
35665            op0.as_operand(),
35666            op1.as_operand(),
35667            op2.as_operand(),
35668            op3.as_operand(),
35669        );
35670    }
35671}
35672
35673impl<'a> VrndscaleshMaskzEmitter<Xmm, Xmm, Mem, Imm> for Assembler<'a> {
35674    fn vrndscalesh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem, op3: Imm) {
35675        self.emit(
35676            VRNDSCALESHRRMI_MASKZ,
35677            op0.as_operand(),
35678            op1.as_operand(),
35679            op2.as_operand(),
35680            op3.as_operand(),
35681        );
35682    }
35683}
35684
35685/// `VRNDSCALESH_MASKZ_SAE`.
35686///
35687/// Supported operand variants:
35688///
35689/// ```text
35690/// +---+--------------------+
35691/// | # | Operands           |
35692/// +---+--------------------+
35693/// | 1 | Xmm, Xmm, Xmm, Imm |
35694/// +---+--------------------+
35695/// ```
35696pub trait VrndscaleshMaskzSaeEmitter<A, B, C, D> {
35697    fn vrndscalesh_maskz_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
35698}
35699
35700impl<'a> VrndscaleshMaskzSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35701    fn vrndscalesh_maskz_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35702        self.emit(
35703            VRNDSCALESHRRRI_MASKZ_SAE,
35704            op0.as_operand(),
35705            op1.as_operand(),
35706            op2.as_operand(),
35707            op3.as_operand(),
35708        );
35709    }
35710}
35711
35712/// `VRNDSCALESH_SAE`.
35713///
35714/// Supported operand variants:
35715///
35716/// ```text
35717/// +---+--------------------+
35718/// | # | Operands           |
35719/// +---+--------------------+
35720/// | 1 | Xmm, Xmm, Xmm, Imm |
35721/// +---+--------------------+
35722/// ```
35723pub trait VrndscaleshSaeEmitter<A, B, C, D> {
35724    fn vrndscalesh_sae(&mut self, op0: A, op1: B, op2: C, op3: D);
35725}
35726
35727impl<'a> VrndscaleshSaeEmitter<Xmm, Xmm, Xmm, Imm> for Assembler<'a> {
35728    fn vrndscalesh_sae(&mut self, op0: Xmm, op1: Xmm, op2: Xmm, op3: Imm) {
35729        self.emit(
35730            VRNDSCALESHRRRI_SAE,
35731            op0.as_operand(),
35732            op1.as_operand(),
35733            op2.as_operand(),
35734            op3.as_operand(),
35735        );
35736    }
35737}
35738
35739/// `VRSQRTPH`.
35740///
35741/// Supported operand variants:
35742///
35743/// ```text
35744/// +---+----------+
35745/// | # | Operands |
35746/// +---+----------+
35747/// | 1 | Xmm, Mem |
35748/// | 2 | Xmm, Xmm |
35749/// | 3 | Ymm, Mem |
35750/// | 4 | Ymm, Ymm |
35751/// | 5 | Zmm, Mem |
35752/// | 6 | Zmm, Zmm |
35753/// +---+----------+
35754/// ```
35755pub trait VrsqrtphEmitter<A, B> {
35756    fn vrsqrtph(&mut self, op0: A, op1: B);
35757}
35758
35759impl<'a> VrsqrtphEmitter<Xmm, Xmm> for Assembler<'a> {
35760    fn vrsqrtph(&mut self, op0: Xmm, op1: Xmm) {
35761        self.emit(
35762            VRSQRTPH128RR,
35763            op0.as_operand(),
35764            op1.as_operand(),
35765            &NOREG,
35766            &NOREG,
35767        );
35768    }
35769}
35770
35771impl<'a> VrsqrtphEmitter<Xmm, Mem> for Assembler<'a> {
35772    fn vrsqrtph(&mut self, op0: Xmm, op1: Mem) {
35773        self.emit(
35774            VRSQRTPH128RM,
35775            op0.as_operand(),
35776            op1.as_operand(),
35777            &NOREG,
35778            &NOREG,
35779        );
35780    }
35781}
35782
35783impl<'a> VrsqrtphEmitter<Ymm, Ymm> for Assembler<'a> {
35784    fn vrsqrtph(&mut self, op0: Ymm, op1: Ymm) {
35785        self.emit(
35786            VRSQRTPH256RR,
35787            op0.as_operand(),
35788            op1.as_operand(),
35789            &NOREG,
35790            &NOREG,
35791        );
35792    }
35793}
35794
35795impl<'a> VrsqrtphEmitter<Ymm, Mem> for Assembler<'a> {
35796    fn vrsqrtph(&mut self, op0: Ymm, op1: Mem) {
35797        self.emit(
35798            VRSQRTPH256RM,
35799            op0.as_operand(),
35800            op1.as_operand(),
35801            &NOREG,
35802            &NOREG,
35803        );
35804    }
35805}
35806
35807impl<'a> VrsqrtphEmitter<Zmm, Zmm> for Assembler<'a> {
35808    fn vrsqrtph(&mut self, op0: Zmm, op1: Zmm) {
35809        self.emit(
35810            VRSQRTPH512RR,
35811            op0.as_operand(),
35812            op1.as_operand(),
35813            &NOREG,
35814            &NOREG,
35815        );
35816    }
35817}
35818
35819impl<'a> VrsqrtphEmitter<Zmm, Mem> for Assembler<'a> {
35820    fn vrsqrtph(&mut self, op0: Zmm, op1: Mem) {
35821        self.emit(
35822            VRSQRTPH512RM,
35823            op0.as_operand(),
35824            op1.as_operand(),
35825            &NOREG,
35826            &NOREG,
35827        );
35828    }
35829}
35830
35831/// `VRSQRTPH_MASK`.
35832///
35833/// Supported operand variants:
35834///
35835/// ```text
35836/// +---+----------+
35837/// | # | Operands |
35838/// +---+----------+
35839/// | 1 | Xmm, Mem |
35840/// | 2 | Xmm, Xmm |
35841/// | 3 | Ymm, Mem |
35842/// | 4 | Ymm, Ymm |
35843/// | 5 | Zmm, Mem |
35844/// | 6 | Zmm, Zmm |
35845/// +---+----------+
35846/// ```
35847pub trait VrsqrtphMaskEmitter<A, B> {
35848    fn vrsqrtph_mask(&mut self, op0: A, op1: B);
35849}
35850
35851impl<'a> VrsqrtphMaskEmitter<Xmm, Xmm> for Assembler<'a> {
35852    fn vrsqrtph_mask(&mut self, op0: Xmm, op1: Xmm) {
35853        self.emit(
35854            VRSQRTPH128RR_MASK,
35855            op0.as_operand(),
35856            op1.as_operand(),
35857            &NOREG,
35858            &NOREG,
35859        );
35860    }
35861}
35862
35863impl<'a> VrsqrtphMaskEmitter<Xmm, Mem> for Assembler<'a> {
35864    fn vrsqrtph_mask(&mut self, op0: Xmm, op1: Mem) {
35865        self.emit(
35866            VRSQRTPH128RM_MASK,
35867            op0.as_operand(),
35868            op1.as_operand(),
35869            &NOREG,
35870            &NOREG,
35871        );
35872    }
35873}
35874
35875impl<'a> VrsqrtphMaskEmitter<Ymm, Ymm> for Assembler<'a> {
35876    fn vrsqrtph_mask(&mut self, op0: Ymm, op1: Ymm) {
35877        self.emit(
35878            VRSQRTPH256RR_MASK,
35879            op0.as_operand(),
35880            op1.as_operand(),
35881            &NOREG,
35882            &NOREG,
35883        );
35884    }
35885}
35886
35887impl<'a> VrsqrtphMaskEmitter<Ymm, Mem> for Assembler<'a> {
35888    fn vrsqrtph_mask(&mut self, op0: Ymm, op1: Mem) {
35889        self.emit(
35890            VRSQRTPH256RM_MASK,
35891            op0.as_operand(),
35892            op1.as_operand(),
35893            &NOREG,
35894            &NOREG,
35895        );
35896    }
35897}
35898
35899impl<'a> VrsqrtphMaskEmitter<Zmm, Zmm> for Assembler<'a> {
35900    fn vrsqrtph_mask(&mut self, op0: Zmm, op1: Zmm) {
35901        self.emit(
35902            VRSQRTPH512RR_MASK,
35903            op0.as_operand(),
35904            op1.as_operand(),
35905            &NOREG,
35906            &NOREG,
35907        );
35908    }
35909}
35910
35911impl<'a> VrsqrtphMaskEmitter<Zmm, Mem> for Assembler<'a> {
35912    fn vrsqrtph_mask(&mut self, op0: Zmm, op1: Mem) {
35913        self.emit(
35914            VRSQRTPH512RM_MASK,
35915            op0.as_operand(),
35916            op1.as_operand(),
35917            &NOREG,
35918            &NOREG,
35919        );
35920    }
35921}
35922
35923/// `VRSQRTPH_MASKZ`.
35924///
35925/// Supported operand variants:
35926///
35927/// ```text
35928/// +---+----------+
35929/// | # | Operands |
35930/// +---+----------+
35931/// | 1 | Xmm, Mem |
35932/// | 2 | Xmm, Xmm |
35933/// | 3 | Ymm, Mem |
35934/// | 4 | Ymm, Ymm |
35935/// | 5 | Zmm, Mem |
35936/// | 6 | Zmm, Zmm |
35937/// +---+----------+
35938/// ```
35939pub trait VrsqrtphMaskzEmitter<A, B> {
35940    fn vrsqrtph_maskz(&mut self, op0: A, op1: B);
35941}
35942
35943impl<'a> VrsqrtphMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
35944    fn vrsqrtph_maskz(&mut self, op0: Xmm, op1: Xmm) {
35945        self.emit(
35946            VRSQRTPH128RR_MASKZ,
35947            op0.as_operand(),
35948            op1.as_operand(),
35949            &NOREG,
35950            &NOREG,
35951        );
35952    }
35953}
35954
35955impl<'a> VrsqrtphMaskzEmitter<Xmm, Mem> for Assembler<'a> {
35956    fn vrsqrtph_maskz(&mut self, op0: Xmm, op1: Mem) {
35957        self.emit(
35958            VRSQRTPH128RM_MASKZ,
35959            op0.as_operand(),
35960            op1.as_operand(),
35961            &NOREG,
35962            &NOREG,
35963        );
35964    }
35965}
35966
35967impl<'a> VrsqrtphMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
35968    fn vrsqrtph_maskz(&mut self, op0: Ymm, op1: Ymm) {
35969        self.emit(
35970            VRSQRTPH256RR_MASKZ,
35971            op0.as_operand(),
35972            op1.as_operand(),
35973            &NOREG,
35974            &NOREG,
35975        );
35976    }
35977}
35978
35979impl<'a> VrsqrtphMaskzEmitter<Ymm, Mem> for Assembler<'a> {
35980    fn vrsqrtph_maskz(&mut self, op0: Ymm, op1: Mem) {
35981        self.emit(
35982            VRSQRTPH256RM_MASKZ,
35983            op0.as_operand(),
35984            op1.as_operand(),
35985            &NOREG,
35986            &NOREG,
35987        );
35988    }
35989}
35990
35991impl<'a> VrsqrtphMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
35992    fn vrsqrtph_maskz(&mut self, op0: Zmm, op1: Zmm) {
35993        self.emit(
35994            VRSQRTPH512RR_MASKZ,
35995            op0.as_operand(),
35996            op1.as_operand(),
35997            &NOREG,
35998            &NOREG,
35999        );
36000    }
36001}
36002
36003impl<'a> VrsqrtphMaskzEmitter<Zmm, Mem> for Assembler<'a> {
36004    fn vrsqrtph_maskz(&mut self, op0: Zmm, op1: Mem) {
36005        self.emit(
36006            VRSQRTPH512RM_MASKZ,
36007            op0.as_operand(),
36008            op1.as_operand(),
36009            &NOREG,
36010            &NOREG,
36011        );
36012    }
36013}
36014
36015/// `VRSQRTSH`.
36016///
36017/// Supported operand variants:
36018///
36019/// ```text
36020/// +---+---------------+
36021/// | # | Operands      |
36022/// +---+---------------+
36023/// | 1 | Xmm, Xmm, Mem |
36024/// | 2 | Xmm, Xmm, Xmm |
36025/// +---+---------------+
36026/// ```
36027pub trait VrsqrtshEmitter<A, B, C> {
36028    fn vrsqrtsh(&mut self, op0: A, op1: B, op2: C);
36029}
36030
36031impl<'a> VrsqrtshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36032    fn vrsqrtsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36033        self.emit(
36034            VRSQRTSHRRR,
36035            op0.as_operand(),
36036            op1.as_operand(),
36037            op2.as_operand(),
36038            &NOREG,
36039        );
36040    }
36041}
36042
36043impl<'a> VrsqrtshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36044    fn vrsqrtsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36045        self.emit(
36046            VRSQRTSHRRM,
36047            op0.as_operand(),
36048            op1.as_operand(),
36049            op2.as_operand(),
36050            &NOREG,
36051        );
36052    }
36053}
36054
36055/// `VRSQRTSH_MASK`.
36056///
36057/// Supported operand variants:
36058///
36059/// ```text
36060/// +---+---------------+
36061/// | # | Operands      |
36062/// +---+---------------+
36063/// | 1 | Xmm, Xmm, Mem |
36064/// | 2 | Xmm, Xmm, Xmm |
36065/// +---+---------------+
36066/// ```
36067pub trait VrsqrtshMaskEmitter<A, B, C> {
36068    fn vrsqrtsh_mask(&mut self, op0: A, op1: B, op2: C);
36069}
36070
36071impl<'a> VrsqrtshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36072    fn vrsqrtsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36073        self.emit(
36074            VRSQRTSHRRR_MASK,
36075            op0.as_operand(),
36076            op1.as_operand(),
36077            op2.as_operand(),
36078            &NOREG,
36079        );
36080    }
36081}
36082
36083impl<'a> VrsqrtshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36084    fn vrsqrtsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36085        self.emit(
36086            VRSQRTSHRRM_MASK,
36087            op0.as_operand(),
36088            op1.as_operand(),
36089            op2.as_operand(),
36090            &NOREG,
36091        );
36092    }
36093}
36094
36095/// `VRSQRTSH_MASKZ`.
36096///
36097/// Supported operand variants:
36098///
36099/// ```text
36100/// +---+---------------+
36101/// | # | Operands      |
36102/// +---+---------------+
36103/// | 1 | Xmm, Xmm, Mem |
36104/// | 2 | Xmm, Xmm, Xmm |
36105/// +---+---------------+
36106/// ```
36107pub trait VrsqrtshMaskzEmitter<A, B, C> {
36108    fn vrsqrtsh_maskz(&mut self, op0: A, op1: B, op2: C);
36109}
36110
36111impl<'a> VrsqrtshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36112    fn vrsqrtsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36113        self.emit(
36114            VRSQRTSHRRR_MASKZ,
36115            op0.as_operand(),
36116            op1.as_operand(),
36117            op2.as_operand(),
36118            &NOREG,
36119        );
36120    }
36121}
36122
36123impl<'a> VrsqrtshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36124    fn vrsqrtsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36125        self.emit(
36126            VRSQRTSHRRM_MASKZ,
36127            op0.as_operand(),
36128            op1.as_operand(),
36129            op2.as_operand(),
36130            &NOREG,
36131        );
36132    }
36133}
36134
36135/// `VSCALEFPH`.
36136///
36137/// Supported operand variants:
36138///
36139/// ```text
36140/// +---+---------------+
36141/// | # | Operands      |
36142/// +---+---------------+
36143/// | 1 | Xmm, Xmm, Mem |
36144/// | 2 | Xmm, Xmm, Xmm |
36145/// | 3 | Ymm, Ymm, Mem |
36146/// | 4 | Ymm, Ymm, Ymm |
36147/// | 5 | Zmm, Zmm, Mem |
36148/// | 6 | Zmm, Zmm, Zmm |
36149/// +---+---------------+
36150/// ```
36151pub trait VscalefphEmitter<A, B, C> {
36152    fn vscalefph(&mut self, op0: A, op1: B, op2: C);
36153}
36154
36155impl<'a> VscalefphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36156    fn vscalefph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36157        self.emit(
36158            VSCALEFPH128RRR,
36159            op0.as_operand(),
36160            op1.as_operand(),
36161            op2.as_operand(),
36162            &NOREG,
36163        );
36164    }
36165}
36166
36167impl<'a> VscalefphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36168    fn vscalefph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36169        self.emit(
36170            VSCALEFPH128RRM,
36171            op0.as_operand(),
36172            op1.as_operand(),
36173            op2.as_operand(),
36174            &NOREG,
36175        );
36176    }
36177}
36178
36179impl<'a> VscalefphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
36180    fn vscalefph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
36181        self.emit(
36182            VSCALEFPH256RRR,
36183            op0.as_operand(),
36184            op1.as_operand(),
36185            op2.as_operand(),
36186            &NOREG,
36187        );
36188    }
36189}
36190
36191impl<'a> VscalefphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
36192    fn vscalefph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
36193        self.emit(
36194            VSCALEFPH256RRM,
36195            op0.as_operand(),
36196            op1.as_operand(),
36197            op2.as_operand(),
36198            &NOREG,
36199        );
36200    }
36201}
36202
36203impl<'a> VscalefphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36204    fn vscalefph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36205        self.emit(
36206            VSCALEFPH512RRR,
36207            op0.as_operand(),
36208            op1.as_operand(),
36209            op2.as_operand(),
36210            &NOREG,
36211        );
36212    }
36213}
36214
36215impl<'a> VscalefphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
36216    fn vscalefph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
36217        self.emit(
36218            VSCALEFPH512RRM,
36219            op0.as_operand(),
36220            op1.as_operand(),
36221            op2.as_operand(),
36222            &NOREG,
36223        );
36224    }
36225}
36226
36227/// `VSCALEFPH_ER`.
36228///
36229/// Supported operand variants:
36230///
36231/// ```text
36232/// +---+---------------+
36233/// | # | Operands      |
36234/// +---+---------------+
36235/// | 1 | Zmm, Zmm, Zmm |
36236/// +---+---------------+
36237/// ```
36238pub trait VscalefphErEmitter<A, B, C> {
36239    fn vscalefph_er(&mut self, op0: A, op1: B, op2: C);
36240}
36241
36242impl<'a> VscalefphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36243    fn vscalefph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36244        self.emit(
36245            VSCALEFPH512RRR_ER,
36246            op0.as_operand(),
36247            op1.as_operand(),
36248            op2.as_operand(),
36249            &NOREG,
36250        );
36251    }
36252}
36253
36254/// `VSCALEFPH_MASK`.
36255///
36256/// Supported operand variants:
36257///
36258/// ```text
36259/// +---+---------------+
36260/// | # | Operands      |
36261/// +---+---------------+
36262/// | 1 | Xmm, Xmm, Mem |
36263/// | 2 | Xmm, Xmm, Xmm |
36264/// | 3 | Ymm, Ymm, Mem |
36265/// | 4 | Ymm, Ymm, Ymm |
36266/// | 5 | Zmm, Zmm, Mem |
36267/// | 6 | Zmm, Zmm, Zmm |
36268/// +---+---------------+
36269/// ```
36270pub trait VscalefphMaskEmitter<A, B, C> {
36271    fn vscalefph_mask(&mut self, op0: A, op1: B, op2: C);
36272}
36273
36274impl<'a> VscalefphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36275    fn vscalefph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36276        self.emit(
36277            VSCALEFPH128RRR_MASK,
36278            op0.as_operand(),
36279            op1.as_operand(),
36280            op2.as_operand(),
36281            &NOREG,
36282        );
36283    }
36284}
36285
36286impl<'a> VscalefphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36287    fn vscalefph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36288        self.emit(
36289            VSCALEFPH128RRM_MASK,
36290            op0.as_operand(),
36291            op1.as_operand(),
36292            op2.as_operand(),
36293            &NOREG,
36294        );
36295    }
36296}
36297
36298impl<'a> VscalefphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
36299    fn vscalefph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
36300        self.emit(
36301            VSCALEFPH256RRR_MASK,
36302            op0.as_operand(),
36303            op1.as_operand(),
36304            op2.as_operand(),
36305            &NOREG,
36306        );
36307    }
36308}
36309
36310impl<'a> VscalefphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
36311    fn vscalefph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
36312        self.emit(
36313            VSCALEFPH256RRM_MASK,
36314            op0.as_operand(),
36315            op1.as_operand(),
36316            op2.as_operand(),
36317            &NOREG,
36318        );
36319    }
36320}
36321
36322impl<'a> VscalefphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36323    fn vscalefph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36324        self.emit(
36325            VSCALEFPH512RRR_MASK,
36326            op0.as_operand(),
36327            op1.as_operand(),
36328            op2.as_operand(),
36329            &NOREG,
36330        );
36331    }
36332}
36333
36334impl<'a> VscalefphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
36335    fn vscalefph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
36336        self.emit(
36337            VSCALEFPH512RRM_MASK,
36338            op0.as_operand(),
36339            op1.as_operand(),
36340            op2.as_operand(),
36341            &NOREG,
36342        );
36343    }
36344}
36345
36346/// `VSCALEFPH_MASK_ER`.
36347///
36348/// Supported operand variants:
36349///
36350/// ```text
36351/// +---+---------------+
36352/// | # | Operands      |
36353/// +---+---------------+
36354/// | 1 | Zmm, Zmm, Zmm |
36355/// +---+---------------+
36356/// ```
36357pub trait VscalefphMaskErEmitter<A, B, C> {
36358    fn vscalefph_mask_er(&mut self, op0: A, op1: B, op2: C);
36359}
36360
36361impl<'a> VscalefphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36362    fn vscalefph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36363        self.emit(
36364            VSCALEFPH512RRR_MASK_ER,
36365            op0.as_operand(),
36366            op1.as_operand(),
36367            op2.as_operand(),
36368            &NOREG,
36369        );
36370    }
36371}
36372
36373/// `VSCALEFPH_MASKZ`.
36374///
36375/// Supported operand variants:
36376///
36377/// ```text
36378/// +---+---------------+
36379/// | # | Operands      |
36380/// +---+---------------+
36381/// | 1 | Xmm, Xmm, Mem |
36382/// | 2 | Xmm, Xmm, Xmm |
36383/// | 3 | Ymm, Ymm, Mem |
36384/// | 4 | Ymm, Ymm, Ymm |
36385/// | 5 | Zmm, Zmm, Mem |
36386/// | 6 | Zmm, Zmm, Zmm |
36387/// +---+---------------+
36388/// ```
36389pub trait VscalefphMaskzEmitter<A, B, C> {
36390    fn vscalefph_maskz(&mut self, op0: A, op1: B, op2: C);
36391}
36392
36393impl<'a> VscalefphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36394    fn vscalefph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36395        self.emit(
36396            VSCALEFPH128RRR_MASKZ,
36397            op0.as_operand(),
36398            op1.as_operand(),
36399            op2.as_operand(),
36400            &NOREG,
36401        );
36402    }
36403}
36404
36405impl<'a> VscalefphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36406    fn vscalefph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36407        self.emit(
36408            VSCALEFPH128RRM_MASKZ,
36409            op0.as_operand(),
36410            op1.as_operand(),
36411            op2.as_operand(),
36412            &NOREG,
36413        );
36414    }
36415}
36416
36417impl<'a> VscalefphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
36418    fn vscalefph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
36419        self.emit(
36420            VSCALEFPH256RRR_MASKZ,
36421            op0.as_operand(),
36422            op1.as_operand(),
36423            op2.as_operand(),
36424            &NOREG,
36425        );
36426    }
36427}
36428
36429impl<'a> VscalefphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
36430    fn vscalefph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
36431        self.emit(
36432            VSCALEFPH256RRM_MASKZ,
36433            op0.as_operand(),
36434            op1.as_operand(),
36435            op2.as_operand(),
36436            &NOREG,
36437        );
36438    }
36439}
36440
36441impl<'a> VscalefphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36442    fn vscalefph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36443        self.emit(
36444            VSCALEFPH512RRR_MASKZ,
36445            op0.as_operand(),
36446            op1.as_operand(),
36447            op2.as_operand(),
36448            &NOREG,
36449        );
36450    }
36451}
36452
36453impl<'a> VscalefphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
36454    fn vscalefph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
36455        self.emit(
36456            VSCALEFPH512RRM_MASKZ,
36457            op0.as_operand(),
36458            op1.as_operand(),
36459            op2.as_operand(),
36460            &NOREG,
36461        );
36462    }
36463}
36464
36465/// `VSCALEFPH_MASKZ_ER`.
36466///
36467/// Supported operand variants:
36468///
36469/// ```text
36470/// +---+---------------+
36471/// | # | Operands      |
36472/// +---+---------------+
36473/// | 1 | Zmm, Zmm, Zmm |
36474/// +---+---------------+
36475/// ```
36476pub trait VscalefphMaskzErEmitter<A, B, C> {
36477    fn vscalefph_maskz_er(&mut self, op0: A, op1: B, op2: C);
36478}
36479
36480impl<'a> VscalefphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36481    fn vscalefph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36482        self.emit(
36483            VSCALEFPH512RRR_MASKZ_ER,
36484            op0.as_operand(),
36485            op1.as_operand(),
36486            op2.as_operand(),
36487            &NOREG,
36488        );
36489    }
36490}
36491
36492/// `VSCALEFSH`.
36493///
36494/// Supported operand variants:
36495///
36496/// ```text
36497/// +---+---------------+
36498/// | # | Operands      |
36499/// +---+---------------+
36500/// | 1 | Xmm, Xmm, Mem |
36501/// | 2 | Xmm, Xmm, Xmm |
36502/// +---+---------------+
36503/// ```
36504pub trait VscalefshEmitter<A, B, C> {
36505    fn vscalefsh(&mut self, op0: A, op1: B, op2: C);
36506}
36507
36508impl<'a> VscalefshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36509    fn vscalefsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36510        self.emit(
36511            VSCALEFSHRRR,
36512            op0.as_operand(),
36513            op1.as_operand(),
36514            op2.as_operand(),
36515            &NOREG,
36516        );
36517    }
36518}
36519
36520impl<'a> VscalefshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36521    fn vscalefsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36522        self.emit(
36523            VSCALEFSHRRM,
36524            op0.as_operand(),
36525            op1.as_operand(),
36526            op2.as_operand(),
36527            &NOREG,
36528        );
36529    }
36530}
36531
36532/// `VSCALEFSH_ER`.
36533///
36534/// Supported operand variants:
36535///
36536/// ```text
36537/// +---+---------------+
36538/// | # | Operands      |
36539/// +---+---------------+
36540/// | 1 | Xmm, Xmm, Xmm |
36541/// +---+---------------+
36542/// ```
36543pub trait VscalefshErEmitter<A, B, C> {
36544    fn vscalefsh_er(&mut self, op0: A, op1: B, op2: C);
36545}
36546
36547impl<'a> VscalefshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36548    fn vscalefsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36549        self.emit(
36550            VSCALEFSHRRR_ER,
36551            op0.as_operand(),
36552            op1.as_operand(),
36553            op2.as_operand(),
36554            &NOREG,
36555        );
36556    }
36557}
36558
36559/// `VSCALEFSH_MASK`.
36560///
36561/// Supported operand variants:
36562///
36563/// ```text
36564/// +---+---------------+
36565/// | # | Operands      |
36566/// +---+---------------+
36567/// | 1 | Xmm, Xmm, Mem |
36568/// | 2 | Xmm, Xmm, Xmm |
36569/// +---+---------------+
36570/// ```
36571pub trait VscalefshMaskEmitter<A, B, C> {
36572    fn vscalefsh_mask(&mut self, op0: A, op1: B, op2: C);
36573}
36574
36575impl<'a> VscalefshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36576    fn vscalefsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36577        self.emit(
36578            VSCALEFSHRRR_MASK,
36579            op0.as_operand(),
36580            op1.as_operand(),
36581            op2.as_operand(),
36582            &NOREG,
36583        );
36584    }
36585}
36586
36587impl<'a> VscalefshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36588    fn vscalefsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36589        self.emit(
36590            VSCALEFSHRRM_MASK,
36591            op0.as_operand(),
36592            op1.as_operand(),
36593            op2.as_operand(),
36594            &NOREG,
36595        );
36596    }
36597}
36598
36599/// `VSCALEFSH_MASK_ER`.
36600///
36601/// Supported operand variants:
36602///
36603/// ```text
36604/// +---+---------------+
36605/// | # | Operands      |
36606/// +---+---------------+
36607/// | 1 | Xmm, Xmm, Xmm |
36608/// +---+---------------+
36609/// ```
36610pub trait VscalefshMaskErEmitter<A, B, C> {
36611    fn vscalefsh_mask_er(&mut self, op0: A, op1: B, op2: C);
36612}
36613
36614impl<'a> VscalefshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36615    fn vscalefsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36616        self.emit(
36617            VSCALEFSHRRR_MASK_ER,
36618            op0.as_operand(),
36619            op1.as_operand(),
36620            op2.as_operand(),
36621            &NOREG,
36622        );
36623    }
36624}
36625
36626/// `VSCALEFSH_MASKZ`.
36627///
36628/// Supported operand variants:
36629///
36630/// ```text
36631/// +---+---------------+
36632/// | # | Operands      |
36633/// +---+---------------+
36634/// | 1 | Xmm, Xmm, Mem |
36635/// | 2 | Xmm, Xmm, Xmm |
36636/// +---+---------------+
36637/// ```
36638pub trait VscalefshMaskzEmitter<A, B, C> {
36639    fn vscalefsh_maskz(&mut self, op0: A, op1: B, op2: C);
36640}
36641
36642impl<'a> VscalefshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36643    fn vscalefsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36644        self.emit(
36645            VSCALEFSHRRR_MASKZ,
36646            op0.as_operand(),
36647            op1.as_operand(),
36648            op2.as_operand(),
36649            &NOREG,
36650        );
36651    }
36652}
36653
36654impl<'a> VscalefshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
36655    fn vscalefsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36656        self.emit(
36657            VSCALEFSHRRM_MASKZ,
36658            op0.as_operand(),
36659            op1.as_operand(),
36660            op2.as_operand(),
36661            &NOREG,
36662        );
36663    }
36664}
36665
36666/// `VSCALEFSH_MASKZ_ER`.
36667///
36668/// Supported operand variants:
36669///
36670/// ```text
36671/// +---+---------------+
36672/// | # | Operands      |
36673/// +---+---------------+
36674/// | 1 | Xmm, Xmm, Xmm |
36675/// +---+---------------+
36676/// ```
36677pub trait VscalefshMaskzErEmitter<A, B, C> {
36678    fn vscalefsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
36679}
36680
36681impl<'a> VscalefshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36682    fn vscalefsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36683        self.emit(
36684            VSCALEFSHRRR_MASKZ_ER,
36685            op0.as_operand(),
36686            op1.as_operand(),
36687            op2.as_operand(),
36688            &NOREG,
36689        );
36690    }
36691}
36692
36693/// `VSM4KEY4`.
36694///
36695/// Supported operand variants:
36696///
36697/// ```text
36698/// +---+---------------+
36699/// | # | Operands      |
36700/// +---+---------------+
36701/// | 1 | Xmm, Xmm, Mem |
36702/// | 2 | Xmm, Xmm, Xmm |
36703/// | 3 | Ymm, Ymm, Mem |
36704/// | 4 | Ymm, Ymm, Ymm |
36705/// | 5 | Zmm, Zmm, Mem |
36706/// | 6 | Zmm, Zmm, Zmm |
36707/// +---+---------------+
36708/// ```
36709pub trait Vsm4key4Emitter<A, B, C> {
36710    fn vsm4key4(&mut self, op0: A, op1: B, op2: C);
36711}
36712
36713impl<'a> Vsm4key4Emitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36714    fn vsm4key4(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36715        self.emit(
36716            VSM4KEY4_128RRR,
36717            op0.as_operand(),
36718            op1.as_operand(),
36719            op2.as_operand(),
36720            &NOREG,
36721        );
36722    }
36723}
36724
36725impl<'a> Vsm4key4Emitter<Xmm, Xmm, Mem> for Assembler<'a> {
36726    fn vsm4key4(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36727        self.emit(
36728            VSM4KEY4_128RRM,
36729            op0.as_operand(),
36730            op1.as_operand(),
36731            op2.as_operand(),
36732            &NOREG,
36733        );
36734    }
36735}
36736
36737impl<'a> Vsm4key4Emitter<Ymm, Ymm, Ymm> for Assembler<'a> {
36738    fn vsm4key4(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
36739        self.emit(
36740            VSM4KEY4_256RRR,
36741            op0.as_operand(),
36742            op1.as_operand(),
36743            op2.as_operand(),
36744            &NOREG,
36745        );
36746    }
36747}
36748
36749impl<'a> Vsm4key4Emitter<Ymm, Ymm, Mem> for Assembler<'a> {
36750    fn vsm4key4(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
36751        self.emit(
36752            VSM4KEY4_256RRM,
36753            op0.as_operand(),
36754            op1.as_operand(),
36755            op2.as_operand(),
36756            &NOREG,
36757        );
36758    }
36759}
36760
36761impl<'a> Vsm4key4Emitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36762    fn vsm4key4(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36763        self.emit(
36764            VSM4KEY4_512RRR,
36765            op0.as_operand(),
36766            op1.as_operand(),
36767            op2.as_operand(),
36768            &NOREG,
36769        );
36770    }
36771}
36772
36773impl<'a> Vsm4key4Emitter<Zmm, Zmm, Mem> for Assembler<'a> {
36774    fn vsm4key4(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
36775        self.emit(
36776            VSM4KEY4_512RRM,
36777            op0.as_operand(),
36778            op1.as_operand(),
36779            op2.as_operand(),
36780            &NOREG,
36781        );
36782    }
36783}
36784
36785/// `VSM4RNDS4`.
36786///
36787/// Supported operand variants:
36788///
36789/// ```text
36790/// +---+---------------+
36791/// | # | Operands      |
36792/// +---+---------------+
36793/// | 1 | Xmm, Xmm, Mem |
36794/// | 2 | Xmm, Xmm, Xmm |
36795/// | 3 | Ymm, Ymm, Mem |
36796/// | 4 | Ymm, Ymm, Ymm |
36797/// | 5 | Zmm, Zmm, Mem |
36798/// | 6 | Zmm, Zmm, Zmm |
36799/// +---+---------------+
36800/// ```
36801pub trait Vsm4rnds4Emitter<A, B, C> {
36802    fn vsm4rnds4(&mut self, op0: A, op1: B, op2: C);
36803}
36804
36805impl<'a> Vsm4rnds4Emitter<Xmm, Xmm, Xmm> for Assembler<'a> {
36806    fn vsm4rnds4(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
36807        self.emit(
36808            VSM4RNDS4_128RRR,
36809            op0.as_operand(),
36810            op1.as_operand(),
36811            op2.as_operand(),
36812            &NOREG,
36813        );
36814    }
36815}
36816
36817impl<'a> Vsm4rnds4Emitter<Xmm, Xmm, Mem> for Assembler<'a> {
36818    fn vsm4rnds4(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
36819        self.emit(
36820            VSM4RNDS4_128RRM,
36821            op0.as_operand(),
36822            op1.as_operand(),
36823            op2.as_operand(),
36824            &NOREG,
36825        );
36826    }
36827}
36828
36829impl<'a> Vsm4rnds4Emitter<Ymm, Ymm, Ymm> for Assembler<'a> {
36830    fn vsm4rnds4(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
36831        self.emit(
36832            VSM4RNDS4_256RRR,
36833            op0.as_operand(),
36834            op1.as_operand(),
36835            op2.as_operand(),
36836            &NOREG,
36837        );
36838    }
36839}
36840
36841impl<'a> Vsm4rnds4Emitter<Ymm, Ymm, Mem> for Assembler<'a> {
36842    fn vsm4rnds4(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
36843        self.emit(
36844            VSM4RNDS4_256RRM,
36845            op0.as_operand(),
36846            op1.as_operand(),
36847            op2.as_operand(),
36848            &NOREG,
36849        );
36850    }
36851}
36852
36853impl<'a> Vsm4rnds4Emitter<Zmm, Zmm, Zmm> for Assembler<'a> {
36854    fn vsm4rnds4(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
36855        self.emit(
36856            VSM4RNDS4_512RRR,
36857            op0.as_operand(),
36858            op1.as_operand(),
36859            op2.as_operand(),
36860            &NOREG,
36861        );
36862    }
36863}
36864
36865impl<'a> Vsm4rnds4Emitter<Zmm, Zmm, Mem> for Assembler<'a> {
36866    fn vsm4rnds4(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
36867        self.emit(
36868            VSM4RNDS4_512RRM,
36869            op0.as_operand(),
36870            op1.as_operand(),
36871            op2.as_operand(),
36872            &NOREG,
36873        );
36874    }
36875}
36876
36877/// `VSQRTPH`.
36878///
36879/// Supported operand variants:
36880///
36881/// ```text
36882/// +---+----------+
36883/// | # | Operands |
36884/// +---+----------+
36885/// | 1 | Xmm, Mem |
36886/// | 2 | Xmm, Xmm |
36887/// | 3 | Ymm, Mem |
36888/// | 4 | Ymm, Ymm |
36889/// | 5 | Zmm, Mem |
36890/// | 6 | Zmm, Zmm |
36891/// +---+----------+
36892/// ```
36893pub trait VsqrtphEmitter<A, B> {
36894    fn vsqrtph(&mut self, op0: A, op1: B);
36895}
36896
36897impl<'a> VsqrtphEmitter<Xmm, Xmm> for Assembler<'a> {
36898    fn vsqrtph(&mut self, op0: Xmm, op1: Xmm) {
36899        self.emit(
36900            VSQRTPH128RR,
36901            op0.as_operand(),
36902            op1.as_operand(),
36903            &NOREG,
36904            &NOREG,
36905        );
36906    }
36907}
36908
36909impl<'a> VsqrtphEmitter<Xmm, Mem> for Assembler<'a> {
36910    fn vsqrtph(&mut self, op0: Xmm, op1: Mem) {
36911        self.emit(
36912            VSQRTPH128RM,
36913            op0.as_operand(),
36914            op1.as_operand(),
36915            &NOREG,
36916            &NOREG,
36917        );
36918    }
36919}
36920
36921impl<'a> VsqrtphEmitter<Ymm, Ymm> for Assembler<'a> {
36922    fn vsqrtph(&mut self, op0: Ymm, op1: Ymm) {
36923        self.emit(
36924            VSQRTPH256RR,
36925            op0.as_operand(),
36926            op1.as_operand(),
36927            &NOREG,
36928            &NOREG,
36929        );
36930    }
36931}
36932
36933impl<'a> VsqrtphEmitter<Ymm, Mem> for Assembler<'a> {
36934    fn vsqrtph(&mut self, op0: Ymm, op1: Mem) {
36935        self.emit(
36936            VSQRTPH256RM,
36937            op0.as_operand(),
36938            op1.as_operand(),
36939            &NOREG,
36940            &NOREG,
36941        );
36942    }
36943}
36944
36945impl<'a> VsqrtphEmitter<Zmm, Zmm> for Assembler<'a> {
36946    fn vsqrtph(&mut self, op0: Zmm, op1: Zmm) {
36947        self.emit(
36948            VSQRTPH512RR,
36949            op0.as_operand(),
36950            op1.as_operand(),
36951            &NOREG,
36952            &NOREG,
36953        );
36954    }
36955}
36956
36957impl<'a> VsqrtphEmitter<Zmm, Mem> for Assembler<'a> {
36958    fn vsqrtph(&mut self, op0: Zmm, op1: Mem) {
36959        self.emit(
36960            VSQRTPH512RM,
36961            op0.as_operand(),
36962            op1.as_operand(),
36963            &NOREG,
36964            &NOREG,
36965        );
36966    }
36967}
36968
36969/// `VSQRTPH_ER`.
36970///
36971/// Supported operand variants:
36972///
36973/// ```text
36974/// +---+----------+
36975/// | # | Operands |
36976/// +---+----------+
36977/// | 1 | Zmm, Zmm |
36978/// +---+----------+
36979/// ```
36980pub trait VsqrtphErEmitter<A, B> {
36981    fn vsqrtph_er(&mut self, op0: A, op1: B);
36982}
36983
36984impl<'a> VsqrtphErEmitter<Zmm, Zmm> for Assembler<'a> {
36985    fn vsqrtph_er(&mut self, op0: Zmm, op1: Zmm) {
36986        self.emit(
36987            VSQRTPH512RR_ER,
36988            op0.as_operand(),
36989            op1.as_operand(),
36990            &NOREG,
36991            &NOREG,
36992        );
36993    }
36994}
36995
36996/// `VSQRTPH_MASK`.
36997///
36998/// Supported operand variants:
36999///
37000/// ```text
37001/// +---+----------+
37002/// | # | Operands |
37003/// +---+----------+
37004/// | 1 | Xmm, Mem |
37005/// | 2 | Xmm, Xmm |
37006/// | 3 | Ymm, Mem |
37007/// | 4 | Ymm, Ymm |
37008/// | 5 | Zmm, Mem |
37009/// | 6 | Zmm, Zmm |
37010/// +---+----------+
37011/// ```
37012pub trait VsqrtphMaskEmitter<A, B> {
37013    fn vsqrtph_mask(&mut self, op0: A, op1: B);
37014}
37015
37016impl<'a> VsqrtphMaskEmitter<Xmm, Xmm> for Assembler<'a> {
37017    fn vsqrtph_mask(&mut self, op0: Xmm, op1: Xmm) {
37018        self.emit(
37019            VSQRTPH128RR_MASK,
37020            op0.as_operand(),
37021            op1.as_operand(),
37022            &NOREG,
37023            &NOREG,
37024        );
37025    }
37026}
37027
37028impl<'a> VsqrtphMaskEmitter<Xmm, Mem> for Assembler<'a> {
37029    fn vsqrtph_mask(&mut self, op0: Xmm, op1: Mem) {
37030        self.emit(
37031            VSQRTPH128RM_MASK,
37032            op0.as_operand(),
37033            op1.as_operand(),
37034            &NOREG,
37035            &NOREG,
37036        );
37037    }
37038}
37039
37040impl<'a> VsqrtphMaskEmitter<Ymm, Ymm> for Assembler<'a> {
37041    fn vsqrtph_mask(&mut self, op0: Ymm, op1: Ymm) {
37042        self.emit(
37043            VSQRTPH256RR_MASK,
37044            op0.as_operand(),
37045            op1.as_operand(),
37046            &NOREG,
37047            &NOREG,
37048        );
37049    }
37050}
37051
37052impl<'a> VsqrtphMaskEmitter<Ymm, Mem> for Assembler<'a> {
37053    fn vsqrtph_mask(&mut self, op0: Ymm, op1: Mem) {
37054        self.emit(
37055            VSQRTPH256RM_MASK,
37056            op0.as_operand(),
37057            op1.as_operand(),
37058            &NOREG,
37059            &NOREG,
37060        );
37061    }
37062}
37063
37064impl<'a> VsqrtphMaskEmitter<Zmm, Zmm> for Assembler<'a> {
37065    fn vsqrtph_mask(&mut self, op0: Zmm, op1: Zmm) {
37066        self.emit(
37067            VSQRTPH512RR_MASK,
37068            op0.as_operand(),
37069            op1.as_operand(),
37070            &NOREG,
37071            &NOREG,
37072        );
37073    }
37074}
37075
37076impl<'a> VsqrtphMaskEmitter<Zmm, Mem> for Assembler<'a> {
37077    fn vsqrtph_mask(&mut self, op0: Zmm, op1: Mem) {
37078        self.emit(
37079            VSQRTPH512RM_MASK,
37080            op0.as_operand(),
37081            op1.as_operand(),
37082            &NOREG,
37083            &NOREG,
37084        );
37085    }
37086}
37087
37088/// `VSQRTPH_MASK_ER`.
37089///
37090/// Supported operand variants:
37091///
37092/// ```text
37093/// +---+----------+
37094/// | # | Operands |
37095/// +---+----------+
37096/// | 1 | Zmm, Zmm |
37097/// +---+----------+
37098/// ```
37099pub trait VsqrtphMaskErEmitter<A, B> {
37100    fn vsqrtph_mask_er(&mut self, op0: A, op1: B);
37101}
37102
37103impl<'a> VsqrtphMaskErEmitter<Zmm, Zmm> for Assembler<'a> {
37104    fn vsqrtph_mask_er(&mut self, op0: Zmm, op1: Zmm) {
37105        self.emit(
37106            VSQRTPH512RR_MASK_ER,
37107            op0.as_operand(),
37108            op1.as_operand(),
37109            &NOREG,
37110            &NOREG,
37111        );
37112    }
37113}
37114
37115/// `VSQRTPH_MASKZ`.
37116///
37117/// Supported operand variants:
37118///
37119/// ```text
37120/// +---+----------+
37121/// | # | Operands |
37122/// +---+----------+
37123/// | 1 | Xmm, Mem |
37124/// | 2 | Xmm, Xmm |
37125/// | 3 | Ymm, Mem |
37126/// | 4 | Ymm, Ymm |
37127/// | 5 | Zmm, Mem |
37128/// | 6 | Zmm, Zmm |
37129/// +---+----------+
37130/// ```
37131pub trait VsqrtphMaskzEmitter<A, B> {
37132    fn vsqrtph_maskz(&mut self, op0: A, op1: B);
37133}
37134
37135impl<'a> VsqrtphMaskzEmitter<Xmm, Xmm> for Assembler<'a> {
37136    fn vsqrtph_maskz(&mut self, op0: Xmm, op1: Xmm) {
37137        self.emit(
37138            VSQRTPH128RR_MASKZ,
37139            op0.as_operand(),
37140            op1.as_operand(),
37141            &NOREG,
37142            &NOREG,
37143        );
37144    }
37145}
37146
37147impl<'a> VsqrtphMaskzEmitter<Xmm, Mem> for Assembler<'a> {
37148    fn vsqrtph_maskz(&mut self, op0: Xmm, op1: Mem) {
37149        self.emit(
37150            VSQRTPH128RM_MASKZ,
37151            op0.as_operand(),
37152            op1.as_operand(),
37153            &NOREG,
37154            &NOREG,
37155        );
37156    }
37157}
37158
37159impl<'a> VsqrtphMaskzEmitter<Ymm, Ymm> for Assembler<'a> {
37160    fn vsqrtph_maskz(&mut self, op0: Ymm, op1: Ymm) {
37161        self.emit(
37162            VSQRTPH256RR_MASKZ,
37163            op0.as_operand(),
37164            op1.as_operand(),
37165            &NOREG,
37166            &NOREG,
37167        );
37168    }
37169}
37170
37171impl<'a> VsqrtphMaskzEmitter<Ymm, Mem> for Assembler<'a> {
37172    fn vsqrtph_maskz(&mut self, op0: Ymm, op1: Mem) {
37173        self.emit(
37174            VSQRTPH256RM_MASKZ,
37175            op0.as_operand(),
37176            op1.as_operand(),
37177            &NOREG,
37178            &NOREG,
37179        );
37180    }
37181}
37182
37183impl<'a> VsqrtphMaskzEmitter<Zmm, Zmm> for Assembler<'a> {
37184    fn vsqrtph_maskz(&mut self, op0: Zmm, op1: Zmm) {
37185        self.emit(
37186            VSQRTPH512RR_MASKZ,
37187            op0.as_operand(),
37188            op1.as_operand(),
37189            &NOREG,
37190            &NOREG,
37191        );
37192    }
37193}
37194
37195impl<'a> VsqrtphMaskzEmitter<Zmm, Mem> for Assembler<'a> {
37196    fn vsqrtph_maskz(&mut self, op0: Zmm, op1: Mem) {
37197        self.emit(
37198            VSQRTPH512RM_MASKZ,
37199            op0.as_operand(),
37200            op1.as_operand(),
37201            &NOREG,
37202            &NOREG,
37203        );
37204    }
37205}
37206
37207/// `VSQRTPH_MASKZ_ER`.
37208///
37209/// Supported operand variants:
37210///
37211/// ```text
37212/// +---+----------+
37213/// | # | Operands |
37214/// +---+----------+
37215/// | 1 | Zmm, Zmm |
37216/// +---+----------+
37217/// ```
37218pub trait VsqrtphMaskzErEmitter<A, B> {
37219    fn vsqrtph_maskz_er(&mut self, op0: A, op1: B);
37220}
37221
37222impl<'a> VsqrtphMaskzErEmitter<Zmm, Zmm> for Assembler<'a> {
37223    fn vsqrtph_maskz_er(&mut self, op0: Zmm, op1: Zmm) {
37224        self.emit(
37225            VSQRTPH512RR_MASKZ_ER,
37226            op0.as_operand(),
37227            op1.as_operand(),
37228            &NOREG,
37229            &NOREG,
37230        );
37231    }
37232}
37233
37234/// `VSQRTSH`.
37235///
37236/// Supported operand variants:
37237///
37238/// ```text
37239/// +---+---------------+
37240/// | # | Operands      |
37241/// +---+---------------+
37242/// | 1 | Xmm, Xmm, Mem |
37243/// | 2 | Xmm, Xmm, Xmm |
37244/// +---+---------------+
37245/// ```
37246pub trait VsqrtshEmitter<A, B, C> {
37247    fn vsqrtsh(&mut self, op0: A, op1: B, op2: C);
37248}
37249
37250impl<'a> VsqrtshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37251    fn vsqrtsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37252        self.emit(
37253            VSQRTSHRRR,
37254            op0.as_operand(),
37255            op1.as_operand(),
37256            op2.as_operand(),
37257            &NOREG,
37258        );
37259    }
37260}
37261
37262impl<'a> VsqrtshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37263    fn vsqrtsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37264        self.emit(
37265            VSQRTSHRRM,
37266            op0.as_operand(),
37267            op1.as_operand(),
37268            op2.as_operand(),
37269            &NOREG,
37270        );
37271    }
37272}
37273
37274/// `VSQRTSH_ER`.
37275///
37276/// Supported operand variants:
37277///
37278/// ```text
37279/// +---+---------------+
37280/// | # | Operands      |
37281/// +---+---------------+
37282/// | 1 | Xmm, Xmm, Xmm |
37283/// +---+---------------+
37284/// ```
37285pub trait VsqrtshErEmitter<A, B, C> {
37286    fn vsqrtsh_er(&mut self, op0: A, op1: B, op2: C);
37287}
37288
37289impl<'a> VsqrtshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37290    fn vsqrtsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37291        self.emit(
37292            VSQRTSHRRR_ER,
37293            op0.as_operand(),
37294            op1.as_operand(),
37295            op2.as_operand(),
37296            &NOREG,
37297        );
37298    }
37299}
37300
37301/// `VSQRTSH_MASK`.
37302///
37303/// Supported operand variants:
37304///
37305/// ```text
37306/// +---+---------------+
37307/// | # | Operands      |
37308/// +---+---------------+
37309/// | 1 | Xmm, Xmm, Mem |
37310/// | 2 | Xmm, Xmm, Xmm |
37311/// +---+---------------+
37312/// ```
37313pub trait VsqrtshMaskEmitter<A, B, C> {
37314    fn vsqrtsh_mask(&mut self, op0: A, op1: B, op2: C);
37315}
37316
37317impl<'a> VsqrtshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37318    fn vsqrtsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37319        self.emit(
37320            VSQRTSHRRR_MASK,
37321            op0.as_operand(),
37322            op1.as_operand(),
37323            op2.as_operand(),
37324            &NOREG,
37325        );
37326    }
37327}
37328
37329impl<'a> VsqrtshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37330    fn vsqrtsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37331        self.emit(
37332            VSQRTSHRRM_MASK,
37333            op0.as_operand(),
37334            op1.as_operand(),
37335            op2.as_operand(),
37336            &NOREG,
37337        );
37338    }
37339}
37340
37341/// `VSQRTSH_MASK_ER`.
37342///
37343/// Supported operand variants:
37344///
37345/// ```text
37346/// +---+---------------+
37347/// | # | Operands      |
37348/// +---+---------------+
37349/// | 1 | Xmm, Xmm, Xmm |
37350/// +---+---------------+
37351/// ```
37352pub trait VsqrtshMaskErEmitter<A, B, C> {
37353    fn vsqrtsh_mask_er(&mut self, op0: A, op1: B, op2: C);
37354}
37355
37356impl<'a> VsqrtshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37357    fn vsqrtsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37358        self.emit(
37359            VSQRTSHRRR_MASK_ER,
37360            op0.as_operand(),
37361            op1.as_operand(),
37362            op2.as_operand(),
37363            &NOREG,
37364        );
37365    }
37366}
37367
37368/// `VSQRTSH_MASKZ`.
37369///
37370/// Supported operand variants:
37371///
37372/// ```text
37373/// +---+---------------+
37374/// | # | Operands      |
37375/// +---+---------------+
37376/// | 1 | Xmm, Xmm, Mem |
37377/// | 2 | Xmm, Xmm, Xmm |
37378/// +---+---------------+
37379/// ```
37380pub trait VsqrtshMaskzEmitter<A, B, C> {
37381    fn vsqrtsh_maskz(&mut self, op0: A, op1: B, op2: C);
37382}
37383
37384impl<'a> VsqrtshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37385    fn vsqrtsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37386        self.emit(
37387            VSQRTSHRRR_MASKZ,
37388            op0.as_operand(),
37389            op1.as_operand(),
37390            op2.as_operand(),
37391            &NOREG,
37392        );
37393    }
37394}
37395
37396impl<'a> VsqrtshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37397    fn vsqrtsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37398        self.emit(
37399            VSQRTSHRRM_MASKZ,
37400            op0.as_operand(),
37401            op1.as_operand(),
37402            op2.as_operand(),
37403            &NOREG,
37404        );
37405    }
37406}
37407
37408/// `VSQRTSH_MASKZ_ER`.
37409///
37410/// Supported operand variants:
37411///
37412/// ```text
37413/// +---+---------------+
37414/// | # | Operands      |
37415/// +---+---------------+
37416/// | 1 | Xmm, Xmm, Xmm |
37417/// +---+---------------+
37418/// ```
37419pub trait VsqrtshMaskzErEmitter<A, B, C> {
37420    fn vsqrtsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
37421}
37422
37423impl<'a> VsqrtshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37424    fn vsqrtsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37425        self.emit(
37426            VSQRTSHRRR_MASKZ_ER,
37427            op0.as_operand(),
37428            op1.as_operand(),
37429            op2.as_operand(),
37430            &NOREG,
37431        );
37432    }
37433}
37434
37435/// `VSUBPH`.
37436///
37437/// Supported operand variants:
37438///
37439/// ```text
37440/// +---+---------------+
37441/// | # | Operands      |
37442/// +---+---------------+
37443/// | 1 | Xmm, Xmm, Mem |
37444/// | 2 | Xmm, Xmm, Xmm |
37445/// | 3 | Ymm, Ymm, Mem |
37446/// | 4 | Ymm, Ymm, Ymm |
37447/// | 5 | Zmm, Zmm, Mem |
37448/// | 6 | Zmm, Zmm, Zmm |
37449/// +---+---------------+
37450/// ```
37451pub trait VsubphEmitter<A, B, C> {
37452    fn vsubph(&mut self, op0: A, op1: B, op2: C);
37453}
37454
37455impl<'a> VsubphEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37456    fn vsubph(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37457        self.emit(
37458            VSUBPH128RRR,
37459            op0.as_operand(),
37460            op1.as_operand(),
37461            op2.as_operand(),
37462            &NOREG,
37463        );
37464    }
37465}
37466
37467impl<'a> VsubphEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37468    fn vsubph(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37469        self.emit(
37470            VSUBPH128RRM,
37471            op0.as_operand(),
37472            op1.as_operand(),
37473            op2.as_operand(),
37474            &NOREG,
37475        );
37476    }
37477}
37478
37479impl<'a> VsubphEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
37480    fn vsubph(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
37481        self.emit(
37482            VSUBPH256RRR,
37483            op0.as_operand(),
37484            op1.as_operand(),
37485            op2.as_operand(),
37486            &NOREG,
37487        );
37488    }
37489}
37490
37491impl<'a> VsubphEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
37492    fn vsubph(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
37493        self.emit(
37494            VSUBPH256RRM,
37495            op0.as_operand(),
37496            op1.as_operand(),
37497            op2.as_operand(),
37498            &NOREG,
37499        );
37500    }
37501}
37502
37503impl<'a> VsubphEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
37504    fn vsubph(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
37505        self.emit(
37506            VSUBPH512RRR,
37507            op0.as_operand(),
37508            op1.as_operand(),
37509            op2.as_operand(),
37510            &NOREG,
37511        );
37512    }
37513}
37514
37515impl<'a> VsubphEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
37516    fn vsubph(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
37517        self.emit(
37518            VSUBPH512RRM,
37519            op0.as_operand(),
37520            op1.as_operand(),
37521            op2.as_operand(),
37522            &NOREG,
37523        );
37524    }
37525}
37526
37527/// `VSUBPH_ER`.
37528///
37529/// Supported operand variants:
37530///
37531/// ```text
37532/// +---+---------------+
37533/// | # | Operands      |
37534/// +---+---------------+
37535/// | 1 | Zmm, Zmm, Zmm |
37536/// +---+---------------+
37537/// ```
37538pub trait VsubphErEmitter<A, B, C> {
37539    fn vsubph_er(&mut self, op0: A, op1: B, op2: C);
37540}
37541
37542impl<'a> VsubphErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
37543    fn vsubph_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
37544        self.emit(
37545            VSUBPH512RRR_ER,
37546            op0.as_operand(),
37547            op1.as_operand(),
37548            op2.as_operand(),
37549            &NOREG,
37550        );
37551    }
37552}
37553
37554/// `VSUBPH_MASK`.
37555///
37556/// Supported operand variants:
37557///
37558/// ```text
37559/// +---+---------------+
37560/// | # | Operands      |
37561/// +---+---------------+
37562/// | 1 | Xmm, Xmm, Mem |
37563/// | 2 | Xmm, Xmm, Xmm |
37564/// | 3 | Ymm, Ymm, Mem |
37565/// | 4 | Ymm, Ymm, Ymm |
37566/// | 5 | Zmm, Zmm, Mem |
37567/// | 6 | Zmm, Zmm, Zmm |
37568/// +---+---------------+
37569/// ```
37570pub trait VsubphMaskEmitter<A, B, C> {
37571    fn vsubph_mask(&mut self, op0: A, op1: B, op2: C);
37572}
37573
37574impl<'a> VsubphMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37575    fn vsubph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37576        self.emit(
37577            VSUBPH128RRR_MASK,
37578            op0.as_operand(),
37579            op1.as_operand(),
37580            op2.as_operand(),
37581            &NOREG,
37582        );
37583    }
37584}
37585
37586impl<'a> VsubphMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37587    fn vsubph_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37588        self.emit(
37589            VSUBPH128RRM_MASK,
37590            op0.as_operand(),
37591            op1.as_operand(),
37592            op2.as_operand(),
37593            &NOREG,
37594        );
37595    }
37596}
37597
37598impl<'a> VsubphMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
37599    fn vsubph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
37600        self.emit(
37601            VSUBPH256RRR_MASK,
37602            op0.as_operand(),
37603            op1.as_operand(),
37604            op2.as_operand(),
37605            &NOREG,
37606        );
37607    }
37608}
37609
37610impl<'a> VsubphMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
37611    fn vsubph_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
37612        self.emit(
37613            VSUBPH256RRM_MASK,
37614            op0.as_operand(),
37615            op1.as_operand(),
37616            op2.as_operand(),
37617            &NOREG,
37618        );
37619    }
37620}
37621
37622impl<'a> VsubphMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
37623    fn vsubph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
37624        self.emit(
37625            VSUBPH512RRR_MASK,
37626            op0.as_operand(),
37627            op1.as_operand(),
37628            op2.as_operand(),
37629            &NOREG,
37630        );
37631    }
37632}
37633
37634impl<'a> VsubphMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
37635    fn vsubph_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
37636        self.emit(
37637            VSUBPH512RRM_MASK,
37638            op0.as_operand(),
37639            op1.as_operand(),
37640            op2.as_operand(),
37641            &NOREG,
37642        );
37643    }
37644}
37645
37646/// `VSUBPH_MASK_ER`.
37647///
37648/// Supported operand variants:
37649///
37650/// ```text
37651/// +---+---------------+
37652/// | # | Operands      |
37653/// +---+---------------+
37654/// | 1 | Zmm, Zmm, Zmm |
37655/// +---+---------------+
37656/// ```
37657pub trait VsubphMaskErEmitter<A, B, C> {
37658    fn vsubph_mask_er(&mut self, op0: A, op1: B, op2: C);
37659}
37660
37661impl<'a> VsubphMaskErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
37662    fn vsubph_mask_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
37663        self.emit(
37664            VSUBPH512RRR_MASK_ER,
37665            op0.as_operand(),
37666            op1.as_operand(),
37667            op2.as_operand(),
37668            &NOREG,
37669        );
37670    }
37671}
37672
37673/// `VSUBPH_MASKZ`.
37674///
37675/// Supported operand variants:
37676///
37677/// ```text
37678/// +---+---------------+
37679/// | # | Operands      |
37680/// +---+---------------+
37681/// | 1 | Xmm, Xmm, Mem |
37682/// | 2 | Xmm, Xmm, Xmm |
37683/// | 3 | Ymm, Ymm, Mem |
37684/// | 4 | Ymm, Ymm, Ymm |
37685/// | 5 | Zmm, Zmm, Mem |
37686/// | 6 | Zmm, Zmm, Zmm |
37687/// +---+---------------+
37688/// ```
37689pub trait VsubphMaskzEmitter<A, B, C> {
37690    fn vsubph_maskz(&mut self, op0: A, op1: B, op2: C);
37691}
37692
37693impl<'a> VsubphMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37694    fn vsubph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37695        self.emit(
37696            VSUBPH128RRR_MASKZ,
37697            op0.as_operand(),
37698            op1.as_operand(),
37699            op2.as_operand(),
37700            &NOREG,
37701        );
37702    }
37703}
37704
37705impl<'a> VsubphMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37706    fn vsubph_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37707        self.emit(
37708            VSUBPH128RRM_MASKZ,
37709            op0.as_operand(),
37710            op1.as_operand(),
37711            op2.as_operand(),
37712            &NOREG,
37713        );
37714    }
37715}
37716
37717impl<'a> VsubphMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
37718    fn vsubph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
37719        self.emit(
37720            VSUBPH256RRR_MASKZ,
37721            op0.as_operand(),
37722            op1.as_operand(),
37723            op2.as_operand(),
37724            &NOREG,
37725        );
37726    }
37727}
37728
37729impl<'a> VsubphMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
37730    fn vsubph_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
37731        self.emit(
37732            VSUBPH256RRM_MASKZ,
37733            op0.as_operand(),
37734            op1.as_operand(),
37735            op2.as_operand(),
37736            &NOREG,
37737        );
37738    }
37739}
37740
37741impl<'a> VsubphMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
37742    fn vsubph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
37743        self.emit(
37744            VSUBPH512RRR_MASKZ,
37745            op0.as_operand(),
37746            op1.as_operand(),
37747            op2.as_operand(),
37748            &NOREG,
37749        );
37750    }
37751}
37752
37753impl<'a> VsubphMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
37754    fn vsubph_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
37755        self.emit(
37756            VSUBPH512RRM_MASKZ,
37757            op0.as_operand(),
37758            op1.as_operand(),
37759            op2.as_operand(),
37760            &NOREG,
37761        );
37762    }
37763}
37764
37765/// `VSUBPH_MASKZ_ER`.
37766///
37767/// Supported operand variants:
37768///
37769/// ```text
37770/// +---+---------------+
37771/// | # | Operands      |
37772/// +---+---------------+
37773/// | 1 | Zmm, Zmm, Zmm |
37774/// +---+---------------+
37775/// ```
37776pub trait VsubphMaskzErEmitter<A, B, C> {
37777    fn vsubph_maskz_er(&mut self, op0: A, op1: B, op2: C);
37778}
37779
37780impl<'a> VsubphMaskzErEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
37781    fn vsubph_maskz_er(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
37782        self.emit(
37783            VSUBPH512RRR_MASKZ_ER,
37784            op0.as_operand(),
37785            op1.as_operand(),
37786            op2.as_operand(),
37787            &NOREG,
37788        );
37789    }
37790}
37791
37792/// `VSUBSH`.
37793///
37794/// Supported operand variants:
37795///
37796/// ```text
37797/// +---+---------------+
37798/// | # | Operands      |
37799/// +---+---------------+
37800/// | 1 | Xmm, Xmm, Mem |
37801/// | 2 | Xmm, Xmm, Xmm |
37802/// +---+---------------+
37803/// ```
37804pub trait VsubshEmitter<A, B, C> {
37805    fn vsubsh(&mut self, op0: A, op1: B, op2: C);
37806}
37807
37808impl<'a> VsubshEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37809    fn vsubsh(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37810        self.emit(
37811            VSUBSHRRR,
37812            op0.as_operand(),
37813            op1.as_operand(),
37814            op2.as_operand(),
37815            &NOREG,
37816        );
37817    }
37818}
37819
37820impl<'a> VsubshEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37821    fn vsubsh(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37822        self.emit(
37823            VSUBSHRRM,
37824            op0.as_operand(),
37825            op1.as_operand(),
37826            op2.as_operand(),
37827            &NOREG,
37828        );
37829    }
37830}
37831
37832/// `VSUBSH_ER`.
37833///
37834/// Supported operand variants:
37835///
37836/// ```text
37837/// +---+---------------+
37838/// | # | Operands      |
37839/// +---+---------------+
37840/// | 1 | Xmm, Xmm, Xmm |
37841/// +---+---------------+
37842/// ```
37843pub trait VsubshErEmitter<A, B, C> {
37844    fn vsubsh_er(&mut self, op0: A, op1: B, op2: C);
37845}
37846
37847impl<'a> VsubshErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37848    fn vsubsh_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37849        self.emit(
37850            VSUBSHRRR_ER,
37851            op0.as_operand(),
37852            op1.as_operand(),
37853            op2.as_operand(),
37854            &NOREG,
37855        );
37856    }
37857}
37858
37859/// `VSUBSH_MASK`.
37860///
37861/// Supported operand variants:
37862///
37863/// ```text
37864/// +---+---------------+
37865/// | # | Operands      |
37866/// +---+---------------+
37867/// | 1 | Xmm, Xmm, Mem |
37868/// | 2 | Xmm, Xmm, Xmm |
37869/// +---+---------------+
37870/// ```
37871pub trait VsubshMaskEmitter<A, B, C> {
37872    fn vsubsh_mask(&mut self, op0: A, op1: B, op2: C);
37873}
37874
37875impl<'a> VsubshMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37876    fn vsubsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37877        self.emit(
37878            VSUBSHRRR_MASK,
37879            op0.as_operand(),
37880            op1.as_operand(),
37881            op2.as_operand(),
37882            &NOREG,
37883        );
37884    }
37885}
37886
37887impl<'a> VsubshMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37888    fn vsubsh_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37889        self.emit(
37890            VSUBSHRRM_MASK,
37891            op0.as_operand(),
37892            op1.as_operand(),
37893            op2.as_operand(),
37894            &NOREG,
37895        );
37896    }
37897}
37898
37899/// `VSUBSH_MASK_ER`.
37900///
37901/// Supported operand variants:
37902///
37903/// ```text
37904/// +---+---------------+
37905/// | # | Operands      |
37906/// +---+---------------+
37907/// | 1 | Xmm, Xmm, Xmm |
37908/// +---+---------------+
37909/// ```
37910pub trait VsubshMaskErEmitter<A, B, C> {
37911    fn vsubsh_mask_er(&mut self, op0: A, op1: B, op2: C);
37912}
37913
37914impl<'a> VsubshMaskErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37915    fn vsubsh_mask_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37916        self.emit(
37917            VSUBSHRRR_MASK_ER,
37918            op0.as_operand(),
37919            op1.as_operand(),
37920            op2.as_operand(),
37921            &NOREG,
37922        );
37923    }
37924}
37925
37926/// `VSUBSH_MASKZ`.
37927///
37928/// Supported operand variants:
37929///
37930/// ```text
37931/// +---+---------------+
37932/// | # | Operands      |
37933/// +---+---------------+
37934/// | 1 | Xmm, Xmm, Mem |
37935/// | 2 | Xmm, Xmm, Xmm |
37936/// +---+---------------+
37937/// ```
37938pub trait VsubshMaskzEmitter<A, B, C> {
37939    fn vsubsh_maskz(&mut self, op0: A, op1: B, op2: C);
37940}
37941
37942impl<'a> VsubshMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37943    fn vsubsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37944        self.emit(
37945            VSUBSHRRR_MASKZ,
37946            op0.as_operand(),
37947            op1.as_operand(),
37948            op2.as_operand(),
37949            &NOREG,
37950        );
37951    }
37952}
37953
37954impl<'a> VsubshMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
37955    fn vsubsh_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
37956        self.emit(
37957            VSUBSHRRM_MASKZ,
37958            op0.as_operand(),
37959            op1.as_operand(),
37960            op2.as_operand(),
37961            &NOREG,
37962        );
37963    }
37964}
37965
37966/// `VSUBSH_MASKZ_ER`.
37967///
37968/// Supported operand variants:
37969///
37970/// ```text
37971/// +---+---------------+
37972/// | # | Operands      |
37973/// +---+---------------+
37974/// | 1 | Xmm, Xmm, Xmm |
37975/// +---+---------------+
37976/// ```
37977pub trait VsubshMaskzErEmitter<A, B, C> {
37978    fn vsubsh_maskz_er(&mut self, op0: A, op1: B, op2: C);
37979}
37980
37981impl<'a> VsubshMaskzErEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
37982    fn vsubsh_maskz_er(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
37983        self.emit(
37984            VSUBSHRRR_MASKZ_ER,
37985            op0.as_operand(),
37986            op1.as_operand(),
37987            op2.as_operand(),
37988            &NOREG,
37989        );
37990    }
37991}
37992
37993/// `VUCOMISH`.
37994///
37995/// Supported operand variants:
37996///
37997/// ```text
37998/// +---+----------+
37999/// | # | Operands |
38000/// +---+----------+
38001/// | 1 | Xmm, Mem |
38002/// | 2 | Xmm, Xmm |
38003/// +---+----------+
38004/// ```
38005pub trait VucomishEmitter<A, B> {
38006    fn vucomish(&mut self, op0: A, op1: B);
38007}
38008
38009impl<'a> VucomishEmitter<Xmm, Xmm> for Assembler<'a> {
38010    fn vucomish(&mut self, op0: Xmm, op1: Xmm) {
38011        self.emit(
38012            VUCOMISHRR,
38013            op0.as_operand(),
38014            op1.as_operand(),
38015            &NOREG,
38016            &NOREG,
38017        );
38018    }
38019}
38020
38021impl<'a> VucomishEmitter<Xmm, Mem> for Assembler<'a> {
38022    fn vucomish(&mut self, op0: Xmm, op1: Mem) {
38023        self.emit(
38024            VUCOMISHRM,
38025            op0.as_operand(),
38026            op1.as_operand(),
38027            &NOREG,
38028            &NOREG,
38029        );
38030    }
38031}
38032
38033/// `VUCOMISH_SAE`.
38034///
38035/// Supported operand variants:
38036///
38037/// ```text
38038/// +---+----------+
38039/// | # | Operands |
38040/// +---+----------+
38041/// | 1 | Xmm, Xmm |
38042/// +---+----------+
38043/// ```
38044pub trait VucomishSaeEmitter<A, B> {
38045    fn vucomish_sae(&mut self, op0: A, op1: B);
38046}
38047
38048impl<'a> VucomishSaeEmitter<Xmm, Xmm> for Assembler<'a> {
38049    fn vucomish_sae(&mut self, op0: Xmm, op1: Xmm) {
38050        self.emit(
38051            VUCOMISHRR_SAE,
38052            op0.as_operand(),
38053            op1.as_operand(),
38054            &NOREG,
38055            &NOREG,
38056        );
38057    }
38058}
38059
38060/// `XCHG`.
38061///
38062/// Supported operand variants:
38063///
38064/// ```text
38065/// +---+--------------+
38066/// | # | Operands     |
38067/// +---+--------------+
38068/// | 1 | GpbLo, GpbLo |
38069/// | 2 | Gpd, Gpd     |
38070/// | 3 | Gpq, Gpq     |
38071/// | 4 | Gpw, Gpw     |
38072/// | 5 | Mem, GpbLo   |
38073/// | 6 | Mem, Gpd     |
38074/// | 7 | Mem, Gpq     |
38075/// | 8 | Mem, Gpw     |
38076/// +---+--------------+
38077/// ```
38078pub trait XchgEmitter<A, B> {
38079    fn xchg(&mut self, op0: A, op1: B);
38080}
38081
38082impl<'a> XchgEmitter<GpbLo, GpbLo> for Assembler<'a> {
38083    fn xchg(&mut self, op0: GpbLo, op1: GpbLo) {
38084        self.emit(XCHG8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38085    }
38086}
38087
38088impl<'a> XchgEmitter<Mem, GpbLo> for Assembler<'a> {
38089    fn xchg(&mut self, op0: Mem, op1: GpbLo) {
38090        self.emit(XCHG8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38091    }
38092}
38093
38094impl<'a> XchgEmitter<Gpw, Gpw> for Assembler<'a> {
38095    fn xchg(&mut self, op0: Gpw, op1: Gpw) {
38096        self.emit(XCHG16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38097    }
38098}
38099
38100impl<'a> XchgEmitter<Mem, Gpw> for Assembler<'a> {
38101    fn xchg(&mut self, op0: Mem, op1: Gpw) {
38102        self.emit(XCHG16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38103    }
38104}
38105
38106impl<'a> XchgEmitter<Gpd, Gpd> for Assembler<'a> {
38107    fn xchg(&mut self, op0: Gpd, op1: Gpd) {
38108        self.emit(XCHG32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38109    }
38110}
38111
38112impl<'a> XchgEmitter<Mem, Gpd> for Assembler<'a> {
38113    fn xchg(&mut self, op0: Mem, op1: Gpd) {
38114        self.emit(XCHG32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38115    }
38116}
38117
38118impl<'a> XchgEmitter<Gpq, Gpq> for Assembler<'a> {
38119    fn xchg(&mut self, op0: Gpq, op1: Gpq) {
38120        self.emit(XCHG64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38121    }
38122}
38123
38124impl<'a> XchgEmitter<Mem, Gpq> for Assembler<'a> {
38125    fn xchg(&mut self, op0: Mem, op1: Gpq) {
38126        self.emit(XCHG64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38127    }
38128}
38129
38130/// `XLATB`.
38131///
38132/// Supported operand variants:
38133///
38134/// ```text
38135/// +---+----------+
38136/// | # | Operands |
38137/// +---+----------+
38138/// | 1 | (none)   |
38139/// +---+----------+
38140/// ```
38141pub trait XlatbEmitter {
38142    fn xlatb(&mut self);
38143}
38144
38145impl<'a> XlatbEmitter for Assembler<'a> {
38146    fn xlatb(&mut self) {
38147        self.emit(XLATB, &NOREG, &NOREG, &NOREG, &NOREG);
38148    }
38149}
38150
38151/// `XOR`.
38152///
38153/// Supported operand variants:
38154///
38155/// ```text
38156/// +----+--------------+
38157/// | #  | Operands     |
38158/// +----+--------------+
38159/// | 1  | GpbLo, GpbLo |
38160/// | 2  | GpbLo, Imm   |
38161/// | 3  | GpbLo, Mem   |
38162/// | 4  | Gpd, Gpd     |
38163/// | 5  | Gpd, Imm     |
38164/// | 6  | Gpd, Mem     |
38165/// | 7  | Gpq, Gpq     |
38166/// | 8  | Gpq, Imm     |
38167/// | 9  | Gpq, Mem     |
38168/// | 10 | Gpw, Gpw     |
38169/// | 11 | Gpw, Imm     |
38170/// | 12 | Gpw, Mem     |
38171/// | 13 | Mem, GpbLo   |
38172/// | 14 | Mem, Gpd     |
38173/// | 15 | Mem, Gpq     |
38174/// | 16 | Mem, Gpw     |
38175/// | 17 | Mem, Imm     |
38176/// +----+--------------+
38177/// ```
38178pub trait XorEmitter<A, B> {
38179    fn xor(&mut self, op0: A, op1: B);
38180}
38181
38182impl<'a> XorEmitter<GpbLo, GpbLo> for Assembler<'a> {
38183    fn xor(&mut self, op0: GpbLo, op1: GpbLo) {
38184        self.emit(XOR8RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38185    }
38186}
38187
38188impl<'a> XorEmitter<Mem, GpbLo> for Assembler<'a> {
38189    fn xor(&mut self, op0: Mem, op1: GpbLo) {
38190        self.emit(XOR8MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38191    }
38192}
38193
38194impl<'a> XorEmitter<Gpw, Gpw> for Assembler<'a> {
38195    fn xor(&mut self, op0: Gpw, op1: Gpw) {
38196        self.emit(XOR16RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38197    }
38198}
38199
38200impl<'a> XorEmitter<Mem, Gpw> for Assembler<'a> {
38201    fn xor(&mut self, op0: Mem, op1: Gpw) {
38202        self.emit(XOR16MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38203    }
38204}
38205
38206impl<'a> XorEmitter<Gpd, Gpd> for Assembler<'a> {
38207    fn xor(&mut self, op0: Gpd, op1: Gpd) {
38208        self.emit(XOR32RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38209    }
38210}
38211
38212impl<'a> XorEmitter<Mem, Gpd> for Assembler<'a> {
38213    fn xor(&mut self, op0: Mem, op1: Gpd) {
38214        self.emit(XOR32MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38215    }
38216}
38217
38218impl<'a> XorEmitter<Gpq, Gpq> for Assembler<'a> {
38219    fn xor(&mut self, op0: Gpq, op1: Gpq) {
38220        self.emit(XOR64RR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38221    }
38222}
38223
38224impl<'a> XorEmitter<Mem, Gpq> for Assembler<'a> {
38225    fn xor(&mut self, op0: Mem, op1: Gpq) {
38226        self.emit(XOR64MR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38227    }
38228}
38229
38230impl<'a> XorEmitter<GpbLo, Mem> for Assembler<'a> {
38231    fn xor(&mut self, op0: GpbLo, op1: Mem) {
38232        self.emit(XOR8RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38233    }
38234}
38235
38236impl<'a> XorEmitter<Gpw, Mem> for Assembler<'a> {
38237    fn xor(&mut self, op0: Gpw, op1: Mem) {
38238        self.emit(XOR16RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38239    }
38240}
38241
38242impl<'a> XorEmitter<Gpd, Mem> for Assembler<'a> {
38243    fn xor(&mut self, op0: Gpd, op1: Mem) {
38244        self.emit(XOR32RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38245    }
38246}
38247
38248impl<'a> XorEmitter<Gpq, Mem> for Assembler<'a> {
38249    fn xor(&mut self, op0: Gpq, op1: Mem) {
38250        self.emit(XOR64RM, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38251    }
38252}
38253
38254impl<'a> XorEmitter<GpbLo, Imm> for Assembler<'a> {
38255    fn xor(&mut self, op0: GpbLo, op1: Imm) {
38256        self.emit(XOR8RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38257    }
38258}
38259
38260impl<'a> XorEmitter<Gpw, Imm> for Assembler<'a> {
38261    fn xor(&mut self, op0: Gpw, op1: Imm) {
38262        self.emit(XOR16RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38263    }
38264}
38265
38266impl<'a> XorEmitter<Gpd, Imm> for Assembler<'a> {
38267    fn xor(&mut self, op0: Gpd, op1: Imm) {
38268        self.emit(XOR32RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38269    }
38270}
38271
38272impl<'a> XorEmitter<Gpq, Imm> for Assembler<'a> {
38273    fn xor(&mut self, op0: Gpq, op1: Imm) {
38274        self.emit(XOR64RI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38275    }
38276}
38277
38278impl<'a> XorEmitter<Mem, Imm> for Assembler<'a> {
38279    fn xor(&mut self, op0: Mem, op1: Imm) {
38280        self.emit(XOR8MI, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
38281    }
38282}
38283
38284impl<'a> Assembler<'a> {
38285    /// `AADD`.
38286    ///
38287    /// Supported operand variants:
38288    ///
38289    /// ```text
38290    /// +---+----------+
38291    /// | # | Operands |
38292    /// +---+----------+
38293    /// | 1 | Mem, Gpd |
38294    /// | 2 | Mem, Gpq |
38295    /// +---+----------+
38296    /// ```
38297    #[inline]
38298    pub fn aadd<A, B>(&mut self, op0: A, op1: B)
38299    where
38300        Assembler<'a>: AaddEmitter<A, B>,
38301    {
38302        <Self as AaddEmitter<A, B>>::aadd(self, op0, op1);
38303    }
38304    /// `AAND`.
38305    ///
38306    /// Supported operand variants:
38307    ///
38308    /// ```text
38309    /// +---+----------+
38310    /// | # | Operands |
38311    /// +---+----------+
38312    /// | 1 | Mem, Gpd |
38313    /// | 2 | Mem, Gpq |
38314    /// +---+----------+
38315    /// ```
38316    #[inline]
38317    pub fn aand<A, B>(&mut self, op0: A, op1: B)
38318    where
38319        Assembler<'a>: AandEmitter<A, B>,
38320    {
38321        <Self as AandEmitter<A, B>>::aand(self, op0, op1);
38322    }
38323    /// `ADC`.
38324    ///
38325    /// Supported operand variants:
38326    ///
38327    /// ```text
38328    /// +----+--------------+
38329    /// | #  | Operands     |
38330    /// +----+--------------+
38331    /// | 1  | GpbLo, GpbLo |
38332    /// | 2  | GpbLo, Imm   |
38333    /// | 3  | GpbLo, Mem   |
38334    /// | 4  | Gpd, Gpd     |
38335    /// | 5  | Gpd, Imm     |
38336    /// | 6  | Gpd, Mem     |
38337    /// | 7  | Gpq, Gpq     |
38338    /// | 8  | Gpq, Imm     |
38339    /// | 9  | Gpq, Mem     |
38340    /// | 10 | Gpw, Gpw     |
38341    /// | 11 | Gpw, Imm     |
38342    /// | 12 | Gpw, Mem     |
38343    /// | 13 | Mem, GpbLo   |
38344    /// | 14 | Mem, Gpd     |
38345    /// | 15 | Mem, Gpq     |
38346    /// | 16 | Mem, Gpw     |
38347    /// | 17 | Mem, Imm     |
38348    /// +----+--------------+
38349    /// ```
38350    #[inline]
38351    pub fn adc<A, B>(&mut self, op0: A, op1: B)
38352    where
38353        Assembler<'a>: AdcEmitter<A, B>,
38354    {
38355        <Self as AdcEmitter<A, B>>::adc(self, op0, op1);
38356    }
38357    /// `ADD`.
38358    ///
38359    /// Supported operand variants:
38360    ///
38361    /// ```text
38362    /// +----+--------------+
38363    /// | #  | Operands     |
38364    /// +----+--------------+
38365    /// | 1  | GpbLo, GpbLo |
38366    /// | 2  | GpbLo, Imm   |
38367    /// | 3  | GpbLo, Mem   |
38368    /// | 4  | Gpd, Gpd     |
38369    /// | 5  | Gpd, Imm     |
38370    /// | 6  | Gpd, Mem     |
38371    /// | 7  | Gpq, Gpq     |
38372    /// | 8  | Gpq, Imm     |
38373    /// | 9  | Gpq, Mem     |
38374    /// | 10 | Gpw, Gpw     |
38375    /// | 11 | Gpw, Imm     |
38376    /// | 12 | Gpw, Mem     |
38377    /// | 13 | Mem, GpbLo   |
38378    /// | 14 | Mem, Gpd     |
38379    /// | 15 | Mem, Gpq     |
38380    /// | 16 | Mem, Gpw     |
38381    /// | 17 | Mem, Imm     |
38382    /// +----+--------------+
38383    /// ```
38384    #[inline]
38385    pub fn add<A, B>(&mut self, op0: A, op1: B)
38386    where
38387        Assembler<'a>: AddEmitter<A, B>,
38388    {
38389        <Self as AddEmitter<A, B>>::add(self, op0, op1);
38390    }
38391    /// `AND`.
38392    ///
38393    /// Supported operand variants:
38394    ///
38395    /// ```text
38396    /// +----+--------------+
38397    /// | #  | Operands     |
38398    /// +----+--------------+
38399    /// | 1  | GpbLo, GpbLo |
38400    /// | 2  | GpbLo, Imm   |
38401    /// | 3  | GpbLo, Mem   |
38402    /// | 4  | Gpd, Gpd     |
38403    /// | 5  | Gpd, Imm     |
38404    /// | 6  | Gpd, Mem     |
38405    /// | 7  | Gpq, Gpq     |
38406    /// | 8  | Gpq, Imm     |
38407    /// | 9  | Gpq, Mem     |
38408    /// | 10 | Gpw, Gpw     |
38409    /// | 11 | Gpw, Imm     |
38410    /// | 12 | Gpw, Mem     |
38411    /// | 13 | Mem, GpbLo   |
38412    /// | 14 | Mem, Gpd     |
38413    /// | 15 | Mem, Gpq     |
38414    /// | 16 | Mem, Gpw     |
38415    /// | 17 | Mem, Imm     |
38416    /// +----+--------------+
38417    /// ```
38418    #[inline]
38419    pub fn and<A, B>(&mut self, op0: A, op1: B)
38420    where
38421        Assembler<'a>: AndEmitter<A, B>,
38422    {
38423        <Self as AndEmitter<A, B>>::and(self, op0, op1);
38424    }
38425    /// `AOR`.
38426    ///
38427    /// Supported operand variants:
38428    ///
38429    /// ```text
38430    /// +---+----------+
38431    /// | # | Operands |
38432    /// +---+----------+
38433    /// | 1 | Mem, Gpd |
38434    /// | 2 | Mem, Gpq |
38435    /// +---+----------+
38436    /// ```
38437    #[inline]
38438    pub fn aor<A, B>(&mut self, op0: A, op1: B)
38439    where
38440        Assembler<'a>: AorEmitter<A, B>,
38441    {
38442        <Self as AorEmitter<A, B>>::aor(self, op0, op1);
38443    }
38444    /// `AXOR`.
38445    ///
38446    /// Supported operand variants:
38447    ///
38448    /// ```text
38449    /// +---+----------+
38450    /// | # | Operands |
38451    /// +---+----------+
38452    /// | 1 | Mem, Gpd |
38453    /// | 2 | Mem, Gpq |
38454    /// +---+----------+
38455    /// ```
38456    #[inline]
38457    pub fn axor<A, B>(&mut self, op0: A, op1: B)
38458    where
38459        Assembler<'a>: AxorEmitter<A, B>,
38460    {
38461        <Self as AxorEmitter<A, B>>::axor(self, op0, op1);
38462    }
38463    /// `BSF`.
38464    ///
38465    /// Supported operand variants:
38466    ///
38467    /// ```text
38468    /// +---+----------+
38469    /// | # | Operands |
38470    /// +---+----------+
38471    /// | 1 | Gpd, Gpd |
38472    /// | 2 | Gpd, Mem |
38473    /// | 3 | Gpq, Gpq |
38474    /// | 4 | Gpq, Mem |
38475    /// | 5 | Gpw, Gpw |
38476    /// | 6 | Gpw, Mem |
38477    /// +---+----------+
38478    /// ```
38479    #[inline]
38480    pub fn bsf<A, B>(&mut self, op0: A, op1: B)
38481    where
38482        Assembler<'a>: BsfEmitter<A, B>,
38483    {
38484        <Self as BsfEmitter<A, B>>::bsf(self, op0, op1);
38485    }
38486    /// `BSR`.
38487    ///
38488    /// Supported operand variants:
38489    ///
38490    /// ```text
38491    /// +---+----------+
38492    /// | # | Operands |
38493    /// +---+----------+
38494    /// | 1 | Gpd, Gpd |
38495    /// | 2 | Gpd, Mem |
38496    /// | 3 | Gpq, Gpq |
38497    /// | 4 | Gpq, Mem |
38498    /// | 5 | Gpw, Gpw |
38499    /// | 6 | Gpw, Mem |
38500    /// +---+----------+
38501    /// ```
38502    #[inline]
38503    pub fn bsr<A, B>(&mut self, op0: A, op1: B)
38504    where
38505        Assembler<'a>: BsrEmitter<A, B>,
38506    {
38507        <Self as BsrEmitter<A, B>>::bsr(self, op0, op1);
38508    }
38509    /// `BT`.
38510    ///
38511    /// Supported operand variants:
38512    ///
38513    /// ```text
38514    /// +----+----------+
38515    /// | #  | Operands |
38516    /// +----+----------+
38517    /// | 1  | Gpd, Gpd |
38518    /// | 2  | Gpd, Imm |
38519    /// | 3  | Gpq, Gpq |
38520    /// | 4  | Gpq, Imm |
38521    /// | 5  | Gpw, Gpw |
38522    /// | 6  | Gpw, Imm |
38523    /// | 7  | Mem, Gpd |
38524    /// | 8  | Mem, Gpq |
38525    /// | 9  | Mem, Gpw |
38526    /// | 10 | Mem, Imm |
38527    /// +----+----------+
38528    /// ```
38529    #[inline]
38530    pub fn bt<A, B>(&mut self, op0: A, op1: B)
38531    where
38532        Assembler<'a>: BtEmitter<A, B>,
38533    {
38534        <Self as BtEmitter<A, B>>::bt(self, op0, op1);
38535    }
38536    /// `BTC`.
38537    ///
38538    /// Supported operand variants:
38539    ///
38540    /// ```text
38541    /// +----+----------+
38542    /// | #  | Operands |
38543    /// +----+----------+
38544    /// | 1  | Gpd, Gpd |
38545    /// | 2  | Gpd, Imm |
38546    /// | 3  | Gpq, Gpq |
38547    /// | 4  | Gpq, Imm |
38548    /// | 5  | Gpw, Gpw |
38549    /// | 6  | Gpw, Imm |
38550    /// | 7  | Mem, Gpd |
38551    /// | 8  | Mem, Gpq |
38552    /// | 9  | Mem, Gpw |
38553    /// | 10 | Mem, Imm |
38554    /// +----+----------+
38555    /// ```
38556    #[inline]
38557    pub fn btc<A, B>(&mut self, op0: A, op1: B)
38558    where
38559        Assembler<'a>: BtcEmitter<A, B>,
38560    {
38561        <Self as BtcEmitter<A, B>>::btc(self, op0, op1);
38562    }
38563    /// `BTR`.
38564    ///
38565    /// Supported operand variants:
38566    ///
38567    /// ```text
38568    /// +----+----------+
38569    /// | #  | Operands |
38570    /// +----+----------+
38571    /// | 1  | Gpd, Gpd |
38572    /// | 2  | Gpd, Imm |
38573    /// | 3  | Gpq, Gpq |
38574    /// | 4  | Gpq, Imm |
38575    /// | 5  | Gpw, Gpw |
38576    /// | 6  | Gpw, Imm |
38577    /// | 7  | Mem, Gpd |
38578    /// | 8  | Mem, Gpq |
38579    /// | 9  | Mem, Gpw |
38580    /// | 10 | Mem, Imm |
38581    /// +----+----------+
38582    /// ```
38583    #[inline]
38584    pub fn btr<A, B>(&mut self, op0: A, op1: B)
38585    where
38586        Assembler<'a>: BtrEmitter<A, B>,
38587    {
38588        <Self as BtrEmitter<A, B>>::btr(self, op0, op1);
38589    }
38590    /// `BTS`.
38591    ///
38592    /// Supported operand variants:
38593    ///
38594    /// ```text
38595    /// +----+----------+
38596    /// | #  | Operands |
38597    /// +----+----------+
38598    /// | 1  | Gpd, Gpd |
38599    /// | 2  | Gpd, Imm |
38600    /// | 3  | Gpq, Gpq |
38601    /// | 4  | Gpq, Imm |
38602    /// | 5  | Gpw, Gpw |
38603    /// | 6  | Gpw, Imm |
38604    /// | 7  | Mem, Gpd |
38605    /// | 8  | Mem, Gpq |
38606    /// | 9  | Mem, Gpw |
38607    /// | 10 | Mem, Imm |
38608    /// +----+----------+
38609    /// ```
38610    #[inline]
38611    pub fn bts<A, B>(&mut self, op0: A, op1: B)
38612    where
38613        Assembler<'a>: BtsEmitter<A, B>,
38614    {
38615        <Self as BtsEmitter<A, B>>::bts(self, op0, op1);
38616    }
38617    /// `CALL`.
38618    ///
38619    /// Supported operand variants:
38620    ///
38621    /// ```text
38622    /// +---+----------+
38623    /// | # | Operands |
38624    /// +---+----------+
38625    /// | 1 | Gpq      |
38626    /// | 2 | Imm      |
38627    /// | 3 | Label    |
38628    /// | 4 | Mem      |
38629    /// | 5 | Sym      |
38630    /// +---+----------+
38631    /// ```
38632    #[inline]
38633    pub fn call<A>(&mut self, op0: A)
38634    where
38635        Assembler<'a>: CallEmitter<A>,
38636    {
38637        <Self as CallEmitter<A>>::call(self, op0);
38638    }
38639    /// `CALLF`.
38640    ///
38641    /// Supported operand variants:
38642    ///
38643    /// ```text
38644    /// +---+----------+
38645    /// | # | Operands |
38646    /// +---+----------+
38647    /// | 1 | Mem      |
38648    /// +---+----------+
38649    /// ```
38650    #[inline]
38651    pub fn callf<A>(&mut self, op0: A)
38652    where
38653        Assembler<'a>: CallfEmitter<A>,
38654    {
38655        <Self as CallfEmitter<A>>::callf(self, op0);
38656    }
38657    /// `CBW`.
38658    ///
38659    /// Supported operand variants:
38660    ///
38661    /// ```text
38662    /// +---+----------+
38663    /// | # | Operands |
38664    /// +---+----------+
38665    /// | 1 | (none)   |
38666    /// +---+----------+
38667    /// ```
38668    #[inline]
38669    pub fn cbw(&mut self)
38670    where
38671        Assembler<'a>: CbwEmitter,
38672    {
38673        <Self as CbwEmitter>::cbw(self);
38674    }
38675    /// `CDQ`.
38676    ///
38677    /// Supported operand variants:
38678    ///
38679    /// ```text
38680    /// +---+----------+
38681    /// | # | Operands |
38682    /// +---+----------+
38683    /// | 1 | (none)   |
38684    /// +---+----------+
38685    /// ```
38686    #[inline]
38687    pub fn cdq(&mut self)
38688    where
38689        Assembler<'a>: CdqEmitter,
38690    {
38691        <Self as CdqEmitter>::cdq(self);
38692    }
38693    /// `CDQE`.
38694    ///
38695    /// Supported operand variants:
38696    ///
38697    /// ```text
38698    /// +---+----------+
38699    /// | # | Operands |
38700    /// +---+----------+
38701    /// | 1 | (none)   |
38702    /// +---+----------+
38703    /// ```
38704    #[inline]
38705    pub fn cdqe(&mut self)
38706    where
38707        Assembler<'a>: CdqeEmitter,
38708    {
38709        <Self as CdqeEmitter>::cdqe(self);
38710    }
38711    /// `CLC`.
38712    ///
38713    /// Supported operand variants:
38714    ///
38715    /// ```text
38716    /// +---+----------+
38717    /// | # | Operands |
38718    /// +---+----------+
38719    /// | 1 | (none)   |
38720    /// +---+----------+
38721    /// ```
38722    #[inline]
38723    pub fn clc(&mut self)
38724    where
38725        Assembler<'a>: ClcEmitter,
38726    {
38727        <Self as ClcEmitter>::clc(self);
38728    }
38729    /// `CLD`.
38730    ///
38731    /// Supported operand variants:
38732    ///
38733    /// ```text
38734    /// +---+----------+
38735    /// | # | Operands |
38736    /// +---+----------+
38737    /// | 1 | (none)   |
38738    /// +---+----------+
38739    /// ```
38740    #[inline]
38741    pub fn cld(&mut self)
38742    where
38743        Assembler<'a>: CldEmitter,
38744    {
38745        <Self as CldEmitter>::cld(self);
38746    }
38747    /// `CLFLUSH`.
38748    ///
38749    /// Supported operand variants:
38750    ///
38751    /// ```text
38752    /// +---+----------+
38753    /// | # | Operands |
38754    /// +---+----------+
38755    /// | 1 | Mem      |
38756    /// +---+----------+
38757    /// ```
38758    #[inline]
38759    pub fn clflush<A>(&mut self, op0: A)
38760    where
38761        Assembler<'a>: ClflushEmitter<A>,
38762    {
38763        <Self as ClflushEmitter<A>>::clflush(self, op0);
38764    }
38765    /// `CLI`.
38766    ///
38767    /// Supported operand variants:
38768    ///
38769    /// ```text
38770    /// +---+----------+
38771    /// | # | Operands |
38772    /// +---+----------+
38773    /// | 1 | (none)   |
38774    /// +---+----------+
38775    /// ```
38776    #[inline]
38777    pub fn cli(&mut self)
38778    where
38779        Assembler<'a>: CliEmitter,
38780    {
38781        <Self as CliEmitter>::cli(self);
38782    }
38783    /// `CLTS`.
38784    ///
38785    /// Supported operand variants:
38786    ///
38787    /// ```text
38788    /// +---+----------+
38789    /// | # | Operands |
38790    /// +---+----------+
38791    /// | 1 | (none)   |
38792    /// +---+----------+
38793    /// ```
38794    #[inline]
38795    pub fn clts(&mut self)
38796    where
38797        Assembler<'a>: CltsEmitter,
38798    {
38799        <Self as CltsEmitter>::clts(self);
38800    }
38801    /// `CMC`.
38802    ///
38803    /// Supported operand variants:
38804    ///
38805    /// ```text
38806    /// +---+----------+
38807    /// | # | Operands |
38808    /// +---+----------+
38809    /// | 1 | (none)   |
38810    /// +---+----------+
38811    /// ```
38812    #[inline]
38813    pub fn cmc(&mut self)
38814    where
38815        Assembler<'a>: CmcEmitter,
38816    {
38817        <Self as CmcEmitter>::cmc(self);
38818    }
38819    /// `CMP`.
38820    ///
38821    /// Supported operand variants:
38822    ///
38823    /// ```text
38824    /// +----+--------------+
38825    /// | #  | Operands     |
38826    /// +----+--------------+
38827    /// | 1  | GpbLo, GpbLo |
38828    /// | 2  | GpbLo, Imm   |
38829    /// | 3  | GpbLo, Mem   |
38830    /// | 4  | Gpd, Gpd     |
38831    /// | 5  | Gpd, Imm     |
38832    /// | 6  | Gpd, Mem     |
38833    /// | 7  | Gpq, Gpq     |
38834    /// | 8  | Gpq, Imm     |
38835    /// | 9  | Gpq, Mem     |
38836    /// | 10 | Gpw, Gpw     |
38837    /// | 11 | Gpw, Imm     |
38838    /// | 12 | Gpw, Mem     |
38839    /// | 13 | Mem, GpbLo   |
38840    /// | 14 | Mem, Gpd     |
38841    /// | 15 | Mem, Gpq     |
38842    /// | 16 | Mem, Gpw     |
38843    /// | 17 | Mem, Imm     |
38844    /// +----+--------------+
38845    /// ```
38846    #[inline]
38847    pub fn cmp<A, B>(&mut self, op0: A, op1: B)
38848    where
38849        Assembler<'a>: CmpEmitter<A, B>,
38850    {
38851        <Self as CmpEmitter<A, B>>::cmp(self, op0, op1);
38852    }
38853    /// `CMPS`.
38854    ///
38855    /// Supported operand variants:
38856    ///
38857    /// ```text
38858    /// +---+----------+
38859    /// | # | Operands |
38860    /// +---+----------+
38861    /// | 1 | (none)   |
38862    /// +---+----------+
38863    /// ```
38864    #[inline]
38865    pub fn cmps(&mut self)
38866    where
38867        Assembler<'a>: CmpsEmitter,
38868    {
38869        <Self as CmpsEmitter>::cmps(self);
38870    }
38871    /// `CQO`.
38872    ///
38873    /// Supported operand variants:
38874    ///
38875    /// ```text
38876    /// +---+----------+
38877    /// | # | Operands |
38878    /// +---+----------+
38879    /// | 1 | (none)   |
38880    /// +---+----------+
38881    /// ```
38882    #[inline]
38883    pub fn cqo(&mut self)
38884    where
38885        Assembler<'a>: CqoEmitter,
38886    {
38887        <Self as CqoEmitter>::cqo(self);
38888    }
38889    /// `CWD`.
38890    ///
38891    /// Supported operand variants:
38892    ///
38893    /// ```text
38894    /// +---+----------+
38895    /// | # | Operands |
38896    /// +---+----------+
38897    /// | 1 | (none)   |
38898    /// +---+----------+
38899    /// ```
38900    #[inline]
38901    pub fn cwd(&mut self)
38902    where
38903        Assembler<'a>: CwdEmitter,
38904    {
38905        <Self as CwdEmitter>::cwd(self);
38906    }
38907    /// `CWDE`.
38908    ///
38909    /// Supported operand variants:
38910    ///
38911    /// ```text
38912    /// +---+----------+
38913    /// | # | Operands |
38914    /// +---+----------+
38915    /// | 1 | (none)   |
38916    /// +---+----------+
38917    /// ```
38918    #[inline]
38919    pub fn cwde(&mut self)
38920    where
38921        Assembler<'a>: CwdeEmitter,
38922    {
38923        <Self as CwdeEmitter>::cwde(self);
38924    }
38925    /// `C_EX`.
38926    ///
38927    /// Supported operand variants:
38928    ///
38929    /// ```text
38930    /// +---+----------+
38931    /// | # | Operands |
38932    /// +---+----------+
38933    /// | 1 | (none)   |
38934    /// +---+----------+
38935    /// ```
38936    #[inline]
38937    pub fn c_ex(&mut self)
38938    where
38939        Assembler<'a>: CExEmitter,
38940    {
38941        <Self as CExEmitter>::c_ex(self);
38942    }
38943    /// `C_SEP`.
38944    ///
38945    /// Supported operand variants:
38946    ///
38947    /// ```text
38948    /// +---+----------+
38949    /// | # | Operands |
38950    /// +---+----------+
38951    /// | 1 | (none)   |
38952    /// +---+----------+
38953    /// ```
38954    #[inline]
38955    pub fn c_sep(&mut self)
38956    where
38957        Assembler<'a>: CSepEmitter,
38958    {
38959        <Self as CSepEmitter>::c_sep(self);
38960    }
38961    /// `DEC`.
38962    ///
38963    /// Supported operand variants:
38964    ///
38965    /// ```text
38966    /// +---+----------+
38967    /// | # | Operands |
38968    /// +---+----------+
38969    /// | 1 | GpbLo    |
38970    /// | 2 | Gpd      |
38971    /// | 3 | Gpq      |
38972    /// | 4 | Gpw      |
38973    /// | 5 | Mem      |
38974    /// +---+----------+
38975    /// ```
38976    #[inline]
38977    pub fn dec<A>(&mut self, op0: A)
38978    where
38979        Assembler<'a>: DecEmitter<A>,
38980    {
38981        <Self as DecEmitter<A>>::dec(self, op0);
38982    }
38983    /// `DIV`.
38984    ///
38985    /// Supported operand variants:
38986    ///
38987    /// ```text
38988    /// +---+----------+
38989    /// | # | Operands |
38990    /// +---+----------+
38991    /// | 1 | GpbLo    |
38992    /// | 2 | Gpd      |
38993    /// | 3 | Gpq      |
38994    /// | 4 | Gpw      |
38995    /// | 5 | Mem      |
38996    /// +---+----------+
38997    /// ```
38998    #[inline]
38999    pub fn div<A>(&mut self, op0: A)
39000    where
39001        Assembler<'a>: DivEmitter<A>,
39002    {
39003        <Self as DivEmitter<A>>::div(self, op0);
39004    }
39005    /// `ENTER`.
39006    ///
39007    /// Supported operand variants:
39008    ///
39009    /// ```text
39010    /// +---+----------+
39011    /// | # | Operands |
39012    /// +---+----------+
39013    /// | 1 | Imm      |
39014    /// +---+----------+
39015    /// ```
39016    #[inline]
39017    pub fn enter<A>(&mut self, op0: A)
39018    where
39019        Assembler<'a>: EnterEmitter<A>,
39020    {
39021        <Self as EnterEmitter<A>>::enter(self, op0);
39022    }
39023    /// `FWAIT`.
39024    ///
39025    /// Supported operand variants:
39026    ///
39027    /// ```text
39028    /// +---+----------+
39029    /// | # | Operands |
39030    /// +---+----------+
39031    /// | 1 | (none)   |
39032    /// +---+----------+
39033    /// ```
39034    #[inline]
39035    pub fn fwait(&mut self)
39036    where
39037        Assembler<'a>: FwaitEmitter,
39038    {
39039        <Self as FwaitEmitter>::fwait(self);
39040    }
39041    /// `HLT`.
39042    ///
39043    /// Supported operand variants:
39044    ///
39045    /// ```text
39046    /// +---+----------+
39047    /// | # | Operands |
39048    /// +---+----------+
39049    /// | 1 | (none)   |
39050    /// +---+----------+
39051    /// ```
39052    #[inline]
39053    pub fn hlt(&mut self)
39054    where
39055        Assembler<'a>: HltEmitter,
39056    {
39057        <Self as HltEmitter>::hlt(self);
39058    }
39059    /// `IDIV`.
39060    ///
39061    /// Supported operand variants:
39062    ///
39063    /// ```text
39064    /// +---+----------+
39065    /// | # | Operands |
39066    /// +---+----------+
39067    /// | 1 | GpbLo    |
39068    /// | 2 | Gpd      |
39069    /// | 3 | Gpq      |
39070    /// | 4 | Gpw      |
39071    /// | 5 | Mem      |
39072    /// +---+----------+
39073    /// ```
39074    #[inline]
39075    pub fn idiv<A>(&mut self, op0: A)
39076    where
39077        Assembler<'a>: IdivEmitter<A>,
39078    {
39079        <Self as IdivEmitter<A>>::idiv(self, op0);
39080    }
39081    /// `IMUL`.
39082    ///
39083    /// Supported operand variants:
39084    ///
39085    /// ```text
39086    /// +---+----------+
39087    /// | # | Operands |
39088    /// +---+----------+
39089    /// | 1 | GpbLo    |
39090    /// | 2 | Gpd      |
39091    /// | 3 | Gpq      |
39092    /// | 4 | Gpw      |
39093    /// | 5 | Mem      |
39094    /// +---+----------+
39095    /// ```
39096    #[inline]
39097    pub fn imul_1<A>(&mut self, op0: A)
39098    where
39099        Assembler<'a>: ImulEmitter_1<A>,
39100    {
39101        <Self as ImulEmitter_1<A>>::imul_1(self, op0);
39102    }
39103    /// `IMUL`.
39104    ///
39105    /// Supported operand variants:
39106    ///
39107    /// ```text
39108    /// +---+----------+
39109    /// | # | Operands |
39110    /// +---+----------+
39111    /// | 1 | Gpd, Gpd |
39112    /// | 2 | Gpd, Mem |
39113    /// | 3 | Gpq, Gpq |
39114    /// | 4 | Gpq, Mem |
39115    /// | 5 | Gpw, Gpw |
39116    /// | 6 | Gpw, Mem |
39117    /// +---+----------+
39118    /// ```
39119    #[inline]
39120    pub fn imul_2<A, B>(&mut self, op0: A, op1: B)
39121    where
39122        Assembler<'a>: ImulEmitter_2<A, B>,
39123    {
39124        <Self as ImulEmitter_2<A, B>>::imul_2(self, op0, op1);
39125    }
39126    /// `IMUL`.
39127    ///
39128    /// Supported operand variants:
39129    ///
39130    /// ```text
39131    /// +---+---------------+
39132    /// | # | Operands      |
39133    /// +---+---------------+
39134    /// | 1 | Gpd, Gpd, Imm |
39135    /// | 2 | Gpd, Mem, Imm |
39136    /// | 3 | Gpq, Gpq, Imm |
39137    /// | 4 | Gpq, Mem, Imm |
39138    /// | 5 | Gpw, Gpw, Imm |
39139    /// | 6 | Gpw, Mem, Imm |
39140    /// +---+---------------+
39141    /// ```
39142    #[inline]
39143    pub fn imul_3<A, B, C>(&mut self, op0: A, op1: B, op2: C)
39144    where
39145        Assembler<'a>: ImulEmitter_3<A, B, C>,
39146    {
39147        <Self as ImulEmitter_3<A, B, C>>::imul_3(self, op0, op1, op2);
39148    }
39149    /// `IN`.
39150    ///
39151    /// Supported operand variants:
39152    ///
39153    /// ```text
39154    /// +---+----------+
39155    /// | # | Operands |
39156    /// +---+----------+
39157    /// | 1 | (none)   |
39158    /// +---+----------+
39159    /// ```
39160    #[inline]
39161    pub fn r#in(&mut self)
39162    where
39163        Assembler<'a>: InEmitter,
39164    {
39165        <Self as InEmitter>::r#in(self);
39166    }
39167    /// `IN`.
39168    ///
39169    /// Supported operand variants:
39170    ///
39171    /// ```text
39172    /// +---+------------+
39173    /// | # | Operands   |
39174    /// +---+------------+
39175    /// | 1 | GpbLo, Imm |
39176    /// | 2 | Gpd, Imm   |
39177    /// | 3 | Gpq, Imm   |
39178    /// | 4 | Gpw, Imm   |
39179    /// +---+------------+
39180    /// ```
39181    #[inline]
39182    pub fn r#in_2<A, B>(&mut self, op0: A, op1: B)
39183    where
39184        Assembler<'a>: InEmitter_2<A, B>,
39185    {
39186        <Self as InEmitter_2<A, B>>::r#in_2(self, op0, op1);
39187    }
39188    /// `INC`.
39189    ///
39190    /// Supported operand variants:
39191    ///
39192    /// ```text
39193    /// +---+----------+
39194    /// | # | Operands |
39195    /// +---+----------+
39196    /// | 1 | GpbLo    |
39197    /// | 2 | Gpd      |
39198    /// | 3 | Gpq      |
39199    /// | 4 | Gpw      |
39200    /// | 5 | Mem      |
39201    /// +---+----------+
39202    /// ```
39203    #[inline]
39204    pub fn inc<A>(&mut self, op0: A)
39205    where
39206        Assembler<'a>: IncEmitter<A>,
39207    {
39208        <Self as IncEmitter<A>>::inc(self, op0);
39209    }
39210    /// `INS`.
39211    ///
39212    /// Supported operand variants:
39213    ///
39214    /// ```text
39215    /// +---+----------+
39216    /// | # | Operands |
39217    /// +---+----------+
39218    /// | 1 | (none)   |
39219    /// +---+----------+
39220    /// ```
39221    #[inline]
39222    pub fn ins(&mut self)
39223    where
39224        Assembler<'a>: InsEmitter,
39225    {
39226        <Self as InsEmitter>::ins(self);
39227    }
39228    /// `INT`.
39229    ///
39230    /// Supported operand variants:
39231    ///
39232    /// ```text
39233    /// +---+----------+
39234    /// | # | Operands |
39235    /// +---+----------+
39236    /// | 1 | Imm      |
39237    /// +---+----------+
39238    /// ```
39239    #[inline]
39240    pub fn int<A>(&mut self, op0: A)
39241    where
39242        Assembler<'a>: IntEmitter<A>,
39243    {
39244        <Self as IntEmitter<A>>::int(self, op0);
39245    }
39246    /// `INT1`.
39247    ///
39248    /// Supported operand variants:
39249    ///
39250    /// ```text
39251    /// +---+----------+
39252    /// | # | Operands |
39253    /// +---+----------+
39254    /// | 1 | (none)   |
39255    /// +---+----------+
39256    /// ```
39257    #[inline]
39258    pub fn int1(&mut self)
39259    where
39260        Assembler<'a>: Int1Emitter,
39261    {
39262        <Self as Int1Emitter>::int1(self);
39263    }
39264    /// `INT3`.
39265    ///
39266    /// Supported operand variants:
39267    ///
39268    /// ```text
39269    /// +---+----------+
39270    /// | # | Operands |
39271    /// +---+----------+
39272    /// | 1 | (none)   |
39273    /// +---+----------+
39274    /// ```
39275    #[inline]
39276    pub fn int3(&mut self)
39277    where
39278        Assembler<'a>: Int3Emitter,
39279    {
39280        <Self as Int3Emitter>::int3(self);
39281    }
39282    /// `IRET`.
39283    ///
39284    /// Supported operand variants:
39285    ///
39286    /// ```text
39287    /// +---+----------+
39288    /// | # | Operands |
39289    /// +---+----------+
39290    /// | 1 | (none)   |
39291    /// +---+----------+
39292    /// ```
39293    #[inline]
39294    pub fn iret(&mut self)
39295    where
39296        Assembler<'a>: IretEmitter,
39297    {
39298        <Self as IretEmitter>::iret(self);
39299    }
39300    /// `JA`.
39301    ///
39302    /// Supported operand variants:
39303    ///
39304    /// ```text
39305    /// +---+----------+
39306    /// | # | Operands |
39307    /// +---+----------+
39308    /// | 1 | Imm      |
39309    /// | 2 | Label    |
39310    /// | 3 | Sym      |
39311    /// +---+----------+
39312    /// ```
39313    #[inline]
39314    pub fn ja<A>(&mut self, op0: A)
39315    where
39316        Assembler<'a>: JaEmitter<A>,
39317    {
39318        <Self as JaEmitter<A>>::ja(self, op0);
39319    }
39320    /// `JBE`.
39321    ///
39322    /// Supported operand variants:
39323    ///
39324    /// ```text
39325    /// +---+----------+
39326    /// | # | Operands |
39327    /// +---+----------+
39328    /// | 1 | Imm      |
39329    /// | 2 | Label    |
39330    /// | 3 | Sym      |
39331    /// +---+----------+
39332    /// ```
39333    #[inline]
39334    pub fn jbe<A>(&mut self, op0: A)
39335    where
39336        Assembler<'a>: JbeEmitter<A>,
39337    {
39338        <Self as JbeEmitter<A>>::jbe(self, op0);
39339    }
39340    /// `JC`.
39341    ///
39342    /// Supported operand variants:
39343    ///
39344    /// ```text
39345    /// +---+----------+
39346    /// | # | Operands |
39347    /// +---+----------+
39348    /// | 1 | Imm      |
39349    /// | 2 | Label    |
39350    /// | 3 | Sym      |
39351    /// +---+----------+
39352    /// ```
39353    #[inline]
39354    pub fn jc<A>(&mut self, op0: A)
39355    where
39356        Assembler<'a>: JcEmitter<A>,
39357    {
39358        <Self as JcEmitter<A>>::jc(self, op0);
39359    }
39360    /// `JCXZ`.
39361    ///
39362    /// Supported operand variants:
39363    ///
39364    /// ```text
39365    /// +---+----------+
39366    /// | # | Operands |
39367    /// +---+----------+
39368    /// | 1 | Imm      |
39369    /// | 2 | Label    |
39370    /// | 3 | Sym      |
39371    /// +---+----------+
39372    /// ```
39373    #[inline]
39374    pub fn jcxz<A>(&mut self, op0: A)
39375    where
39376        Assembler<'a>: JcxzEmitter<A>,
39377    {
39378        <Self as JcxzEmitter<A>>::jcxz(self, op0);
39379    }
39380    /// `JG`.
39381    ///
39382    /// Supported operand variants:
39383    ///
39384    /// ```text
39385    /// +---+----------+
39386    /// | # | Operands |
39387    /// +---+----------+
39388    /// | 1 | Imm      |
39389    /// | 2 | Label    |
39390    /// | 3 | Sym      |
39391    /// +---+----------+
39392    /// ```
39393    #[inline]
39394    pub fn jg<A>(&mut self, op0: A)
39395    where
39396        Assembler<'a>: JgEmitter<A>,
39397    {
39398        <Self as JgEmitter<A>>::jg(self, op0);
39399    }
39400    /// `JGE`.
39401    ///
39402    /// Supported operand variants:
39403    ///
39404    /// ```text
39405    /// +---+----------+
39406    /// | # | Operands |
39407    /// +---+----------+
39408    /// | 1 | Imm      |
39409    /// | 2 | Label    |
39410    /// | 3 | Sym      |
39411    /// +---+----------+
39412    /// ```
39413    #[inline]
39414    pub fn jge<A>(&mut self, op0: A)
39415    where
39416        Assembler<'a>: JgeEmitter<A>,
39417    {
39418        <Self as JgeEmitter<A>>::jge(self, op0);
39419    }
39420    /// `JL`.
39421    ///
39422    /// Supported operand variants:
39423    ///
39424    /// ```text
39425    /// +---+----------+
39426    /// | # | Operands |
39427    /// +---+----------+
39428    /// | 1 | Imm      |
39429    /// | 2 | Label    |
39430    /// | 3 | Sym      |
39431    /// +---+----------+
39432    /// ```
39433    #[inline]
39434    pub fn jl<A>(&mut self, op0: A)
39435    where
39436        Assembler<'a>: JlEmitter<A>,
39437    {
39438        <Self as JlEmitter<A>>::jl(self, op0);
39439    }
39440    /// `JLE`.
39441    ///
39442    /// Supported operand variants:
39443    ///
39444    /// ```text
39445    /// +---+----------+
39446    /// | # | Operands |
39447    /// +---+----------+
39448    /// | 1 | Imm      |
39449    /// | 2 | Label    |
39450    /// | 3 | Sym      |
39451    /// +---+----------+
39452    /// ```
39453    #[inline]
39454    pub fn jle<A>(&mut self, op0: A)
39455    where
39456        Assembler<'a>: JleEmitter<A>,
39457    {
39458        <Self as JleEmitter<A>>::jle(self, op0);
39459    }
39460    /// `JMP`.
39461    ///
39462    /// Supported operand variants:
39463    ///
39464    /// ```text
39465    /// +---+----------+
39466    /// | # | Operands |
39467    /// +---+----------+
39468    /// | 1 | Gpq      |
39469    /// | 2 | Imm      |
39470    /// | 3 | Label    |
39471    /// | 4 | Mem      |
39472    /// | 5 | Sym      |
39473    /// +---+----------+
39474    /// ```
39475    #[inline]
39476    pub fn jmp<A>(&mut self, op0: A)
39477    where
39478        Assembler<'a>: JmpEmitter<A>,
39479    {
39480        <Self as JmpEmitter<A>>::jmp(self, op0);
39481    }
39482    /// `JMPF`.
39483    ///
39484    /// Supported operand variants:
39485    ///
39486    /// ```text
39487    /// +---+----------+
39488    /// | # | Operands |
39489    /// +---+----------+
39490    /// | 1 | Mem      |
39491    /// +---+----------+
39492    /// ```
39493    #[inline]
39494    pub fn jmpf<A>(&mut self, op0: A)
39495    where
39496        Assembler<'a>: JmpfEmitter<A>,
39497    {
39498        <Self as JmpfEmitter<A>>::jmpf(self, op0);
39499    }
39500    /// `JNC`.
39501    ///
39502    /// Supported operand variants:
39503    ///
39504    /// ```text
39505    /// +---+----------+
39506    /// | # | Operands |
39507    /// +---+----------+
39508    /// | 1 | Imm      |
39509    /// | 2 | Label    |
39510    /// | 3 | Sym      |
39511    /// +---+----------+
39512    /// ```
39513    #[inline]
39514    pub fn jnc<A>(&mut self, op0: A)
39515    where
39516        Assembler<'a>: JncEmitter<A>,
39517    {
39518        <Self as JncEmitter<A>>::jnc(self, op0);
39519    }
39520    /// `JNO`.
39521    ///
39522    /// Supported operand variants:
39523    ///
39524    /// ```text
39525    /// +---+----------+
39526    /// | # | Operands |
39527    /// +---+----------+
39528    /// | 1 | Imm      |
39529    /// | 2 | Label    |
39530    /// | 3 | Sym      |
39531    /// +---+----------+
39532    /// ```
39533    #[inline]
39534    pub fn jno<A>(&mut self, op0: A)
39535    where
39536        Assembler<'a>: JnoEmitter<A>,
39537    {
39538        <Self as JnoEmitter<A>>::jno(self, op0);
39539    }
39540    /// `JNP`.
39541    ///
39542    /// Supported operand variants:
39543    ///
39544    /// ```text
39545    /// +---+----------+
39546    /// | # | Operands |
39547    /// +---+----------+
39548    /// | 1 | Imm      |
39549    /// | 2 | Label    |
39550    /// | 3 | Sym      |
39551    /// +---+----------+
39552    /// ```
39553    #[inline]
39554    pub fn jnp<A>(&mut self, op0: A)
39555    where
39556        Assembler<'a>: JnpEmitter<A>,
39557    {
39558        <Self as JnpEmitter<A>>::jnp(self, op0);
39559    }
39560    /// `JNS`.
39561    ///
39562    /// Supported operand variants:
39563    ///
39564    /// ```text
39565    /// +---+----------+
39566    /// | # | Operands |
39567    /// +---+----------+
39568    /// | 1 | Imm      |
39569    /// | 2 | Label    |
39570    /// | 3 | Sym      |
39571    /// +---+----------+
39572    /// ```
39573    #[inline]
39574    pub fn jns<A>(&mut self, op0: A)
39575    where
39576        Assembler<'a>: JnsEmitter<A>,
39577    {
39578        <Self as JnsEmitter<A>>::jns(self, op0);
39579    }
39580    /// `JNZ`.
39581    ///
39582    /// Supported operand variants:
39583    ///
39584    /// ```text
39585    /// +---+----------+
39586    /// | # | Operands |
39587    /// +---+----------+
39588    /// | 1 | Imm      |
39589    /// | 2 | Label    |
39590    /// | 3 | Sym      |
39591    /// +---+----------+
39592    /// ```
39593    #[inline]
39594    pub fn jnz<A>(&mut self, op0: A)
39595    where
39596        Assembler<'a>: JnzEmitter<A>,
39597    {
39598        <Self as JnzEmitter<A>>::jnz(self, op0);
39599    }
39600    /// `JO`.
39601    ///
39602    /// Supported operand variants:
39603    ///
39604    /// ```text
39605    /// +---+----------+
39606    /// | # | Operands |
39607    /// +---+----------+
39608    /// | 1 | Imm      |
39609    /// | 2 | Label    |
39610    /// | 3 | Sym      |
39611    /// +---+----------+
39612    /// ```
39613    #[inline]
39614    pub fn jo<A>(&mut self, op0: A)
39615    where
39616        Assembler<'a>: JoEmitter<A>,
39617    {
39618        <Self as JoEmitter<A>>::jo(self, op0);
39619    }
39620    /// `JP`.
39621    ///
39622    /// Supported operand variants:
39623    ///
39624    /// ```text
39625    /// +---+----------+
39626    /// | # | Operands |
39627    /// +---+----------+
39628    /// | 1 | Imm      |
39629    /// | 2 | Label    |
39630    /// | 3 | Sym      |
39631    /// +---+----------+
39632    /// ```
39633    #[inline]
39634    pub fn jp<A>(&mut self, op0: A)
39635    where
39636        Assembler<'a>: JpEmitter<A>,
39637    {
39638        <Self as JpEmitter<A>>::jp(self, op0);
39639    }
39640    /// `JS`.
39641    ///
39642    /// Supported operand variants:
39643    ///
39644    /// ```text
39645    /// +---+----------+
39646    /// | # | Operands |
39647    /// +---+----------+
39648    /// | 1 | Imm      |
39649    /// | 2 | Label    |
39650    /// | 3 | Sym      |
39651    /// +---+----------+
39652    /// ```
39653    #[inline]
39654    pub fn js<A>(&mut self, op0: A)
39655    where
39656        Assembler<'a>: JsEmitter<A>,
39657    {
39658        <Self as JsEmitter<A>>::js(self, op0);
39659    }
39660    /// `JZ`.
39661    ///
39662    /// Supported operand variants:
39663    ///
39664    /// ```text
39665    /// +---+----------+
39666    /// | # | Operands |
39667    /// +---+----------+
39668    /// | 1 | Imm      |
39669    /// | 2 | Label    |
39670    /// | 3 | Sym      |
39671    /// +---+----------+
39672    /// ```
39673    #[inline]
39674    pub fn jz<A>(&mut self, op0: A)
39675    where
39676        Assembler<'a>: JzEmitter<A>,
39677    {
39678        <Self as JzEmitter<A>>::jz(self, op0);
39679    }
39680    /// `JCC`.
39681    ///
39682    /// Supported operand variants:
39683    ///
39684    /// ```text
39685    /// +---+----------+
39686    /// | # | Operands |
39687    /// +---+----------+
39688    /// | 1 | Imm      |
39689    /// | 2 | Label    |
39690    /// | 3 | Sym      |
39691    /// +---+----------+
39692    /// ```
39693    #[inline]
39694    pub fn jcc<A>(&mut self, op0: A)
39695    where
39696        Assembler<'a>: JccEmitter<A>,
39697    {
39698        <Self as JccEmitter<A>>::jcc(self, op0);
39699    }
39700    /// `LAHF`.
39701    ///
39702    /// Supported operand variants:
39703    ///
39704    /// ```text
39705    /// +---+----------+
39706    /// | # | Operands |
39707    /// +---+----------+
39708    /// | 1 | (none)   |
39709    /// +---+----------+
39710    /// ```
39711    #[inline]
39712    pub fn lahf(&mut self)
39713    where
39714        Assembler<'a>: LahfEmitter,
39715    {
39716        <Self as LahfEmitter>::lahf(self);
39717    }
39718    /// `LAR`.
39719    ///
39720    /// Supported operand variants:
39721    ///
39722    /// ```text
39723    /// +---+----------+
39724    /// | # | Operands |
39725    /// +---+----------+
39726    /// | 1 | Gpd, Gpw |
39727    /// | 2 | Gpd, Mem |
39728    /// | 3 | Gpq, Gpw |
39729    /// | 4 | Gpq, Mem |
39730    /// | 5 | Gpw, Gpw |
39731    /// | 6 | Gpw, Mem |
39732    /// +---+----------+
39733    /// ```
39734    #[inline]
39735    pub fn lar<A, B>(&mut self, op0: A, op1: B)
39736    where
39737        Assembler<'a>: LarEmitter<A, B>,
39738    {
39739        <Self as LarEmitter<A, B>>::lar(self, op0, op1);
39740    }
39741    /// `LDTILECFG`.
39742    ///
39743    /// Supported operand variants:
39744    ///
39745    /// ```text
39746    /// +---+----------+
39747    /// | # | Operands |
39748    /// +---+----------+
39749    /// | 1 | Mem      |
39750    /// +---+----------+
39751    /// ```
39752    #[inline]
39753    pub fn ldtilecfg<A>(&mut self, op0: A)
39754    where
39755        Assembler<'a>: LdtilecfgEmitter<A>,
39756    {
39757        <Self as LdtilecfgEmitter<A>>::ldtilecfg(self, op0);
39758    }
39759    /// `LEA`.
39760    ///
39761    /// Supported operand variants:
39762    ///
39763    /// ```text
39764    /// +---+----------+
39765    /// | # | Operands |
39766    /// +---+----------+
39767    /// | 1 | Gpd, Mem |
39768    /// | 2 | Gpq, Mem |
39769    /// | 3 | Gpw, Mem |
39770    /// +---+----------+
39771    /// ```
39772    #[inline]
39773    pub fn lea<A, B>(&mut self, op0: A, op1: B)
39774    where
39775        Assembler<'a>: LeaEmitter<A, B>,
39776    {
39777        <Self as LeaEmitter<A, B>>::lea(self, op0, op1);
39778    }
39779    /// `LEAVE`.
39780    ///
39781    /// Supported operand variants:
39782    ///
39783    /// ```text
39784    /// +---+----------+
39785    /// | # | Operands |
39786    /// +---+----------+
39787    /// | 1 | (none)   |
39788    /// +---+----------+
39789    /// ```
39790    #[inline]
39791    pub fn leave(&mut self)
39792    where
39793        Assembler<'a>: LeaveEmitter,
39794    {
39795        <Self as LeaveEmitter>::leave(self);
39796    }
39797    /// `LFS`.
39798    ///
39799    /// Supported operand variants:
39800    ///
39801    /// ```text
39802    /// +---+----------+
39803    /// | # | Operands |
39804    /// +---+----------+
39805    /// | 1 | Gpd, Mem |
39806    /// | 2 | Gpq, Mem |
39807    /// | 3 | Gpw, Mem |
39808    /// +---+----------+
39809    /// ```
39810    #[inline]
39811    pub fn lfs<A, B>(&mut self, op0: A, op1: B)
39812    where
39813        Assembler<'a>: LfsEmitter<A, B>,
39814    {
39815        <Self as LfsEmitter<A, B>>::lfs(self, op0, op1);
39816    }
39817    /// `LGDT`.
39818    ///
39819    /// Supported operand variants:
39820    ///
39821    /// ```text
39822    /// +---+----------+
39823    /// | # | Operands |
39824    /// +---+----------+
39825    /// | 1 | Mem      |
39826    /// +---+----------+
39827    /// ```
39828    #[inline]
39829    pub fn lgdt<A>(&mut self, op0: A)
39830    where
39831        Assembler<'a>: LgdtEmitter<A>,
39832    {
39833        <Self as LgdtEmitter<A>>::lgdt(self, op0);
39834    }
39835    /// `LGS`.
39836    ///
39837    /// Supported operand variants:
39838    ///
39839    /// ```text
39840    /// +---+----------+
39841    /// | # | Operands |
39842    /// +---+----------+
39843    /// | 1 | Gpd, Mem |
39844    /// | 2 | Gpq, Mem |
39845    /// | 3 | Gpw, Mem |
39846    /// +---+----------+
39847    /// ```
39848    #[inline]
39849    pub fn lgs<A, B>(&mut self, op0: A, op1: B)
39850    where
39851        Assembler<'a>: LgsEmitter<A, B>,
39852    {
39853        <Self as LgsEmitter<A, B>>::lgs(self, op0, op1);
39854    }
39855    /// `LIDT`.
39856    ///
39857    /// Supported operand variants:
39858    ///
39859    /// ```text
39860    /// +---+----------+
39861    /// | # | Operands |
39862    /// +---+----------+
39863    /// | 1 | Mem      |
39864    /// +---+----------+
39865    /// ```
39866    #[inline]
39867    pub fn lidt<A>(&mut self, op0: A)
39868    where
39869        Assembler<'a>: LidtEmitter<A>,
39870    {
39871        <Self as LidtEmitter<A>>::lidt(self, op0);
39872    }
39873    /// `LLDT`.
39874    ///
39875    /// Supported operand variants:
39876    ///
39877    /// ```text
39878    /// +---+----------+
39879    /// | # | Operands |
39880    /// +---+----------+
39881    /// | 1 | Gpd      |
39882    /// | 2 | Mem      |
39883    /// +---+----------+
39884    /// ```
39885    #[inline]
39886    pub fn lldt<A>(&mut self, op0: A)
39887    where
39888        Assembler<'a>: LldtEmitter<A>,
39889    {
39890        <Self as LldtEmitter<A>>::lldt(self, op0);
39891    }
39892    /// `LMSW`.
39893    ///
39894    /// Supported operand variants:
39895    ///
39896    /// ```text
39897    /// +---+----------+
39898    /// | # | Operands |
39899    /// +---+----------+
39900    /// | 1 | Gpd      |
39901    /// | 2 | Mem      |
39902    /// +---+----------+
39903    /// ```
39904    #[inline]
39905    pub fn lmsw<A>(&mut self, op0: A)
39906    where
39907        Assembler<'a>: LmswEmitter<A>,
39908    {
39909        <Self as LmswEmitter<A>>::lmsw(self, op0);
39910    }
39911    /// `LODS`.
39912    ///
39913    /// Supported operand variants:
39914    ///
39915    /// ```text
39916    /// +---+----------+
39917    /// | # | Operands |
39918    /// +---+----------+
39919    /// | 1 | (none)   |
39920    /// +---+----------+
39921    /// ```
39922    #[inline]
39923    pub fn lods(&mut self)
39924    where
39925        Assembler<'a>: LodsEmitter,
39926    {
39927        <Self as LodsEmitter>::lods(self);
39928    }
39929    /// `LOOP`.
39930    ///
39931    /// Supported operand variants:
39932    ///
39933    /// ```text
39934    /// +---+----------+
39935    /// | # | Operands |
39936    /// +---+----------+
39937    /// | 1 | Imm      |
39938    /// | 2 | Label    |
39939    /// | 3 | Sym      |
39940    /// +---+----------+
39941    /// ```
39942    #[inline]
39943    pub fn r#loop<A>(&mut self, op0: A)
39944    where
39945        Assembler<'a>: LoopEmitter<A>,
39946    {
39947        <Self as LoopEmitter<A>>::r#loop(self, op0);
39948    }
39949    /// `LOOPNZ`.
39950    ///
39951    /// Supported operand variants:
39952    ///
39953    /// ```text
39954    /// +---+----------+
39955    /// | # | Operands |
39956    /// +---+----------+
39957    /// | 1 | Imm      |
39958    /// | 2 | Label    |
39959    /// | 3 | Sym      |
39960    /// +---+----------+
39961    /// ```
39962    #[inline]
39963    pub fn loopnz<A>(&mut self, op0: A)
39964    where
39965        Assembler<'a>: LoopnzEmitter<A>,
39966    {
39967        <Self as LoopnzEmitter<A>>::loopnz(self, op0);
39968    }
39969    /// `LOOPZ`.
39970    ///
39971    /// Supported operand variants:
39972    ///
39973    /// ```text
39974    /// +---+----------+
39975    /// | # | Operands |
39976    /// +---+----------+
39977    /// | 1 | Imm      |
39978    /// | 2 | Label    |
39979    /// | 3 | Sym      |
39980    /// +---+----------+
39981    /// ```
39982    #[inline]
39983    pub fn loopz<A>(&mut self, op0: A)
39984    where
39985        Assembler<'a>: LoopzEmitter<A>,
39986    {
39987        <Self as LoopzEmitter<A>>::loopz(self, op0);
39988    }
39989    /// `LSL`.
39990    ///
39991    /// Supported operand variants:
39992    ///
39993    /// ```text
39994    /// +---+----------+
39995    /// | # | Operands |
39996    /// +---+----------+
39997    /// | 1 | Gpd, Gpw |
39998    /// | 2 | Gpd, Mem |
39999    /// | 3 | Gpq, Gpw |
40000    /// | 4 | Gpq, Mem |
40001    /// | 5 | Gpw, Gpw |
40002    /// | 6 | Gpw, Mem |
40003    /// +---+----------+
40004    /// ```
40005    #[inline]
40006    pub fn lsl<A, B>(&mut self, op0: A, op1: B)
40007    where
40008        Assembler<'a>: LslEmitter<A, B>,
40009    {
40010        <Self as LslEmitter<A, B>>::lsl(self, op0, op1);
40011    }
40012    /// `LSS`.
40013    ///
40014    /// Supported operand variants:
40015    ///
40016    /// ```text
40017    /// +---+----------+
40018    /// | # | Operands |
40019    /// +---+----------+
40020    /// | 1 | Gpd, Mem |
40021    /// | 2 | Gpq, Mem |
40022    /// | 3 | Gpw, Mem |
40023    /// +---+----------+
40024    /// ```
40025    #[inline]
40026    pub fn lss<A, B>(&mut self, op0: A, op1: B)
40027    where
40028        Assembler<'a>: LssEmitter<A, B>,
40029    {
40030        <Self as LssEmitter<A, B>>::lss(self, op0, op1);
40031    }
40032    /// `LTR`.
40033    ///
40034    /// Supported operand variants:
40035    ///
40036    /// ```text
40037    /// +---+----------+
40038    /// | # | Operands |
40039    /// +---+----------+
40040    /// | 1 | Gpd      |
40041    /// | 2 | Mem      |
40042    /// +---+----------+
40043    /// ```
40044    #[inline]
40045    pub fn ltr<A>(&mut self, op0: A)
40046    where
40047        Assembler<'a>: LtrEmitter<A>,
40048    {
40049        <Self as LtrEmitter<A>>::ltr(self, op0);
40050    }
40051    /// `MOV`.
40052    ///
40053    /// Supported operand variants:
40054    ///
40055    /// ```text
40056    /// +----+------------------------+
40057    /// | #  | Operands               |
40058    /// +----+------------------------+
40059    /// | 1  | AbsoluteAddress, GpbLo |
40060    /// | 2  | AbsoluteAddress, Gpd   |
40061    /// | 3  | AbsoluteAddress, Gpq   |
40062    /// | 4  | AbsoluteAddress, Gpw   |
40063    /// | 5  | GpbLo, AbsoluteAddress |
40064    /// | 6  | GpbLo, GpbLo           |
40065    /// | 7  | GpbLo, Imm             |
40066    /// | 8  | GpbLo, Mem             |
40067    /// | 9  | Gpd, AbsoluteAddress   |
40068    /// | 10 | Gpd, Gpd               |
40069    /// | 11 | Gpd, Imm               |
40070    /// | 12 | Gpd, Mem               |
40071    /// | 13 | Gpq, AbsoluteAddress   |
40072    /// | 14 | Gpq, Gpq               |
40073    /// | 15 | Gpq, Imm               |
40074    /// | 16 | Gpq, Mem               |
40075    /// | 17 | Gpw, AbsoluteAddress   |
40076    /// | 18 | Gpw, Gpw               |
40077    /// | 19 | Gpw, Imm               |
40078    /// | 20 | Gpw, Mem               |
40079    /// | 21 | Mem, GpbLo             |
40080    /// | 22 | Mem, Gpd               |
40081    /// | 23 | Mem, Gpq               |
40082    /// | 24 | Mem, Gpw               |
40083    /// | 25 | Mem, Imm               |
40084    /// +----+------------------------+
40085    /// ```
40086    #[inline]
40087    pub fn mov<A, B>(&mut self, op0: A, op1: B)
40088    where
40089        Assembler<'a>: MovEmitter<A, B>,
40090    {
40091        <Self as MovEmitter<A, B>>::mov(self, op0, op1);
40092    }
40093    /// `MOVS`.
40094    ///
40095    /// Supported operand variants:
40096    ///
40097    /// ```text
40098    /// +---+----------+
40099    /// | # | Operands |
40100    /// +---+----------+
40101    /// | 1 | (none)   |
40102    /// +---+----------+
40103    /// ```
40104    #[inline]
40105    pub fn movs(&mut self)
40106    where
40107        Assembler<'a>: MovsEmitter,
40108    {
40109        <Self as MovsEmitter>::movs(self);
40110    }
40111    /// `MOVSX`.
40112    ///
40113    /// Supported operand variants:
40114    ///
40115    /// ```text
40116    /// +----+------------+
40117    /// | #  | Operands   |
40118    /// +----+------------+
40119    /// | 1  | Gpd, GpbLo |
40120    /// | 2  | Gpd, Gpd   |
40121    /// | 3  | Gpd, Gpw   |
40122    /// | 4  | Gpd, Mem   |
40123    /// | 5  | Gpq, GpbLo |
40124    /// | 6  | Gpq, Gpd   |
40125    /// | 7  | Gpq, Gpw   |
40126    /// | 8  | Gpq, Mem   |
40127    /// | 9  | Gpw, GpbLo |
40128    /// | 10 | Gpw, Gpd   |
40129    /// | 11 | Gpw, Gpw   |
40130    /// | 12 | Gpw, Mem   |
40131    /// +----+------------+
40132    /// ```
40133    #[inline]
40134    pub fn movsx<A, B>(&mut self, op0: A, op1: B)
40135    where
40136        Assembler<'a>: MovsxEmitter<A, B>,
40137    {
40138        <Self as MovsxEmitter<A, B>>::movsx(self, op0, op1);
40139    }
40140    /// `MOVZX`.
40141    ///
40142    /// Supported operand variants:
40143    ///
40144    /// ```text
40145    /// +---+------------+
40146    /// | # | Operands   |
40147    /// +---+------------+
40148    /// | 1 | Gpd, GpbLo |
40149    /// | 2 | Gpd, Gpw   |
40150    /// | 3 | Gpd, Mem   |
40151    /// | 4 | Gpq, GpbLo |
40152    /// | 5 | Gpq, Gpw   |
40153    /// | 6 | Gpq, Mem   |
40154    /// | 7 | Gpw, GpbLo |
40155    /// | 8 | Gpw, Gpw   |
40156    /// | 9 | Gpw, Mem   |
40157    /// +---+------------+
40158    /// ```
40159    #[inline]
40160    pub fn movzx<A, B>(&mut self, op0: A, op1: B)
40161    where
40162        Assembler<'a>: MovzxEmitter<A, B>,
40163    {
40164        <Self as MovzxEmitter<A, B>>::movzx(self, op0, op1);
40165    }
40166    /// `MOV_CR2G`.
40167    ///
40168    /// Supported operand variants:
40169    ///
40170    /// ```text
40171    /// +---+-----------+
40172    /// | # | Operands  |
40173    /// +---+-----------+
40174    /// | 1 | Gpq, CReg |
40175    /// +---+-----------+
40176    /// ```
40177    #[inline]
40178    pub fn mov_cr2g<A, B>(&mut self, op0: A, op1: B)
40179    where
40180        Assembler<'a>: MovCr2gEmitter<A, B>,
40181    {
40182        <Self as MovCr2gEmitter<A, B>>::mov_cr2g(self, op0, op1);
40183    }
40184    /// `MOV_DR2G`.
40185    ///
40186    /// Supported operand variants:
40187    ///
40188    /// ```text
40189    /// +---+-----------+
40190    /// | # | Operands  |
40191    /// +---+-----------+
40192    /// | 1 | Gpq, DReg |
40193    /// +---+-----------+
40194    /// ```
40195    #[inline]
40196    pub fn mov_dr2g<A, B>(&mut self, op0: A, op1: B)
40197    where
40198        Assembler<'a>: MovDr2gEmitter<A, B>,
40199    {
40200        <Self as MovDr2gEmitter<A, B>>::mov_dr2g(self, op0, op1);
40201    }
40202    /// `MOV_G2CR`.
40203    ///
40204    /// Supported operand variants:
40205    ///
40206    /// ```text
40207    /// +---+-----------+
40208    /// | # | Operands  |
40209    /// +---+-----------+
40210    /// | 1 | CReg, Gpq |
40211    /// +---+-----------+
40212    /// ```
40213    #[inline]
40214    pub fn mov_g2cr<A, B>(&mut self, op0: A, op1: B)
40215    where
40216        Assembler<'a>: MovG2crEmitter<A, B>,
40217    {
40218        <Self as MovG2crEmitter<A, B>>::mov_g2cr(self, op0, op1);
40219    }
40220    /// `MOV_G2DR`.
40221    ///
40222    /// Supported operand variants:
40223    ///
40224    /// ```text
40225    /// +---+-----------+
40226    /// | # | Operands  |
40227    /// +---+-----------+
40228    /// | 1 | DReg, Gpq |
40229    /// +---+-----------+
40230    /// ```
40231    #[inline]
40232    pub fn mov_g2dr<A, B>(&mut self, op0: A, op1: B)
40233    where
40234        Assembler<'a>: MovG2drEmitter<A, B>,
40235    {
40236        <Self as MovG2drEmitter<A, B>>::mov_g2dr(self, op0, op1);
40237    }
40238    /// `MOV_G2S`.
40239    ///
40240    /// Supported operand variants:
40241    ///
40242    /// ```text
40243    /// +---+-----------+
40244    /// | # | Operands  |
40245    /// +---+-----------+
40246    /// | 1 | SReg, Gpd |
40247    /// | 2 | SReg, Mem |
40248    /// +---+-----------+
40249    /// ```
40250    #[inline]
40251    pub fn mov_g2s<A, B>(&mut self, op0: A, op1: B)
40252    where
40253        Assembler<'a>: MovG2sEmitter<A, B>,
40254    {
40255        <Self as MovG2sEmitter<A, B>>::mov_g2s(self, op0, op1);
40256    }
40257    /// `MOV_S2G`.
40258    ///
40259    /// Supported operand variants:
40260    ///
40261    /// ```text
40262    /// +---+-----------+
40263    /// | # | Operands  |
40264    /// +---+-----------+
40265    /// | 1 | Gpd, SReg |
40266    /// | 2 | Mem, SReg |
40267    /// +---+-----------+
40268    /// ```
40269    #[inline]
40270    pub fn mov_s2g<A, B>(&mut self, op0: A, op1: B)
40271    where
40272        Assembler<'a>: MovS2gEmitter<A, B>,
40273    {
40274        <Self as MovS2gEmitter<A, B>>::mov_s2g(self, op0, op1);
40275    }
40276    /// `MUL`.
40277    ///
40278    /// Supported operand variants:
40279    ///
40280    /// ```text
40281    /// +---+----------+
40282    /// | # | Operands |
40283    /// +---+----------+
40284    /// | 1 | GpbLo    |
40285    /// | 2 | Gpd      |
40286    /// | 3 | Gpq      |
40287    /// | 4 | Gpw      |
40288    /// | 5 | Mem      |
40289    /// +---+----------+
40290    /// ```
40291    #[inline]
40292    pub fn mul<A>(&mut self, op0: A)
40293    where
40294        Assembler<'a>: MulEmitter<A>,
40295    {
40296        <Self as MulEmitter<A>>::mul(self, op0);
40297    }
40298    /// `NEG`.
40299    ///
40300    /// Supported operand variants:
40301    ///
40302    /// ```text
40303    /// +---+----------+
40304    /// | # | Operands |
40305    /// +---+----------+
40306    /// | 1 | GpbLo    |
40307    /// | 2 | Gpd      |
40308    /// | 3 | Gpq      |
40309    /// | 4 | Gpw      |
40310    /// | 5 | Mem      |
40311    /// +---+----------+
40312    /// ```
40313    #[inline]
40314    pub fn neg<A>(&mut self, op0: A)
40315    where
40316        Assembler<'a>: NegEmitter<A>,
40317    {
40318        <Self as NegEmitter<A>>::neg(self, op0);
40319    }
40320    /// `NOP`.
40321    ///
40322    /// Supported operand variants:
40323    ///
40324    /// ```text
40325    /// +---+----------+
40326    /// | # | Operands |
40327    /// +---+----------+
40328    /// | 1 | (none)   |
40329    /// +---+----------+
40330    /// ```
40331    #[inline]
40332    pub fn nop(&mut self)
40333    where
40334        Assembler<'a>: NopEmitter,
40335    {
40336        <Self as NopEmitter>::nop(self);
40337    }
40338    /// `NOP`.
40339    ///
40340    /// Supported operand variants:
40341    ///
40342    /// ```text
40343    /// +---+----------+
40344    /// | # | Operands |
40345    /// +---+----------+
40346    /// | 1 | Gpd      |
40347    /// | 2 | Gpq      |
40348    /// | 3 | Gpw      |
40349    /// | 4 | Mem      |
40350    /// +---+----------+
40351    /// ```
40352    #[inline]
40353    pub fn nop_1<A>(&mut self, op0: A)
40354    where
40355        Assembler<'a>: NopEmitter_1<A>,
40356    {
40357        <Self as NopEmitter_1<A>>::nop_1(self, op0);
40358    }
40359    /// `NOT`.
40360    ///
40361    /// Supported operand variants:
40362    ///
40363    /// ```text
40364    /// +---+----------+
40365    /// | # | Operands |
40366    /// +---+----------+
40367    /// | 1 | GpbLo    |
40368    /// | 2 | Gpd      |
40369    /// | 3 | Gpq      |
40370    /// | 4 | Gpw      |
40371    /// | 5 | Mem      |
40372    /// +---+----------+
40373    /// ```
40374    #[inline]
40375    pub fn not<A>(&mut self, op0: A)
40376    where
40377        Assembler<'a>: NotEmitter<A>,
40378    {
40379        <Self as NotEmitter<A>>::not(self, op0);
40380    }
40381    /// `OR`.
40382    ///
40383    /// Supported operand variants:
40384    ///
40385    /// ```text
40386    /// +----+--------------+
40387    /// | #  | Operands     |
40388    /// +----+--------------+
40389    /// | 1  | GpbLo, GpbLo |
40390    /// | 2  | GpbLo, Imm   |
40391    /// | 3  | GpbLo, Mem   |
40392    /// | 4  | Gpd, Gpd     |
40393    /// | 5  | Gpd, Imm     |
40394    /// | 6  | Gpd, Mem     |
40395    /// | 7  | Gpq, Gpq     |
40396    /// | 8  | Gpq, Imm     |
40397    /// | 9  | Gpq, Mem     |
40398    /// | 10 | Gpw, Gpw     |
40399    /// | 11 | Gpw, Imm     |
40400    /// | 12 | Gpw, Mem     |
40401    /// | 13 | Mem, GpbLo   |
40402    /// | 14 | Mem, Gpd     |
40403    /// | 15 | Mem, Gpq     |
40404    /// | 16 | Mem, Gpw     |
40405    /// | 17 | Mem, Imm     |
40406    /// +----+--------------+
40407    /// ```
40408    #[inline]
40409    pub fn or<A, B>(&mut self, op0: A, op1: B)
40410    where
40411        Assembler<'a>: OrEmitter<A, B>,
40412    {
40413        <Self as OrEmitter<A, B>>::or(self, op0, op1);
40414    }
40415    /// `OUT`.
40416    ///
40417    /// Supported operand variants:
40418    ///
40419    /// ```text
40420    /// +---+----------+
40421    /// | # | Operands |
40422    /// +---+----------+
40423    /// | 1 | (none)   |
40424    /// +---+----------+
40425    /// ```
40426    #[inline]
40427    pub fn r#out(&mut self)
40428    where
40429        Assembler<'a>: OutEmitter,
40430    {
40431        <Self as OutEmitter>::r#out(self);
40432    }
40433    /// `OUT`.
40434    ///
40435    /// Supported operand variants:
40436    ///
40437    /// ```text
40438    /// +---+------------+
40439    /// | # | Operands   |
40440    /// +---+------------+
40441    /// | 1 | GpbLo, Imm |
40442    /// | 2 | Gpd, Imm   |
40443    /// | 3 | Gpq, Imm   |
40444    /// | 4 | Gpw, Imm   |
40445    /// +---+------------+
40446    /// ```
40447    #[inline]
40448    pub fn r#out_2<A, B>(&mut self, op0: A, op1: B)
40449    where
40450        Assembler<'a>: OutEmitter_2<A, B>,
40451    {
40452        <Self as OutEmitter_2<A, B>>::r#out_2(self, op0, op1);
40453    }
40454    /// `OUTS`.
40455    ///
40456    /// Supported operand variants:
40457    ///
40458    /// ```text
40459    /// +---+----------+
40460    /// | # | Operands |
40461    /// +---+----------+
40462    /// | 1 | (none)   |
40463    /// +---+----------+
40464    /// ```
40465    #[inline]
40466    pub fn outs(&mut self)
40467    where
40468        Assembler<'a>: OutsEmitter,
40469    {
40470        <Self as OutsEmitter>::outs(self);
40471    }
40472    /// `PAUSE`.
40473    ///
40474    /// Supported operand variants:
40475    ///
40476    /// ```text
40477    /// +---+----------+
40478    /// | # | Operands |
40479    /// +---+----------+
40480    /// | 1 | (none)   |
40481    /// +---+----------+
40482    /// ```
40483    #[inline]
40484    pub fn pause(&mut self)
40485    where
40486        Assembler<'a>: PauseEmitter,
40487    {
40488        <Self as PauseEmitter>::pause(self);
40489    }
40490    /// `POP`.
40491    ///
40492    /// Supported operand variants:
40493    ///
40494    /// ```text
40495    /// +---+----------+
40496    /// | # | Operands |
40497    /// +---+----------+
40498    /// | 1 | Gpq      |
40499    /// | 2 | Gpw      |
40500    /// | 3 | Mem      |
40501    /// +---+----------+
40502    /// ```
40503    #[inline]
40504    pub fn pop<A>(&mut self, op0: A)
40505    where
40506        Assembler<'a>: PopEmitter<A>,
40507    {
40508        <Self as PopEmitter<A>>::pop(self, op0);
40509    }
40510    /// `POPF`.
40511    ///
40512    /// Supported operand variants:
40513    ///
40514    /// ```text
40515    /// +---+----------+
40516    /// | # | Operands |
40517    /// +---+----------+
40518    /// | 1 | (none)   |
40519    /// +---+----------+
40520    /// ```
40521    #[inline]
40522    pub fn popf(&mut self)
40523    where
40524        Assembler<'a>: PopfEmitter,
40525    {
40526        <Self as PopfEmitter>::popf(self);
40527    }
40528    /// `POP_SEG`.
40529    ///
40530    /// Supported operand variants:
40531    ///
40532    /// ```text
40533    /// +---+----------+
40534    /// | # | Operands |
40535    /// +---+----------+
40536    /// | 1 | SReg     |
40537    /// +---+----------+
40538    /// ```
40539    #[inline]
40540    pub fn pop_seg<A>(&mut self, op0: A)
40541    where
40542        Assembler<'a>: PopSegEmitter<A>,
40543    {
40544        <Self as PopSegEmitter<A>>::pop_seg(self, op0);
40545    }
40546    /// `PUSH`.
40547    ///
40548    /// Supported operand variants:
40549    ///
40550    /// ```text
40551    /// +---+----------+
40552    /// | # | Operands |
40553    /// +---+----------+
40554    /// | 1 | Gpq      |
40555    /// | 2 | Gpw      |
40556    /// | 3 | Imm      |
40557    /// | 4 | Mem      |
40558    /// +---+----------+
40559    /// ```
40560    #[inline]
40561    pub fn push<A>(&mut self, op0: A)
40562    where
40563        Assembler<'a>: PushEmitter<A>,
40564    {
40565        <Self as PushEmitter<A>>::push(self, op0);
40566    }
40567    /// `PUSHF`.
40568    ///
40569    /// Supported operand variants:
40570    ///
40571    /// ```text
40572    /// +---+----------+
40573    /// | # | Operands |
40574    /// +---+----------+
40575    /// | 1 | (none)   |
40576    /// +---+----------+
40577    /// ```
40578    #[inline]
40579    pub fn pushf(&mut self)
40580    where
40581        Assembler<'a>: PushfEmitter,
40582    {
40583        <Self as PushfEmitter>::pushf(self);
40584    }
40585    /// `PUSH_SEG`.
40586    ///
40587    /// Supported operand variants:
40588    ///
40589    /// ```text
40590    /// +---+----------+
40591    /// | # | Operands |
40592    /// +---+----------+
40593    /// | 1 | SReg     |
40594    /// +---+----------+
40595    /// ```
40596    #[inline]
40597    pub fn push_seg<A>(&mut self, op0: A)
40598    where
40599        Assembler<'a>: PushSegEmitter<A>,
40600    {
40601        <Self as PushSegEmitter<A>>::push_seg(self, op0);
40602    }
40603    /// `RCL`.
40604    ///
40605    /// Supported operand variants:
40606    ///
40607    /// ```text
40608    /// +----+--------------+
40609    /// | #  | Operands     |
40610    /// +----+--------------+
40611    /// | 1  | GpbLo, GpbLo |
40612    /// | 2  | GpbLo, Imm   |
40613    /// | 3  | Gpd, GpbLo   |
40614    /// | 4  | Gpd, Imm     |
40615    /// | 5  | Gpq, GpbLo   |
40616    /// | 6  | Gpq, Imm     |
40617    /// | 7  | Gpw, GpbLo   |
40618    /// | 8  | Gpw, Imm     |
40619    /// | 9  | Mem, GpbLo   |
40620    /// | 10 | Mem, Imm     |
40621    /// +----+--------------+
40622    /// ```
40623    #[inline]
40624    pub fn rcl<A, B>(&mut self, op0: A, op1: B)
40625    where
40626        Assembler<'a>: RclEmitter<A, B>,
40627    {
40628        <Self as RclEmitter<A, B>>::rcl(self, op0, op1);
40629    }
40630    /// `RCR`.
40631    ///
40632    /// Supported operand variants:
40633    ///
40634    /// ```text
40635    /// +----+--------------+
40636    /// | #  | Operands     |
40637    /// +----+--------------+
40638    /// | 1  | GpbLo, GpbLo |
40639    /// | 2  | GpbLo, Imm   |
40640    /// | 3  | Gpd, GpbLo   |
40641    /// | 4  | Gpd, Imm     |
40642    /// | 5  | Gpq, GpbLo   |
40643    /// | 6  | Gpq, Imm     |
40644    /// | 7  | Gpw, GpbLo   |
40645    /// | 8  | Gpw, Imm     |
40646    /// | 9  | Mem, GpbLo   |
40647    /// | 10 | Mem, Imm     |
40648    /// +----+--------------+
40649    /// ```
40650    #[inline]
40651    pub fn rcr<A, B>(&mut self, op0: A, op1: B)
40652    where
40653        Assembler<'a>: RcrEmitter<A, B>,
40654    {
40655        <Self as RcrEmitter<A, B>>::rcr(self, op0, op1);
40656    }
40657    /// `RET`.
40658    ///
40659    /// Supported operand variants:
40660    ///
40661    /// ```text
40662    /// +---+----------+
40663    /// | # | Operands |
40664    /// +---+----------+
40665    /// | 1 | (none)   |
40666    /// +---+----------+
40667    /// ```
40668    #[inline]
40669    pub fn ret(&mut self)
40670    where
40671        Assembler<'a>: RetEmitter,
40672    {
40673        <Self as RetEmitter>::ret(self);
40674    }
40675    /// `RET`.
40676    ///
40677    /// Supported operand variants:
40678    ///
40679    /// ```text
40680    /// +---+----------+
40681    /// | # | Operands |
40682    /// +---+----------+
40683    /// | 1 | Imm      |
40684    /// +---+----------+
40685    /// ```
40686    #[inline]
40687    pub fn ret_1<A>(&mut self, op0: A)
40688    where
40689        Assembler<'a>: RetEmitter_1<A>,
40690    {
40691        <Self as RetEmitter_1<A>>::ret_1(self, op0);
40692    }
40693    /// `RETF`.
40694    ///
40695    /// Supported operand variants:
40696    ///
40697    /// ```text
40698    /// +---+----------+
40699    /// | # | Operands |
40700    /// +---+----------+
40701    /// | 1 | (none)   |
40702    /// +---+----------+
40703    /// ```
40704    #[inline]
40705    pub fn retf(&mut self)
40706    where
40707        Assembler<'a>: RetfEmitter,
40708    {
40709        <Self as RetfEmitter>::retf(self);
40710    }
40711    /// `RETF`.
40712    ///
40713    /// Supported operand variants:
40714    ///
40715    /// ```text
40716    /// +---+----------+
40717    /// | # | Operands |
40718    /// +---+----------+
40719    /// | 1 | Imm      |
40720    /// +---+----------+
40721    /// ```
40722    #[inline]
40723    pub fn retf_1<A>(&mut self, op0: A)
40724    where
40725        Assembler<'a>: RetfEmitter_1<A>,
40726    {
40727        <Self as RetfEmitter_1<A>>::retf_1(self, op0);
40728    }
40729    /// `ROL`.
40730    ///
40731    /// Supported operand variants:
40732    ///
40733    /// ```text
40734    /// +----+--------------+
40735    /// | #  | Operands     |
40736    /// +----+--------------+
40737    /// | 1  | GpbLo, GpbLo |
40738    /// | 2  | GpbLo, Imm   |
40739    /// | 3  | Gpd, GpbLo   |
40740    /// | 4  | Gpd, Imm     |
40741    /// | 5  | Gpq, GpbLo   |
40742    /// | 6  | Gpq, Imm     |
40743    /// | 7  | Gpw, GpbLo   |
40744    /// | 8  | Gpw, Imm     |
40745    /// | 9  | Mem, GpbLo   |
40746    /// | 10 | Mem, Imm     |
40747    /// +----+--------------+
40748    /// ```
40749    #[inline]
40750    pub fn rol<A, B>(&mut self, op0: A, op1: B)
40751    where
40752        Assembler<'a>: RolEmitter<A, B>,
40753    {
40754        <Self as RolEmitter<A, B>>::rol(self, op0, op1);
40755    }
40756    /// `ROR`.
40757    ///
40758    /// Supported operand variants:
40759    ///
40760    /// ```text
40761    /// +----+--------------+
40762    /// | #  | Operands     |
40763    /// +----+--------------+
40764    /// | 1  | GpbLo, GpbLo |
40765    /// | 2  | GpbLo, Imm   |
40766    /// | 3  | Gpd, GpbLo   |
40767    /// | 4  | Gpd, Imm     |
40768    /// | 5  | Gpq, GpbLo   |
40769    /// | 6  | Gpq, Imm     |
40770    /// | 7  | Gpw, GpbLo   |
40771    /// | 8  | Gpw, Imm     |
40772    /// | 9  | Mem, GpbLo   |
40773    /// | 10 | Mem, Imm     |
40774    /// +----+--------------+
40775    /// ```
40776    #[inline]
40777    pub fn ror<A, B>(&mut self, op0: A, op1: B)
40778    where
40779        Assembler<'a>: RorEmitter<A, B>,
40780    {
40781        <Self as RorEmitter<A, B>>::ror(self, op0, op1);
40782    }
40783    /// `SAHF`.
40784    ///
40785    /// Supported operand variants:
40786    ///
40787    /// ```text
40788    /// +---+----------+
40789    /// | # | Operands |
40790    /// +---+----------+
40791    /// | 1 | (none)   |
40792    /// +---+----------+
40793    /// ```
40794    #[inline]
40795    pub fn sahf(&mut self)
40796    where
40797        Assembler<'a>: SahfEmitter,
40798    {
40799        <Self as SahfEmitter>::sahf(self);
40800    }
40801    /// `SAR`.
40802    ///
40803    /// Supported operand variants:
40804    ///
40805    /// ```text
40806    /// +----+--------------+
40807    /// | #  | Operands     |
40808    /// +----+--------------+
40809    /// | 1  | GpbLo, GpbLo |
40810    /// | 2  | GpbLo, Imm   |
40811    /// | 3  | Gpd, GpbLo   |
40812    /// | 4  | Gpd, Imm     |
40813    /// | 5  | Gpq, GpbLo   |
40814    /// | 6  | Gpq, Imm     |
40815    /// | 7  | Gpw, GpbLo   |
40816    /// | 8  | Gpw, Imm     |
40817    /// | 9  | Mem, GpbLo   |
40818    /// | 10 | Mem, Imm     |
40819    /// +----+--------------+
40820    /// ```
40821    #[inline]
40822    pub fn sar<A, B>(&mut self, op0: A, op1: B)
40823    where
40824        Assembler<'a>: SarEmitter<A, B>,
40825    {
40826        <Self as SarEmitter<A, B>>::sar(self, op0, op1);
40827    }
40828    /// `SBB`.
40829    ///
40830    /// Supported operand variants:
40831    ///
40832    /// ```text
40833    /// +----+--------------+
40834    /// | #  | Operands     |
40835    /// +----+--------------+
40836    /// | 1  | GpbLo, GpbLo |
40837    /// | 2  | GpbLo, Imm   |
40838    /// | 3  | GpbLo, Mem   |
40839    /// | 4  | Gpd, Gpd     |
40840    /// | 5  | Gpd, Imm     |
40841    /// | 6  | Gpd, Mem     |
40842    /// | 7  | Gpq, Gpq     |
40843    /// | 8  | Gpq, Imm     |
40844    /// | 9  | Gpq, Mem     |
40845    /// | 10 | Gpw, Gpw     |
40846    /// | 11 | Gpw, Imm     |
40847    /// | 12 | Gpw, Mem     |
40848    /// | 13 | Mem, GpbLo   |
40849    /// | 14 | Mem, Gpd     |
40850    /// | 15 | Mem, Gpq     |
40851    /// | 16 | Mem, Gpw     |
40852    /// | 17 | Mem, Imm     |
40853    /// +----+--------------+
40854    /// ```
40855    #[inline]
40856    pub fn sbb<A, B>(&mut self, op0: A, op1: B)
40857    where
40858        Assembler<'a>: SbbEmitter<A, B>,
40859    {
40860        <Self as SbbEmitter<A, B>>::sbb(self, op0, op1);
40861    }
40862    /// `SCAS`.
40863    ///
40864    /// Supported operand variants:
40865    ///
40866    /// ```text
40867    /// +---+----------+
40868    /// | # | Operands |
40869    /// +---+----------+
40870    /// | 1 | (none)   |
40871    /// +---+----------+
40872    /// ```
40873    #[inline]
40874    pub fn scas(&mut self)
40875    where
40876        Assembler<'a>: ScasEmitter,
40877    {
40878        <Self as ScasEmitter>::scas(self);
40879    }
40880    /// `SETA`.
40881    ///
40882    /// Supported operand variants:
40883    ///
40884    /// ```text
40885    /// +---+----------+
40886    /// | # | Operands |
40887    /// +---+----------+
40888    /// | 1 | GpbLo    |
40889    /// | 2 | Mem      |
40890    /// +---+----------+
40891    /// ```
40892    #[inline]
40893    pub fn seta<A>(&mut self, op0: A)
40894    where
40895        Assembler<'a>: SetaEmitter<A>,
40896    {
40897        <Self as SetaEmitter<A>>::seta(self, op0);
40898    }
40899    /// `SETBE`.
40900    ///
40901    /// Supported operand variants:
40902    ///
40903    /// ```text
40904    /// +---+----------+
40905    /// | # | Operands |
40906    /// +---+----------+
40907    /// | 1 | GpbLo    |
40908    /// | 2 | Mem      |
40909    /// +---+----------+
40910    /// ```
40911    #[inline]
40912    pub fn setbe<A>(&mut self, op0: A)
40913    where
40914        Assembler<'a>: SetbeEmitter<A>,
40915    {
40916        <Self as SetbeEmitter<A>>::setbe(self, op0);
40917    }
40918    /// `SETC`.
40919    ///
40920    /// Supported operand variants:
40921    ///
40922    /// ```text
40923    /// +---+----------+
40924    /// | # | Operands |
40925    /// +---+----------+
40926    /// | 1 | GpbLo    |
40927    /// | 2 | Mem      |
40928    /// +---+----------+
40929    /// ```
40930    #[inline]
40931    pub fn setc<A>(&mut self, op0: A)
40932    where
40933        Assembler<'a>: SetcEmitter<A>,
40934    {
40935        <Self as SetcEmitter<A>>::setc(self, op0);
40936    }
40937    /// `SETG`.
40938    ///
40939    /// Supported operand variants:
40940    ///
40941    /// ```text
40942    /// +---+----------+
40943    /// | # | Operands |
40944    /// +---+----------+
40945    /// | 1 | GpbLo    |
40946    /// | 2 | Mem      |
40947    /// +---+----------+
40948    /// ```
40949    #[inline]
40950    pub fn setg<A>(&mut self, op0: A)
40951    where
40952        Assembler<'a>: SetgEmitter<A>,
40953    {
40954        <Self as SetgEmitter<A>>::setg(self, op0);
40955    }
40956    /// `SETGE`.
40957    ///
40958    /// Supported operand variants:
40959    ///
40960    /// ```text
40961    /// +---+----------+
40962    /// | # | Operands |
40963    /// +---+----------+
40964    /// | 1 | GpbLo    |
40965    /// | 2 | Mem      |
40966    /// +---+----------+
40967    /// ```
40968    #[inline]
40969    pub fn setge<A>(&mut self, op0: A)
40970    where
40971        Assembler<'a>: SetgeEmitter<A>,
40972    {
40973        <Self as SetgeEmitter<A>>::setge(self, op0);
40974    }
40975    /// `SETL`.
40976    ///
40977    /// Supported operand variants:
40978    ///
40979    /// ```text
40980    /// +---+----------+
40981    /// | # | Operands |
40982    /// +---+----------+
40983    /// | 1 | GpbLo    |
40984    /// | 2 | Mem      |
40985    /// +---+----------+
40986    /// ```
40987    #[inline]
40988    pub fn setl<A>(&mut self, op0: A)
40989    where
40990        Assembler<'a>: SetlEmitter<A>,
40991    {
40992        <Self as SetlEmitter<A>>::setl(self, op0);
40993    }
40994    /// `SETLE`.
40995    ///
40996    /// Supported operand variants:
40997    ///
40998    /// ```text
40999    /// +---+----------+
41000    /// | # | Operands |
41001    /// +---+----------+
41002    /// | 1 | GpbLo    |
41003    /// | 2 | Mem      |
41004    /// +---+----------+
41005    /// ```
41006    #[inline]
41007    pub fn setle<A>(&mut self, op0: A)
41008    where
41009        Assembler<'a>: SetleEmitter<A>,
41010    {
41011        <Self as SetleEmitter<A>>::setle(self, op0);
41012    }
41013    /// `SETNC`.
41014    ///
41015    /// Supported operand variants:
41016    ///
41017    /// ```text
41018    /// +---+----------+
41019    /// | # | Operands |
41020    /// +---+----------+
41021    /// | 1 | GpbLo    |
41022    /// | 2 | Mem      |
41023    /// +---+----------+
41024    /// ```
41025    #[inline]
41026    pub fn setnc<A>(&mut self, op0: A)
41027    where
41028        Assembler<'a>: SetncEmitter<A>,
41029    {
41030        <Self as SetncEmitter<A>>::setnc(self, op0);
41031    }
41032    /// `SETNO`.
41033    ///
41034    /// Supported operand variants:
41035    ///
41036    /// ```text
41037    /// +---+----------+
41038    /// | # | Operands |
41039    /// +---+----------+
41040    /// | 1 | GpbLo    |
41041    /// | 2 | Mem      |
41042    /// +---+----------+
41043    /// ```
41044    #[inline]
41045    pub fn setno<A>(&mut self, op0: A)
41046    where
41047        Assembler<'a>: SetnoEmitter<A>,
41048    {
41049        <Self as SetnoEmitter<A>>::setno(self, op0);
41050    }
41051    /// `SETNP`.
41052    ///
41053    /// Supported operand variants:
41054    ///
41055    /// ```text
41056    /// +---+----------+
41057    /// | # | Operands |
41058    /// +---+----------+
41059    /// | 1 | GpbLo    |
41060    /// | 2 | Mem      |
41061    /// +---+----------+
41062    /// ```
41063    #[inline]
41064    pub fn setnp<A>(&mut self, op0: A)
41065    where
41066        Assembler<'a>: SetnpEmitter<A>,
41067    {
41068        <Self as SetnpEmitter<A>>::setnp(self, op0);
41069    }
41070    /// `SETNS`.
41071    ///
41072    /// Supported operand variants:
41073    ///
41074    /// ```text
41075    /// +---+----------+
41076    /// | # | Operands |
41077    /// +---+----------+
41078    /// | 1 | GpbLo    |
41079    /// | 2 | Mem      |
41080    /// +---+----------+
41081    /// ```
41082    #[inline]
41083    pub fn setns<A>(&mut self, op0: A)
41084    where
41085        Assembler<'a>: SetnsEmitter<A>,
41086    {
41087        <Self as SetnsEmitter<A>>::setns(self, op0);
41088    }
41089    /// `SETNZ`.
41090    ///
41091    /// Supported operand variants:
41092    ///
41093    /// ```text
41094    /// +---+----------+
41095    /// | # | Operands |
41096    /// +---+----------+
41097    /// | 1 | GpbLo    |
41098    /// | 2 | Mem      |
41099    /// +---+----------+
41100    /// ```
41101    #[inline]
41102    pub fn setnz<A>(&mut self, op0: A)
41103    where
41104        Assembler<'a>: SetnzEmitter<A>,
41105    {
41106        <Self as SetnzEmitter<A>>::setnz(self, op0);
41107    }
41108    /// `SETO`.
41109    ///
41110    /// Supported operand variants:
41111    ///
41112    /// ```text
41113    /// +---+----------+
41114    /// | # | Operands |
41115    /// +---+----------+
41116    /// | 1 | GpbLo    |
41117    /// | 2 | Mem      |
41118    /// +---+----------+
41119    /// ```
41120    #[inline]
41121    pub fn seto<A>(&mut self, op0: A)
41122    where
41123        Assembler<'a>: SetoEmitter<A>,
41124    {
41125        <Self as SetoEmitter<A>>::seto(self, op0);
41126    }
41127    /// `SETP`.
41128    ///
41129    /// Supported operand variants:
41130    ///
41131    /// ```text
41132    /// +---+----------+
41133    /// | # | Operands |
41134    /// +---+----------+
41135    /// | 1 | GpbLo    |
41136    /// | 2 | Mem      |
41137    /// +---+----------+
41138    /// ```
41139    #[inline]
41140    pub fn setp<A>(&mut self, op0: A)
41141    where
41142        Assembler<'a>: SetpEmitter<A>,
41143    {
41144        <Self as SetpEmitter<A>>::setp(self, op0);
41145    }
41146    /// `SETS`.
41147    ///
41148    /// Supported operand variants:
41149    ///
41150    /// ```text
41151    /// +---+----------+
41152    /// | # | Operands |
41153    /// +---+----------+
41154    /// | 1 | GpbLo    |
41155    /// | 2 | Mem      |
41156    /// +---+----------+
41157    /// ```
41158    #[inline]
41159    pub fn sets<A>(&mut self, op0: A)
41160    where
41161        Assembler<'a>: SetsEmitter<A>,
41162    {
41163        <Self as SetsEmitter<A>>::sets(self, op0);
41164    }
41165    /// `SETZ`.
41166    ///
41167    /// Supported operand variants:
41168    ///
41169    /// ```text
41170    /// +---+----------+
41171    /// | # | Operands |
41172    /// +---+----------+
41173    /// | 1 | GpbLo    |
41174    /// | 2 | Mem      |
41175    /// +---+----------+
41176    /// ```
41177    #[inline]
41178    pub fn setz<A>(&mut self, op0: A)
41179    where
41180        Assembler<'a>: SetzEmitter<A>,
41181    {
41182        <Self as SetzEmitter<A>>::setz(self, op0);
41183    }
41184    /// `SETCC`.
41185    ///
41186    /// Supported operand variants:
41187    ///
41188    /// ```text
41189    /// +---+----------+
41190    /// | # | Operands |
41191    /// +---+----------+
41192    /// | 1 | GpbLo    |
41193    /// | 2 | Mem      |
41194    /// +---+----------+
41195    /// ```
41196    #[inline]
41197    pub fn setcc<A>(&mut self, op0: A)
41198    where
41199        Assembler<'a>: SetccEmitter<A>,
41200    {
41201        <Self as SetccEmitter<A>>::setcc(self, op0);
41202    }
41203    /// `SGDT`.
41204    ///
41205    /// Supported operand variants:
41206    ///
41207    /// ```text
41208    /// +---+----------+
41209    /// | # | Operands |
41210    /// +---+----------+
41211    /// | 1 | Mem      |
41212    /// +---+----------+
41213    /// ```
41214    #[inline]
41215    pub fn sgdt<A>(&mut self, op0: A)
41216    where
41217        Assembler<'a>: SgdtEmitter<A>,
41218    {
41219        <Self as SgdtEmitter<A>>::sgdt(self, op0);
41220    }
41221    /// `SHL`.
41222    ///
41223    /// Supported operand variants:
41224    ///
41225    /// ```text
41226    /// +----+--------------+
41227    /// | #  | Operands     |
41228    /// +----+--------------+
41229    /// | 1  | GpbLo, GpbLo |
41230    /// | 2  | GpbLo, Imm   |
41231    /// | 3  | Gpd, GpbLo   |
41232    /// | 4  | Gpd, Imm     |
41233    /// | 5  | Gpq, GpbLo   |
41234    /// | 6  | Gpq, Imm     |
41235    /// | 7  | Gpw, GpbLo   |
41236    /// | 8  | Gpw, Imm     |
41237    /// | 9  | Mem, GpbLo   |
41238    /// | 10 | Mem, Imm     |
41239    /// +----+--------------+
41240    /// ```
41241    #[inline]
41242    pub fn shl<A, B>(&mut self, op0: A, op1: B)
41243    where
41244        Assembler<'a>: ShlEmitter<A, B>,
41245    {
41246        <Self as ShlEmitter<A, B>>::shl(self, op0, op1);
41247    }
41248    /// `SHLD`.
41249    ///
41250    /// Supported operand variants:
41251    ///
41252    /// ```text
41253    /// +----+-----------------+
41254    /// | #  | Operands        |
41255    /// +----+-----------------+
41256    /// | 1  | Gpd, Gpd, GpbLo |
41257    /// | 2  | Gpd, Gpd, Imm   |
41258    /// | 3  | Gpq, Gpq, GpbLo |
41259    /// | 4  | Gpq, Gpq, Imm   |
41260    /// | 5  | Gpw, Gpw, GpbLo |
41261    /// | 6  | Gpw, Gpw, Imm   |
41262    /// | 7  | Mem, Gpd, GpbLo |
41263    /// | 8  | Mem, Gpd, Imm   |
41264    /// | 9  | Mem, Gpq, GpbLo |
41265    /// | 10 | Mem, Gpq, Imm   |
41266    /// | 11 | Mem, Gpw, GpbLo |
41267    /// | 12 | Mem, Gpw, Imm   |
41268    /// +----+-----------------+
41269    /// ```
41270    #[inline]
41271    pub fn shld<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41272    where
41273        Assembler<'a>: ShldEmitter<A, B, C>,
41274    {
41275        <Self as ShldEmitter<A, B, C>>::shld(self, op0, op1, op2);
41276    }
41277    /// `SHR`.
41278    ///
41279    /// Supported operand variants:
41280    ///
41281    /// ```text
41282    /// +----+--------------+
41283    /// | #  | Operands     |
41284    /// +----+--------------+
41285    /// | 1  | GpbLo, GpbLo |
41286    /// | 2  | GpbLo, Imm   |
41287    /// | 3  | Gpd, GpbLo   |
41288    /// | 4  | Gpd, Imm     |
41289    /// | 5  | Gpq, GpbLo   |
41290    /// | 6  | Gpq, Imm     |
41291    /// | 7  | Gpw, GpbLo   |
41292    /// | 8  | Gpw, Imm     |
41293    /// | 9  | Mem, GpbLo   |
41294    /// | 10 | Mem, Imm     |
41295    /// +----+--------------+
41296    /// ```
41297    #[inline]
41298    pub fn shr<A, B>(&mut self, op0: A, op1: B)
41299    where
41300        Assembler<'a>: ShrEmitter<A, B>,
41301    {
41302        <Self as ShrEmitter<A, B>>::shr(self, op0, op1);
41303    }
41304    /// `SHRD`.
41305    ///
41306    /// Supported operand variants:
41307    ///
41308    /// ```text
41309    /// +----+-----------------+
41310    /// | #  | Operands        |
41311    /// +----+-----------------+
41312    /// | 1  | Gpd, Gpd, GpbLo |
41313    /// | 2  | Gpd, Gpd, Imm   |
41314    /// | 3  | Gpq, Gpq, GpbLo |
41315    /// | 4  | Gpq, Gpq, Imm   |
41316    /// | 5  | Gpw, Gpw, GpbLo |
41317    /// | 6  | Gpw, Gpw, Imm   |
41318    /// | 7  | Mem, Gpd, GpbLo |
41319    /// | 8  | Mem, Gpd, Imm   |
41320    /// | 9  | Mem, Gpq, GpbLo |
41321    /// | 10 | Mem, Gpq, Imm   |
41322    /// | 11 | Mem, Gpw, GpbLo |
41323    /// | 12 | Mem, Gpw, Imm   |
41324    /// +----+-----------------+
41325    /// ```
41326    #[inline]
41327    pub fn shrd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41328    where
41329        Assembler<'a>: ShrdEmitter<A, B, C>,
41330    {
41331        <Self as ShrdEmitter<A, B, C>>::shrd(self, op0, op1, op2);
41332    }
41333    /// `SIDT`.
41334    ///
41335    /// Supported operand variants:
41336    ///
41337    /// ```text
41338    /// +---+----------+
41339    /// | # | Operands |
41340    /// +---+----------+
41341    /// | 1 | Mem      |
41342    /// +---+----------+
41343    /// ```
41344    #[inline]
41345    pub fn sidt<A>(&mut self, op0: A)
41346    where
41347        Assembler<'a>: SidtEmitter<A>,
41348    {
41349        <Self as SidtEmitter<A>>::sidt(self, op0);
41350    }
41351    /// `SLDT`.
41352    ///
41353    /// Supported operand variants:
41354    ///
41355    /// ```text
41356    /// +---+----------+
41357    /// | # | Operands |
41358    /// +---+----------+
41359    /// | 1 | Gpd      |
41360    /// | 2 | Mem      |
41361    /// +---+----------+
41362    /// ```
41363    #[inline]
41364    pub fn sldt<A>(&mut self, op0: A)
41365    where
41366        Assembler<'a>: SldtEmitter<A>,
41367    {
41368        <Self as SldtEmitter<A>>::sldt(self, op0);
41369    }
41370    /// `SMSW`.
41371    ///
41372    /// Supported operand variants:
41373    ///
41374    /// ```text
41375    /// +---+----------+
41376    /// | # | Operands |
41377    /// +---+----------+
41378    /// | 1 | Gpd      |
41379    /// | 2 | Gpq      |
41380    /// | 3 | Gpw      |
41381    /// | 4 | Mem      |
41382    /// +---+----------+
41383    /// ```
41384    #[inline]
41385    pub fn smsw<A>(&mut self, op0: A)
41386    where
41387        Assembler<'a>: SmswEmitter<A>,
41388    {
41389        <Self as SmswEmitter<A>>::smsw(self, op0);
41390    }
41391    /// `STC`.
41392    ///
41393    /// Supported operand variants:
41394    ///
41395    /// ```text
41396    /// +---+----------+
41397    /// | # | Operands |
41398    /// +---+----------+
41399    /// | 1 | (none)   |
41400    /// +---+----------+
41401    /// ```
41402    #[inline]
41403    pub fn stc(&mut self)
41404    where
41405        Assembler<'a>: StcEmitter,
41406    {
41407        <Self as StcEmitter>::stc(self);
41408    }
41409    /// `STD`.
41410    ///
41411    /// Supported operand variants:
41412    ///
41413    /// ```text
41414    /// +---+----------+
41415    /// | # | Operands |
41416    /// +---+----------+
41417    /// | 1 | (none)   |
41418    /// +---+----------+
41419    /// ```
41420    #[inline]
41421    pub fn std(&mut self)
41422    where
41423        Assembler<'a>: StdEmitter,
41424    {
41425        <Self as StdEmitter>::std(self);
41426    }
41427    /// `STI`.
41428    ///
41429    /// Supported operand variants:
41430    ///
41431    /// ```text
41432    /// +---+----------+
41433    /// | # | Operands |
41434    /// +---+----------+
41435    /// | 1 | (none)   |
41436    /// +---+----------+
41437    /// ```
41438    #[inline]
41439    pub fn sti(&mut self)
41440    where
41441        Assembler<'a>: StiEmitter,
41442    {
41443        <Self as StiEmitter>::sti(self);
41444    }
41445    /// `STOS`.
41446    ///
41447    /// Supported operand variants:
41448    ///
41449    /// ```text
41450    /// +---+----------+
41451    /// | # | Operands |
41452    /// +---+----------+
41453    /// | 1 | (none)   |
41454    /// +---+----------+
41455    /// ```
41456    #[inline]
41457    pub fn stos(&mut self)
41458    where
41459        Assembler<'a>: StosEmitter,
41460    {
41461        <Self as StosEmitter>::stos(self);
41462    }
41463    /// `STR`.
41464    ///
41465    /// Supported operand variants:
41466    ///
41467    /// ```text
41468    /// +---+----------+
41469    /// | # | Operands |
41470    /// +---+----------+
41471    /// | 1 | Gpd      |
41472    /// | 2 | Mem      |
41473    /// +---+----------+
41474    /// ```
41475    #[inline]
41476    pub fn str<A>(&mut self, op0: A)
41477    where
41478        Assembler<'a>: StrEmitter<A>,
41479    {
41480        <Self as StrEmitter<A>>::str(self, op0);
41481    }
41482    /// `STTILECFG`.
41483    ///
41484    /// Supported operand variants:
41485    ///
41486    /// ```text
41487    /// +---+----------+
41488    /// | # | Operands |
41489    /// +---+----------+
41490    /// | 1 | Mem      |
41491    /// +---+----------+
41492    /// ```
41493    #[inline]
41494    pub fn sttilecfg<A>(&mut self, op0: A)
41495    where
41496        Assembler<'a>: SttilecfgEmitter<A>,
41497    {
41498        <Self as SttilecfgEmitter<A>>::sttilecfg(self, op0);
41499    }
41500    /// `SUB`.
41501    ///
41502    /// Supported operand variants:
41503    ///
41504    /// ```text
41505    /// +----+--------------+
41506    /// | #  | Operands     |
41507    /// +----+--------------+
41508    /// | 1  | GpbLo, GpbLo |
41509    /// | 2  | GpbLo, Imm   |
41510    /// | 3  | GpbLo, Mem   |
41511    /// | 4  | Gpd, Gpd     |
41512    /// | 5  | Gpd, Imm     |
41513    /// | 6  | Gpd, Mem     |
41514    /// | 7  | Gpq, Gpq     |
41515    /// | 8  | Gpq, Imm     |
41516    /// | 9  | Gpq, Mem     |
41517    /// | 10 | Gpw, Gpw     |
41518    /// | 11 | Gpw, Imm     |
41519    /// | 12 | Gpw, Mem     |
41520    /// | 13 | Mem, GpbLo   |
41521    /// | 14 | Mem, Gpd     |
41522    /// | 15 | Mem, Gpq     |
41523    /// | 16 | Mem, Gpw     |
41524    /// | 17 | Mem, Imm     |
41525    /// +----+--------------+
41526    /// ```
41527    #[inline]
41528    pub fn sub<A, B>(&mut self, op0: A, op1: B)
41529    where
41530        Assembler<'a>: SubEmitter<A, B>,
41531    {
41532        <Self as SubEmitter<A, B>>::sub(self, op0, op1);
41533    }
41534    /// `SWAPGS`.
41535    ///
41536    /// Supported operand variants:
41537    ///
41538    /// ```text
41539    /// +---+----------+
41540    /// | # | Operands |
41541    /// +---+----------+
41542    /// | 1 | (none)   |
41543    /// +---+----------+
41544    /// ```
41545    #[inline]
41546    pub fn swapgs(&mut self)
41547    where
41548        Assembler<'a>: SwapgsEmitter,
41549    {
41550        <Self as SwapgsEmitter>::swapgs(self);
41551    }
41552    /// `SYSCALL`.
41553    ///
41554    /// Supported operand variants:
41555    ///
41556    /// ```text
41557    /// +---+----------+
41558    /// | # | Operands |
41559    /// +---+----------+
41560    /// | 1 | (none)   |
41561    /// +---+----------+
41562    /// ```
41563    #[inline]
41564    pub fn syscall(&mut self)
41565    where
41566        Assembler<'a>: SyscallEmitter,
41567    {
41568        <Self as SyscallEmitter>::syscall(self);
41569    }
41570    /// `SYSRET`.
41571    ///
41572    /// Supported operand variants:
41573    ///
41574    /// ```text
41575    /// +---+----------+
41576    /// | # | Operands |
41577    /// +---+----------+
41578    /// | 1 | (none)   |
41579    /// +---+----------+
41580    /// ```
41581    #[inline]
41582    pub fn sysret(&mut self)
41583    where
41584        Assembler<'a>: SysretEmitter,
41585    {
41586        <Self as SysretEmitter>::sysret(self);
41587    }
41588    /// `TCMMIMFP16PS`.
41589    ///
41590    /// Supported operand variants:
41591    ///
41592    /// ```text
41593    /// +---+---------------+
41594    /// | # | Operands      |
41595    /// +---+---------------+
41596    /// | 1 | Tmm, Tmm, Tmm |
41597    /// +---+---------------+
41598    /// ```
41599    #[inline]
41600    pub fn tcmmimfp16ps<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41601    where
41602        Assembler<'a>: Tcmmimfp16psEmitter<A, B, C>,
41603    {
41604        <Self as Tcmmimfp16psEmitter<A, B, C>>::tcmmimfp16ps(self, op0, op1, op2);
41605    }
41606    /// `TCMMRLFP16PS`.
41607    ///
41608    /// Supported operand variants:
41609    ///
41610    /// ```text
41611    /// +---+---------------+
41612    /// | # | Operands      |
41613    /// +---+---------------+
41614    /// | 1 | Tmm, Tmm, Tmm |
41615    /// +---+---------------+
41616    /// ```
41617    #[inline]
41618    pub fn tcmmrlfp16ps<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41619    where
41620        Assembler<'a>: Tcmmrlfp16psEmitter<A, B, C>,
41621    {
41622        <Self as Tcmmrlfp16psEmitter<A, B, C>>::tcmmrlfp16ps(self, op0, op1, op2);
41623    }
41624    /// `TDPBF16PS`.
41625    ///
41626    /// Supported operand variants:
41627    ///
41628    /// ```text
41629    /// +---+---------------+
41630    /// | # | Operands      |
41631    /// +---+---------------+
41632    /// | 1 | Tmm, Tmm, Tmm |
41633    /// +---+---------------+
41634    /// ```
41635    #[inline]
41636    pub fn tdpbf16ps<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41637    where
41638        Assembler<'a>: Tdpbf16psEmitter<A, B, C>,
41639    {
41640        <Self as Tdpbf16psEmitter<A, B, C>>::tdpbf16ps(self, op0, op1, op2);
41641    }
41642    /// `TDPBSSD`.
41643    ///
41644    /// Supported operand variants:
41645    ///
41646    /// ```text
41647    /// +---+---------------+
41648    /// | # | Operands      |
41649    /// +---+---------------+
41650    /// | 1 | Tmm, Tmm, Tmm |
41651    /// +---+---------------+
41652    /// ```
41653    #[inline]
41654    pub fn tdpbssd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41655    where
41656        Assembler<'a>: TdpbssdEmitter<A, B, C>,
41657    {
41658        <Self as TdpbssdEmitter<A, B, C>>::tdpbssd(self, op0, op1, op2);
41659    }
41660    /// `TDPBSUD`.
41661    ///
41662    /// Supported operand variants:
41663    ///
41664    /// ```text
41665    /// +---+---------------+
41666    /// | # | Operands      |
41667    /// +---+---------------+
41668    /// | 1 | Tmm, Tmm, Tmm |
41669    /// +---+---------------+
41670    /// ```
41671    #[inline]
41672    pub fn tdpbsud<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41673    where
41674        Assembler<'a>: TdpbsudEmitter<A, B, C>,
41675    {
41676        <Self as TdpbsudEmitter<A, B, C>>::tdpbsud(self, op0, op1, op2);
41677    }
41678    /// `TDPBUSD`.
41679    ///
41680    /// Supported operand variants:
41681    ///
41682    /// ```text
41683    /// +---+---------------+
41684    /// | # | Operands      |
41685    /// +---+---------------+
41686    /// | 1 | Tmm, Tmm, Tmm |
41687    /// +---+---------------+
41688    /// ```
41689    #[inline]
41690    pub fn tdpbusd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41691    where
41692        Assembler<'a>: TdpbusdEmitter<A, B, C>,
41693    {
41694        <Self as TdpbusdEmitter<A, B, C>>::tdpbusd(self, op0, op1, op2);
41695    }
41696    /// `TDPBUUD`.
41697    ///
41698    /// Supported operand variants:
41699    ///
41700    /// ```text
41701    /// +---+---------------+
41702    /// | # | Operands      |
41703    /// +---+---------------+
41704    /// | 1 | Tmm, Tmm, Tmm |
41705    /// +---+---------------+
41706    /// ```
41707    #[inline]
41708    pub fn tdpbuud<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41709    where
41710        Assembler<'a>: TdpbuudEmitter<A, B, C>,
41711    {
41712        <Self as TdpbuudEmitter<A, B, C>>::tdpbuud(self, op0, op1, op2);
41713    }
41714    /// `TDPFP16PS`.
41715    ///
41716    /// Supported operand variants:
41717    ///
41718    /// ```text
41719    /// +---+---------------+
41720    /// | # | Operands      |
41721    /// +---+---------------+
41722    /// | 1 | Tmm, Tmm, Tmm |
41723    /// +---+---------------+
41724    /// ```
41725    #[inline]
41726    pub fn tdpfp16ps<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41727    where
41728        Assembler<'a>: Tdpfp16psEmitter<A, B, C>,
41729    {
41730        <Self as Tdpfp16psEmitter<A, B, C>>::tdpfp16ps(self, op0, op1, op2);
41731    }
41732    /// `TEST`.
41733    ///
41734    /// Supported operand variants:
41735    ///
41736    /// ```text
41737    /// +----+--------------+
41738    /// | #  | Operands     |
41739    /// +----+--------------+
41740    /// | 1  | GpbLo, GpbLo |
41741    /// | 2  | GpbLo, Imm   |
41742    /// | 3  | Gpd, Gpd     |
41743    /// | 4  | Gpd, Imm     |
41744    /// | 5  | Gpq, Gpq     |
41745    /// | 6  | Gpq, Imm     |
41746    /// | 7  | Gpw, Gpw     |
41747    /// | 8  | Gpw, Imm     |
41748    /// | 9  | Mem, GpbLo   |
41749    /// | 10 | Mem, Gpd     |
41750    /// | 11 | Mem, Gpq     |
41751    /// | 12 | Mem, Gpw     |
41752    /// | 13 | Mem, Imm     |
41753    /// +----+--------------+
41754    /// ```
41755    #[inline]
41756    pub fn test<A, B>(&mut self, op0: A, op1: B)
41757    where
41758        Assembler<'a>: TestEmitter<A, B>,
41759    {
41760        <Self as TestEmitter<A, B>>::test(self, op0, op1);
41761    }
41762    /// `TILELOADD`.
41763    ///
41764    /// Supported operand variants:
41765    ///
41766    /// ```text
41767    /// +---+----------+
41768    /// | # | Operands |
41769    /// +---+----------+
41770    /// | 1 | Tmm, Mem |
41771    /// +---+----------+
41772    /// ```
41773    #[inline]
41774    pub fn tileloadd<A, B>(&mut self, op0: A, op1: B)
41775    where
41776        Assembler<'a>: TileloaddEmitter<A, B>,
41777    {
41778        <Self as TileloaddEmitter<A, B>>::tileloadd(self, op0, op1);
41779    }
41780    /// `TILELOADDT1`.
41781    ///
41782    /// Supported operand variants:
41783    ///
41784    /// ```text
41785    /// +---+----------+
41786    /// | # | Operands |
41787    /// +---+----------+
41788    /// | 1 | Tmm, Mem |
41789    /// +---+----------+
41790    /// ```
41791    #[inline]
41792    pub fn tileloaddt1<A, B>(&mut self, op0: A, op1: B)
41793    where
41794        Assembler<'a>: Tileloaddt1Emitter<A, B>,
41795    {
41796        <Self as Tileloaddt1Emitter<A, B>>::tileloaddt1(self, op0, op1);
41797    }
41798    /// `TILERELEASE`.
41799    ///
41800    /// Supported operand variants:
41801    ///
41802    /// ```text
41803    /// +---+----------+
41804    /// | # | Operands |
41805    /// +---+----------+
41806    /// | 1 | (none)   |
41807    /// +---+----------+
41808    /// ```
41809    #[inline]
41810    pub fn tilerelease(&mut self)
41811    where
41812        Assembler<'a>: TilereleaseEmitter,
41813    {
41814        <Self as TilereleaseEmitter>::tilerelease(self);
41815    }
41816    /// `TILESTORED`.
41817    ///
41818    /// Supported operand variants:
41819    ///
41820    /// ```text
41821    /// +---+----------+
41822    /// | # | Operands |
41823    /// +---+----------+
41824    /// | 1 | Mem, Tmm |
41825    /// +---+----------+
41826    /// ```
41827    #[inline]
41828    pub fn tilestored<A, B>(&mut self, op0: A, op1: B)
41829    where
41830        Assembler<'a>: TilestoredEmitter<A, B>,
41831    {
41832        <Self as TilestoredEmitter<A, B>>::tilestored(self, op0, op1);
41833    }
41834    /// `TILEZERO`.
41835    ///
41836    /// Supported operand variants:
41837    ///
41838    /// ```text
41839    /// +---+----------+
41840    /// | # | Operands |
41841    /// +---+----------+
41842    /// | 1 | Tmm      |
41843    /// +---+----------+
41844    /// ```
41845    #[inline]
41846    pub fn tilezero<A>(&mut self, op0: A)
41847    where
41848        Assembler<'a>: TilezeroEmitter<A>,
41849    {
41850        <Self as TilezeroEmitter<A>>::tilezero(self, op0);
41851    }
41852    /// `UD0`.
41853    ///
41854    /// Supported operand variants:
41855    ///
41856    /// ```text
41857    /// +---+----------+
41858    /// | # | Operands |
41859    /// +---+----------+
41860    /// | 1 | Gpd, Gpd |
41861    /// | 2 | Gpd, Mem |
41862    /// | 3 | Gpq, Gpq |
41863    /// | 4 | Gpq, Mem |
41864    /// | 5 | Gpw, Gpw |
41865    /// | 6 | Gpw, Mem |
41866    /// +---+----------+
41867    /// ```
41868    #[inline]
41869    pub fn ud0<A, B>(&mut self, op0: A, op1: B)
41870    where
41871        Assembler<'a>: Ud0Emitter<A, B>,
41872    {
41873        <Self as Ud0Emitter<A, B>>::ud0(self, op0, op1);
41874    }
41875    /// `UD1`.
41876    ///
41877    /// Supported operand variants:
41878    ///
41879    /// ```text
41880    /// +---+----------+
41881    /// | # | Operands |
41882    /// +---+----------+
41883    /// | 1 | Gpd, Gpd |
41884    /// | 2 | Gpd, Mem |
41885    /// | 3 | Gpq, Gpq |
41886    /// | 4 | Gpq, Mem |
41887    /// | 5 | Gpw, Gpw |
41888    /// | 6 | Gpw, Mem |
41889    /// +---+----------+
41890    /// ```
41891    #[inline]
41892    pub fn ud1<A, B>(&mut self, op0: A, op1: B)
41893    where
41894        Assembler<'a>: Ud1Emitter<A, B>,
41895    {
41896        <Self as Ud1Emitter<A, B>>::ud1(self, op0, op1);
41897    }
41898    /// `UD2`.
41899    ///
41900    /// Supported operand variants:
41901    ///
41902    /// ```text
41903    /// +---+----------+
41904    /// | # | Operands |
41905    /// +---+----------+
41906    /// | 1 | (none)   |
41907    /// +---+----------+
41908    /// ```
41909    #[inline]
41910    pub fn ud2(&mut self)
41911    where
41912        Assembler<'a>: Ud2Emitter,
41913    {
41914        <Self as Ud2Emitter>::ud2(self);
41915    }
41916    /// `VADDPH`.
41917    ///
41918    /// Supported operand variants:
41919    ///
41920    /// ```text
41921    /// +---+---------------+
41922    /// | # | Operands      |
41923    /// +---+---------------+
41924    /// | 1 | Xmm, Xmm, Mem |
41925    /// | 2 | Xmm, Xmm, Xmm |
41926    /// | 3 | Ymm, Ymm, Mem |
41927    /// | 4 | Ymm, Ymm, Ymm |
41928    /// | 5 | Zmm, Zmm, Mem |
41929    /// | 6 | Zmm, Zmm, Zmm |
41930    /// +---+---------------+
41931    /// ```
41932    #[inline]
41933    pub fn vaddph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41934    where
41935        Assembler<'a>: VaddphEmitter<A, B, C>,
41936    {
41937        <Self as VaddphEmitter<A, B, C>>::vaddph(self, op0, op1, op2);
41938    }
41939    /// `VADDPH_ER`.
41940    ///
41941    /// Supported operand variants:
41942    ///
41943    /// ```text
41944    /// +---+---------------+
41945    /// | # | Operands      |
41946    /// +---+---------------+
41947    /// | 1 | Zmm, Zmm, Zmm |
41948    /// +---+---------------+
41949    /// ```
41950    #[inline]
41951    pub fn vaddph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41952    where
41953        Assembler<'a>: VaddphErEmitter<A, B, C>,
41954    {
41955        <Self as VaddphErEmitter<A, B, C>>::vaddph_er(self, op0, op1, op2);
41956    }
41957    /// `VADDPH_MASK`.
41958    ///
41959    /// Supported operand variants:
41960    ///
41961    /// ```text
41962    /// +---+---------------+
41963    /// | # | Operands      |
41964    /// +---+---------------+
41965    /// | 1 | Xmm, Xmm, Mem |
41966    /// | 2 | Xmm, Xmm, Xmm |
41967    /// | 3 | Ymm, Ymm, Mem |
41968    /// | 4 | Ymm, Ymm, Ymm |
41969    /// | 5 | Zmm, Zmm, Mem |
41970    /// | 6 | Zmm, Zmm, Zmm |
41971    /// +---+---------------+
41972    /// ```
41973    #[inline]
41974    pub fn vaddph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41975    where
41976        Assembler<'a>: VaddphMaskEmitter<A, B, C>,
41977    {
41978        <Self as VaddphMaskEmitter<A, B, C>>::vaddph_mask(self, op0, op1, op2);
41979    }
41980    /// `VADDPH_MASK_ER`.
41981    ///
41982    /// Supported operand variants:
41983    ///
41984    /// ```text
41985    /// +---+---------------+
41986    /// | # | Operands      |
41987    /// +---+---------------+
41988    /// | 1 | Zmm, Zmm, Zmm |
41989    /// +---+---------------+
41990    /// ```
41991    #[inline]
41992    pub fn vaddph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
41993    where
41994        Assembler<'a>: VaddphMaskErEmitter<A, B, C>,
41995    {
41996        <Self as VaddphMaskErEmitter<A, B, C>>::vaddph_mask_er(self, op0, op1, op2);
41997    }
41998    /// `VADDPH_MASKZ`.
41999    ///
42000    /// Supported operand variants:
42001    ///
42002    /// ```text
42003    /// +---+---------------+
42004    /// | # | Operands      |
42005    /// +---+---------------+
42006    /// | 1 | Xmm, Xmm, Mem |
42007    /// | 2 | Xmm, Xmm, Xmm |
42008    /// | 3 | Ymm, Ymm, Mem |
42009    /// | 4 | Ymm, Ymm, Ymm |
42010    /// | 5 | Zmm, Zmm, Mem |
42011    /// | 6 | Zmm, Zmm, Zmm |
42012    /// +---+---------------+
42013    /// ```
42014    #[inline]
42015    pub fn vaddph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42016    where
42017        Assembler<'a>: VaddphMaskzEmitter<A, B, C>,
42018    {
42019        <Self as VaddphMaskzEmitter<A, B, C>>::vaddph_maskz(self, op0, op1, op2);
42020    }
42021    /// `VADDPH_MASKZ_ER`.
42022    ///
42023    /// Supported operand variants:
42024    ///
42025    /// ```text
42026    /// +---+---------------+
42027    /// | # | Operands      |
42028    /// +---+---------------+
42029    /// | 1 | Zmm, Zmm, Zmm |
42030    /// +---+---------------+
42031    /// ```
42032    #[inline]
42033    pub fn vaddph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42034    where
42035        Assembler<'a>: VaddphMaskzErEmitter<A, B, C>,
42036    {
42037        <Self as VaddphMaskzErEmitter<A, B, C>>::vaddph_maskz_er(self, op0, op1, op2);
42038    }
42039    /// `VADDSH`.
42040    ///
42041    /// Supported operand variants:
42042    ///
42043    /// ```text
42044    /// +---+---------------+
42045    /// | # | Operands      |
42046    /// +---+---------------+
42047    /// | 1 | Xmm, Xmm, Mem |
42048    /// | 2 | Xmm, Xmm, Xmm |
42049    /// +---+---------------+
42050    /// ```
42051    #[inline]
42052    pub fn vaddsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42053    where
42054        Assembler<'a>: VaddshEmitter<A, B, C>,
42055    {
42056        <Self as VaddshEmitter<A, B, C>>::vaddsh(self, op0, op1, op2);
42057    }
42058    /// `VADDSH_ER`.
42059    ///
42060    /// Supported operand variants:
42061    ///
42062    /// ```text
42063    /// +---+---------------+
42064    /// | # | Operands      |
42065    /// +---+---------------+
42066    /// | 1 | Xmm, Xmm, Xmm |
42067    /// +---+---------------+
42068    /// ```
42069    #[inline]
42070    pub fn vaddsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42071    where
42072        Assembler<'a>: VaddshErEmitter<A, B, C>,
42073    {
42074        <Self as VaddshErEmitter<A, B, C>>::vaddsh_er(self, op0, op1, op2);
42075    }
42076    /// `VADDSH_MASK`.
42077    ///
42078    /// Supported operand variants:
42079    ///
42080    /// ```text
42081    /// +---+---------------+
42082    /// | # | Operands      |
42083    /// +---+---------------+
42084    /// | 1 | Xmm, Xmm, Mem |
42085    /// | 2 | Xmm, Xmm, Xmm |
42086    /// +---+---------------+
42087    /// ```
42088    #[inline]
42089    pub fn vaddsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42090    where
42091        Assembler<'a>: VaddshMaskEmitter<A, B, C>,
42092    {
42093        <Self as VaddshMaskEmitter<A, B, C>>::vaddsh_mask(self, op0, op1, op2);
42094    }
42095    /// `VADDSH_MASK_ER`.
42096    ///
42097    /// Supported operand variants:
42098    ///
42099    /// ```text
42100    /// +---+---------------+
42101    /// | # | Operands      |
42102    /// +---+---------------+
42103    /// | 1 | Xmm, Xmm, Xmm |
42104    /// +---+---------------+
42105    /// ```
42106    #[inline]
42107    pub fn vaddsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42108    where
42109        Assembler<'a>: VaddshMaskErEmitter<A, B, C>,
42110    {
42111        <Self as VaddshMaskErEmitter<A, B, C>>::vaddsh_mask_er(self, op0, op1, op2);
42112    }
42113    /// `VADDSH_MASKZ`.
42114    ///
42115    /// Supported operand variants:
42116    ///
42117    /// ```text
42118    /// +---+---------------+
42119    /// | # | Operands      |
42120    /// +---+---------------+
42121    /// | 1 | Xmm, Xmm, Mem |
42122    /// | 2 | Xmm, Xmm, Xmm |
42123    /// +---+---------------+
42124    /// ```
42125    #[inline]
42126    pub fn vaddsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42127    where
42128        Assembler<'a>: VaddshMaskzEmitter<A, B, C>,
42129    {
42130        <Self as VaddshMaskzEmitter<A, B, C>>::vaddsh_maskz(self, op0, op1, op2);
42131    }
42132    /// `VADDSH_MASKZ_ER`.
42133    ///
42134    /// Supported operand variants:
42135    ///
42136    /// ```text
42137    /// +---+---------------+
42138    /// | # | Operands      |
42139    /// +---+---------------+
42140    /// | 1 | Xmm, Xmm, Xmm |
42141    /// +---+---------------+
42142    /// ```
42143    #[inline]
42144    pub fn vaddsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42145    where
42146        Assembler<'a>: VaddshMaskzErEmitter<A, B, C>,
42147    {
42148        <Self as VaddshMaskzErEmitter<A, B, C>>::vaddsh_maskz_er(self, op0, op1, op2);
42149    }
42150    /// `VAESDEC`.
42151    ///
42152    /// Supported operand variants:
42153    ///
42154    /// ```text
42155    /// +---+---------------+
42156    /// | # | Operands      |
42157    /// +---+---------------+
42158    /// | 1 | Xmm, Xmm, Mem |
42159    /// | 2 | Xmm, Xmm, Xmm |
42160    /// | 3 | Ymm, Ymm, Mem |
42161    /// | 4 | Ymm, Ymm, Ymm |
42162    /// | 5 | Zmm, Zmm, Mem |
42163    /// | 6 | Zmm, Zmm, Zmm |
42164    /// +---+---------------+
42165    /// ```
42166    #[inline]
42167    pub fn vaesdec<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42168    where
42169        Assembler<'a>: VaesdecEmitter<A, B, C>,
42170    {
42171        <Self as VaesdecEmitter<A, B, C>>::vaesdec(self, op0, op1, op2);
42172    }
42173    /// `VAESDECLAST`.
42174    ///
42175    /// Supported operand variants:
42176    ///
42177    /// ```text
42178    /// +---+---------------+
42179    /// | # | Operands      |
42180    /// +---+---------------+
42181    /// | 1 | Xmm, Xmm, Mem |
42182    /// | 2 | Xmm, Xmm, Xmm |
42183    /// | 3 | Ymm, Ymm, Mem |
42184    /// | 4 | Ymm, Ymm, Ymm |
42185    /// | 5 | Zmm, Zmm, Mem |
42186    /// | 6 | Zmm, Zmm, Zmm |
42187    /// +---+---------------+
42188    /// ```
42189    #[inline]
42190    pub fn vaesdeclast<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42191    where
42192        Assembler<'a>: VaesdeclastEmitter<A, B, C>,
42193    {
42194        <Self as VaesdeclastEmitter<A, B, C>>::vaesdeclast(self, op0, op1, op2);
42195    }
42196    /// `VAESENC`.
42197    ///
42198    /// Supported operand variants:
42199    ///
42200    /// ```text
42201    /// +---+---------------+
42202    /// | # | Operands      |
42203    /// +---+---------------+
42204    /// | 1 | Xmm, Xmm, Mem |
42205    /// | 2 | Xmm, Xmm, Xmm |
42206    /// | 3 | Ymm, Ymm, Mem |
42207    /// | 4 | Ymm, Ymm, Ymm |
42208    /// | 5 | Zmm, Zmm, Mem |
42209    /// | 6 | Zmm, Zmm, Zmm |
42210    /// +---+---------------+
42211    /// ```
42212    #[inline]
42213    pub fn vaesenc<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42214    where
42215        Assembler<'a>: VaesencEmitter<A, B, C>,
42216    {
42217        <Self as VaesencEmitter<A, B, C>>::vaesenc(self, op0, op1, op2);
42218    }
42219    /// `VAESENCLAST`.
42220    ///
42221    /// Supported operand variants:
42222    ///
42223    /// ```text
42224    /// +---+---------------+
42225    /// | # | Operands      |
42226    /// +---+---------------+
42227    /// | 1 | Xmm, Xmm, Mem |
42228    /// | 2 | Xmm, Xmm, Xmm |
42229    /// | 3 | Ymm, Ymm, Mem |
42230    /// | 4 | Ymm, Ymm, Ymm |
42231    /// | 5 | Zmm, Zmm, Mem |
42232    /// | 6 | Zmm, Zmm, Zmm |
42233    /// +---+---------------+
42234    /// ```
42235    #[inline]
42236    pub fn vaesenclast<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42237    where
42238        Assembler<'a>: VaesenclastEmitter<A, B, C>,
42239    {
42240        <Self as VaesenclastEmitter<A, B, C>>::vaesenclast(self, op0, op1, op2);
42241    }
42242    /// `VAESIMC`.
42243    ///
42244    /// Supported operand variants:
42245    ///
42246    /// ```text
42247    /// +---+----------+
42248    /// | # | Operands |
42249    /// +---+----------+
42250    /// | 1 | Xmm, Mem |
42251    /// | 2 | Xmm, Xmm |
42252    /// +---+----------+
42253    /// ```
42254    #[inline]
42255    pub fn vaesimc<A, B>(&mut self, op0: A, op1: B)
42256    where
42257        Assembler<'a>: VaesimcEmitter<A, B>,
42258    {
42259        <Self as VaesimcEmitter<A, B>>::vaesimc(self, op0, op1);
42260    }
42261    /// `VAESKEYGENASSIST`.
42262    ///
42263    /// Supported operand variants:
42264    ///
42265    /// ```text
42266    /// +---+---------------+
42267    /// | # | Operands      |
42268    /// +---+---------------+
42269    /// | 1 | Xmm, Mem, Imm |
42270    /// | 2 | Xmm, Xmm, Imm |
42271    /// +---+---------------+
42272    /// ```
42273    #[inline]
42274    pub fn vaeskeygenassist<A, B, C>(&mut self, op0: A, op1: B, op2: C)
42275    where
42276        Assembler<'a>: VaeskeygenassistEmitter<A, B, C>,
42277    {
42278        <Self as VaeskeygenassistEmitter<A, B, C>>::vaeskeygenassist(self, op0, op1, op2);
42279    }
42280    /// `VBCSTNEBF162PS`.
42281    ///
42282    /// Supported operand variants:
42283    ///
42284    /// ```text
42285    /// +---+----------+
42286    /// | # | Operands |
42287    /// +---+----------+
42288    /// | 1 | Xmm, Mem |
42289    /// | 2 | Ymm, Mem |
42290    /// +---+----------+
42291    /// ```
42292    #[inline]
42293    pub fn vbcstnebf162ps<A, B>(&mut self, op0: A, op1: B)
42294    where
42295        Assembler<'a>: Vbcstnebf162psEmitter<A, B>,
42296    {
42297        <Self as Vbcstnebf162psEmitter<A, B>>::vbcstnebf162ps(self, op0, op1);
42298    }
42299    /// `VBCSTNESH2PS`.
42300    ///
42301    /// Supported operand variants:
42302    ///
42303    /// ```text
42304    /// +---+----------+
42305    /// | # | Operands |
42306    /// +---+----------+
42307    /// | 1 | Xmm, Mem |
42308    /// | 2 | Ymm, Mem |
42309    /// +---+----------+
42310    /// ```
42311    #[inline]
42312    pub fn vbcstnesh2ps<A, B>(&mut self, op0: A, op1: B)
42313    where
42314        Assembler<'a>: Vbcstnesh2psEmitter<A, B>,
42315    {
42316        <Self as Vbcstnesh2psEmitter<A, B>>::vbcstnesh2ps(self, op0, op1);
42317    }
42318    /// `VCMPPH`.
42319    ///
42320    /// Supported operand variants:
42321    ///
42322    /// ```text
42323    /// +---+---------------------+
42324    /// | # | Operands            |
42325    /// +---+---------------------+
42326    /// | 1 | KReg, Xmm, Mem, Imm |
42327    /// | 2 | KReg, Xmm, Xmm, Imm |
42328    /// | 3 | KReg, Ymm, Mem, Imm |
42329    /// | 4 | KReg, Ymm, Ymm, Imm |
42330    /// | 5 | KReg, Zmm, Mem, Imm |
42331    /// | 6 | KReg, Zmm, Zmm, Imm |
42332    /// +---+---------------------+
42333    /// ```
42334    #[inline]
42335    pub fn vcmpph<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42336    where
42337        Assembler<'a>: VcmpphEmitter<A, B, C, D>,
42338    {
42339        <Self as VcmpphEmitter<A, B, C, D>>::vcmpph(self, op0, op1, op2, op3);
42340    }
42341    /// `VCMPPH_MASK`.
42342    ///
42343    /// Supported operand variants:
42344    ///
42345    /// ```text
42346    /// +---+---------------------+
42347    /// | # | Operands            |
42348    /// +---+---------------------+
42349    /// | 1 | KReg, Xmm, Mem, Imm |
42350    /// | 2 | KReg, Xmm, Xmm, Imm |
42351    /// | 3 | KReg, Ymm, Mem, Imm |
42352    /// | 4 | KReg, Ymm, Ymm, Imm |
42353    /// | 5 | KReg, Zmm, Mem, Imm |
42354    /// | 6 | KReg, Zmm, Zmm, Imm |
42355    /// +---+---------------------+
42356    /// ```
42357    #[inline]
42358    pub fn vcmpph_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42359    where
42360        Assembler<'a>: VcmpphMaskEmitter<A, B, C, D>,
42361    {
42362        <Self as VcmpphMaskEmitter<A, B, C, D>>::vcmpph_mask(self, op0, op1, op2, op3);
42363    }
42364    /// `VCMPPH_MASK_SAE`.
42365    ///
42366    /// Supported operand variants:
42367    ///
42368    /// ```text
42369    /// +---+---------------------+
42370    /// | # | Operands            |
42371    /// +---+---------------------+
42372    /// | 1 | KReg, Zmm, Zmm, Imm |
42373    /// +---+---------------------+
42374    /// ```
42375    #[inline]
42376    pub fn vcmpph_mask_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42377    where
42378        Assembler<'a>: VcmpphMaskSaeEmitter<A, B, C, D>,
42379    {
42380        <Self as VcmpphMaskSaeEmitter<A, B, C, D>>::vcmpph_mask_sae(self, op0, op1, op2, op3);
42381    }
42382    /// `VCMPPH_SAE`.
42383    ///
42384    /// Supported operand variants:
42385    ///
42386    /// ```text
42387    /// +---+---------------------+
42388    /// | # | Operands            |
42389    /// +---+---------------------+
42390    /// | 1 | KReg, Zmm, Zmm, Imm |
42391    /// +---+---------------------+
42392    /// ```
42393    #[inline]
42394    pub fn vcmpph_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42395    where
42396        Assembler<'a>: VcmpphSaeEmitter<A, B, C, D>,
42397    {
42398        <Self as VcmpphSaeEmitter<A, B, C, D>>::vcmpph_sae(self, op0, op1, op2, op3);
42399    }
42400    /// `VCMPSH`.
42401    ///
42402    /// Supported operand variants:
42403    ///
42404    /// ```text
42405    /// +---+---------------------+
42406    /// | # | Operands            |
42407    /// +---+---------------------+
42408    /// | 1 | KReg, Xmm, Mem, Imm |
42409    /// | 2 | KReg, Xmm, Xmm, Imm |
42410    /// +---+---------------------+
42411    /// ```
42412    #[inline]
42413    pub fn vcmpsh<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42414    where
42415        Assembler<'a>: VcmpshEmitter<A, B, C, D>,
42416    {
42417        <Self as VcmpshEmitter<A, B, C, D>>::vcmpsh(self, op0, op1, op2, op3);
42418    }
42419    /// `VCMPSH_MASK`.
42420    ///
42421    /// Supported operand variants:
42422    ///
42423    /// ```text
42424    /// +---+---------------------+
42425    /// | # | Operands            |
42426    /// +---+---------------------+
42427    /// | 1 | KReg, Xmm, Mem, Imm |
42428    /// | 2 | KReg, Xmm, Xmm, Imm |
42429    /// +---+---------------------+
42430    /// ```
42431    #[inline]
42432    pub fn vcmpsh_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42433    where
42434        Assembler<'a>: VcmpshMaskEmitter<A, B, C, D>,
42435    {
42436        <Self as VcmpshMaskEmitter<A, B, C, D>>::vcmpsh_mask(self, op0, op1, op2, op3);
42437    }
42438    /// `VCMPSH_MASK_SAE`.
42439    ///
42440    /// Supported operand variants:
42441    ///
42442    /// ```text
42443    /// +---+---------------------+
42444    /// | # | Operands            |
42445    /// +---+---------------------+
42446    /// | 1 | KReg, Xmm, Xmm, Imm |
42447    /// +---+---------------------+
42448    /// ```
42449    #[inline]
42450    pub fn vcmpsh_mask_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42451    where
42452        Assembler<'a>: VcmpshMaskSaeEmitter<A, B, C, D>,
42453    {
42454        <Self as VcmpshMaskSaeEmitter<A, B, C, D>>::vcmpsh_mask_sae(self, op0, op1, op2, op3);
42455    }
42456    /// `VCMPSH_SAE`.
42457    ///
42458    /// Supported operand variants:
42459    ///
42460    /// ```text
42461    /// +---+---------------------+
42462    /// | # | Operands            |
42463    /// +---+---------------------+
42464    /// | 1 | KReg, Xmm, Xmm, Imm |
42465    /// +---+---------------------+
42466    /// ```
42467    #[inline]
42468    pub fn vcmpsh_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
42469    where
42470        Assembler<'a>: VcmpshSaeEmitter<A, B, C, D>,
42471    {
42472        <Self as VcmpshSaeEmitter<A, B, C, D>>::vcmpsh_sae(self, op0, op1, op2, op3);
42473    }
42474    /// `VCOMISH`.
42475    ///
42476    /// Supported operand variants:
42477    ///
42478    /// ```text
42479    /// +---+----------+
42480    /// | # | Operands |
42481    /// +---+----------+
42482    /// | 1 | Xmm, Mem |
42483    /// | 2 | Xmm, Xmm |
42484    /// +---+----------+
42485    /// ```
42486    #[inline]
42487    pub fn vcomish<A, B>(&mut self, op0: A, op1: B)
42488    where
42489        Assembler<'a>: VcomishEmitter<A, B>,
42490    {
42491        <Self as VcomishEmitter<A, B>>::vcomish(self, op0, op1);
42492    }
42493    /// `VCOMISH_SAE`.
42494    ///
42495    /// Supported operand variants:
42496    ///
42497    /// ```text
42498    /// +---+----------+
42499    /// | # | Operands |
42500    /// +---+----------+
42501    /// | 1 | Xmm, Xmm |
42502    /// +---+----------+
42503    /// ```
42504    #[inline]
42505    pub fn vcomish_sae<A, B>(&mut self, op0: A, op1: B)
42506    where
42507        Assembler<'a>: VcomishSaeEmitter<A, B>,
42508    {
42509        <Self as VcomishSaeEmitter<A, B>>::vcomish_sae(self, op0, op1);
42510    }
42511    /// `VCVTDQ2PH`.
42512    ///
42513    /// Supported operand variants:
42514    ///
42515    /// ```text
42516    /// +---+----------+
42517    /// | # | Operands |
42518    /// +---+----------+
42519    /// | 1 | Xmm, Mem |
42520    /// | 2 | Xmm, Xmm |
42521    /// | 3 | Xmm, Ymm |
42522    /// | 4 | Ymm, Mem |
42523    /// | 5 | Ymm, Zmm |
42524    /// +---+----------+
42525    /// ```
42526    #[inline]
42527    pub fn vcvtdq2ph<A, B>(&mut self, op0: A, op1: B)
42528    where
42529        Assembler<'a>: Vcvtdq2phEmitter<A, B>,
42530    {
42531        <Self as Vcvtdq2phEmitter<A, B>>::vcvtdq2ph(self, op0, op1);
42532    }
42533    /// `VCVTDQ2PH_ER`.
42534    ///
42535    /// Supported operand variants:
42536    ///
42537    /// ```text
42538    /// +---+----------+
42539    /// | # | Operands |
42540    /// +---+----------+
42541    /// | 1 | Ymm, Zmm |
42542    /// +---+----------+
42543    /// ```
42544    #[inline]
42545    pub fn vcvtdq2ph_er<A, B>(&mut self, op0: A, op1: B)
42546    where
42547        Assembler<'a>: Vcvtdq2phErEmitter<A, B>,
42548    {
42549        <Self as Vcvtdq2phErEmitter<A, B>>::vcvtdq2ph_er(self, op0, op1);
42550    }
42551    /// `VCVTDQ2PH_MASK`.
42552    ///
42553    /// Supported operand variants:
42554    ///
42555    /// ```text
42556    /// +---+----------+
42557    /// | # | Operands |
42558    /// +---+----------+
42559    /// | 1 | Xmm, Mem |
42560    /// | 2 | Xmm, Xmm |
42561    /// | 3 | Xmm, Ymm |
42562    /// | 4 | Ymm, Mem |
42563    /// | 5 | Ymm, Zmm |
42564    /// +---+----------+
42565    /// ```
42566    #[inline]
42567    pub fn vcvtdq2ph_mask<A, B>(&mut self, op0: A, op1: B)
42568    where
42569        Assembler<'a>: Vcvtdq2phMaskEmitter<A, B>,
42570    {
42571        <Self as Vcvtdq2phMaskEmitter<A, B>>::vcvtdq2ph_mask(self, op0, op1);
42572    }
42573    /// `VCVTDQ2PH_MASK_ER`.
42574    ///
42575    /// Supported operand variants:
42576    ///
42577    /// ```text
42578    /// +---+----------+
42579    /// | # | Operands |
42580    /// +---+----------+
42581    /// | 1 | Ymm, Zmm |
42582    /// +---+----------+
42583    /// ```
42584    #[inline]
42585    pub fn vcvtdq2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
42586    where
42587        Assembler<'a>: Vcvtdq2phMaskErEmitter<A, B>,
42588    {
42589        <Self as Vcvtdq2phMaskErEmitter<A, B>>::vcvtdq2ph_mask_er(self, op0, op1);
42590    }
42591    /// `VCVTDQ2PH_MASKZ`.
42592    ///
42593    /// Supported operand variants:
42594    ///
42595    /// ```text
42596    /// +---+----------+
42597    /// | # | Operands |
42598    /// +---+----------+
42599    /// | 1 | Xmm, Mem |
42600    /// | 2 | Xmm, Xmm |
42601    /// | 3 | Xmm, Ymm |
42602    /// | 4 | Ymm, Mem |
42603    /// | 5 | Ymm, Zmm |
42604    /// +---+----------+
42605    /// ```
42606    #[inline]
42607    pub fn vcvtdq2ph_maskz<A, B>(&mut self, op0: A, op1: B)
42608    where
42609        Assembler<'a>: Vcvtdq2phMaskzEmitter<A, B>,
42610    {
42611        <Self as Vcvtdq2phMaskzEmitter<A, B>>::vcvtdq2ph_maskz(self, op0, op1);
42612    }
42613    /// `VCVTDQ2PH_MASKZ_ER`.
42614    ///
42615    /// Supported operand variants:
42616    ///
42617    /// ```text
42618    /// +---+----------+
42619    /// | # | Operands |
42620    /// +---+----------+
42621    /// | 1 | Ymm, Zmm |
42622    /// +---+----------+
42623    /// ```
42624    #[inline]
42625    pub fn vcvtdq2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
42626    where
42627        Assembler<'a>: Vcvtdq2phMaskzErEmitter<A, B>,
42628    {
42629        <Self as Vcvtdq2phMaskzErEmitter<A, B>>::vcvtdq2ph_maskz_er(self, op0, op1);
42630    }
42631    /// `VCVTNEEBF162PS`.
42632    ///
42633    /// Supported operand variants:
42634    ///
42635    /// ```text
42636    /// +---+----------+
42637    /// | # | Operands |
42638    /// +---+----------+
42639    /// | 1 | Xmm, Mem |
42640    /// | 2 | Ymm, Mem |
42641    /// +---+----------+
42642    /// ```
42643    #[inline]
42644    pub fn vcvtneebf162ps<A, B>(&mut self, op0: A, op1: B)
42645    where
42646        Assembler<'a>: Vcvtneebf162psEmitter<A, B>,
42647    {
42648        <Self as Vcvtneebf162psEmitter<A, B>>::vcvtneebf162ps(self, op0, op1);
42649    }
42650    /// `VCVTNEEPH2PS`.
42651    ///
42652    /// Supported operand variants:
42653    ///
42654    /// ```text
42655    /// +---+----------+
42656    /// | # | Operands |
42657    /// +---+----------+
42658    /// | 1 | Xmm, Mem |
42659    /// | 2 | Ymm, Mem |
42660    /// +---+----------+
42661    /// ```
42662    #[inline]
42663    pub fn vcvtneeph2ps<A, B>(&mut self, op0: A, op1: B)
42664    where
42665        Assembler<'a>: Vcvtneeph2psEmitter<A, B>,
42666    {
42667        <Self as Vcvtneeph2psEmitter<A, B>>::vcvtneeph2ps(self, op0, op1);
42668    }
42669    /// `VCVTNEOBF162PS`.
42670    ///
42671    /// Supported operand variants:
42672    ///
42673    /// ```text
42674    /// +---+----------+
42675    /// | # | Operands |
42676    /// +---+----------+
42677    /// | 1 | Xmm, Mem |
42678    /// | 2 | Ymm, Mem |
42679    /// +---+----------+
42680    /// ```
42681    #[inline]
42682    pub fn vcvtneobf162ps<A, B>(&mut self, op0: A, op1: B)
42683    where
42684        Assembler<'a>: Vcvtneobf162psEmitter<A, B>,
42685    {
42686        <Self as Vcvtneobf162psEmitter<A, B>>::vcvtneobf162ps(self, op0, op1);
42687    }
42688    /// `VCVTNEOPH2PS`.
42689    ///
42690    /// Supported operand variants:
42691    ///
42692    /// ```text
42693    /// +---+----------+
42694    /// | # | Operands |
42695    /// +---+----------+
42696    /// | 1 | Xmm, Mem |
42697    /// | 2 | Ymm, Mem |
42698    /// +---+----------+
42699    /// ```
42700    #[inline]
42701    pub fn vcvtneoph2ps<A, B>(&mut self, op0: A, op1: B)
42702    where
42703        Assembler<'a>: Vcvtneoph2psEmitter<A, B>,
42704    {
42705        <Self as Vcvtneoph2psEmitter<A, B>>::vcvtneoph2ps(self, op0, op1);
42706    }
42707    /// `VCVTPD2PH`.
42708    ///
42709    /// Supported operand variants:
42710    ///
42711    /// ```text
42712    /// +---+----------+
42713    /// | # | Operands |
42714    /// +---+----------+
42715    /// | 1 | Xmm, Mem |
42716    /// | 2 | Xmm, Xmm |
42717    /// | 3 | Xmm, Ymm |
42718    /// | 4 | Xmm, Zmm |
42719    /// +---+----------+
42720    /// ```
42721    #[inline]
42722    pub fn vcvtpd2ph<A, B>(&mut self, op0: A, op1: B)
42723    where
42724        Assembler<'a>: Vcvtpd2phEmitter<A, B>,
42725    {
42726        <Self as Vcvtpd2phEmitter<A, B>>::vcvtpd2ph(self, op0, op1);
42727    }
42728    /// `VCVTPD2PH_ER`.
42729    ///
42730    /// Supported operand variants:
42731    ///
42732    /// ```text
42733    /// +---+----------+
42734    /// | # | Operands |
42735    /// +---+----------+
42736    /// | 1 | Xmm, Zmm |
42737    /// +---+----------+
42738    /// ```
42739    #[inline]
42740    pub fn vcvtpd2ph_er<A, B>(&mut self, op0: A, op1: B)
42741    where
42742        Assembler<'a>: Vcvtpd2phErEmitter<A, B>,
42743    {
42744        <Self as Vcvtpd2phErEmitter<A, B>>::vcvtpd2ph_er(self, op0, op1);
42745    }
42746    /// `VCVTPD2PH_MASK`.
42747    ///
42748    /// Supported operand variants:
42749    ///
42750    /// ```text
42751    /// +---+----------+
42752    /// | # | Operands |
42753    /// +---+----------+
42754    /// | 1 | Xmm, Mem |
42755    /// | 2 | Xmm, Xmm |
42756    /// | 3 | Xmm, Ymm |
42757    /// | 4 | Xmm, Zmm |
42758    /// +---+----------+
42759    /// ```
42760    #[inline]
42761    pub fn vcvtpd2ph_mask<A, B>(&mut self, op0: A, op1: B)
42762    where
42763        Assembler<'a>: Vcvtpd2phMaskEmitter<A, B>,
42764    {
42765        <Self as Vcvtpd2phMaskEmitter<A, B>>::vcvtpd2ph_mask(self, op0, op1);
42766    }
42767    /// `VCVTPD2PH_MASK_ER`.
42768    ///
42769    /// Supported operand variants:
42770    ///
42771    /// ```text
42772    /// +---+----------+
42773    /// | # | Operands |
42774    /// +---+----------+
42775    /// | 1 | Xmm, Zmm |
42776    /// +---+----------+
42777    /// ```
42778    #[inline]
42779    pub fn vcvtpd2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
42780    where
42781        Assembler<'a>: Vcvtpd2phMaskErEmitter<A, B>,
42782    {
42783        <Self as Vcvtpd2phMaskErEmitter<A, B>>::vcvtpd2ph_mask_er(self, op0, op1);
42784    }
42785    /// `VCVTPD2PH_MASKZ`.
42786    ///
42787    /// Supported operand variants:
42788    ///
42789    /// ```text
42790    /// +---+----------+
42791    /// | # | Operands |
42792    /// +---+----------+
42793    /// | 1 | Xmm, Mem |
42794    /// | 2 | Xmm, Xmm |
42795    /// | 3 | Xmm, Ymm |
42796    /// | 4 | Xmm, Zmm |
42797    /// +---+----------+
42798    /// ```
42799    #[inline]
42800    pub fn vcvtpd2ph_maskz<A, B>(&mut self, op0: A, op1: B)
42801    where
42802        Assembler<'a>: Vcvtpd2phMaskzEmitter<A, B>,
42803    {
42804        <Self as Vcvtpd2phMaskzEmitter<A, B>>::vcvtpd2ph_maskz(self, op0, op1);
42805    }
42806    /// `VCVTPD2PH_MASKZ_ER`.
42807    ///
42808    /// Supported operand variants:
42809    ///
42810    /// ```text
42811    /// +---+----------+
42812    /// | # | Operands |
42813    /// +---+----------+
42814    /// | 1 | Xmm, Zmm |
42815    /// +---+----------+
42816    /// ```
42817    #[inline]
42818    pub fn vcvtpd2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
42819    where
42820        Assembler<'a>: Vcvtpd2phMaskzErEmitter<A, B>,
42821    {
42822        <Self as Vcvtpd2phMaskzErEmitter<A, B>>::vcvtpd2ph_maskz_er(self, op0, op1);
42823    }
42824    /// `VCVTPH2DQ`.
42825    ///
42826    /// Supported operand variants:
42827    ///
42828    /// ```text
42829    /// +---+----------+
42830    /// | # | Operands |
42831    /// +---+----------+
42832    /// | 1 | Xmm, Mem |
42833    /// | 2 | Xmm, Xmm |
42834    /// | 3 | Ymm, Mem |
42835    /// | 4 | Ymm, Xmm |
42836    /// | 5 | Zmm, Mem |
42837    /// | 6 | Zmm, Ymm |
42838    /// +---+----------+
42839    /// ```
42840    #[inline]
42841    pub fn vcvtph2dq<A, B>(&mut self, op0: A, op1: B)
42842    where
42843        Assembler<'a>: Vcvtph2dqEmitter<A, B>,
42844    {
42845        <Self as Vcvtph2dqEmitter<A, B>>::vcvtph2dq(self, op0, op1);
42846    }
42847    /// `VCVTPH2DQ_ER`.
42848    ///
42849    /// Supported operand variants:
42850    ///
42851    /// ```text
42852    /// +---+----------+
42853    /// | # | Operands |
42854    /// +---+----------+
42855    /// | 1 | Zmm, Ymm |
42856    /// +---+----------+
42857    /// ```
42858    #[inline]
42859    pub fn vcvtph2dq_er<A, B>(&mut self, op0: A, op1: B)
42860    where
42861        Assembler<'a>: Vcvtph2dqErEmitter<A, B>,
42862    {
42863        <Self as Vcvtph2dqErEmitter<A, B>>::vcvtph2dq_er(self, op0, op1);
42864    }
42865    /// `VCVTPH2DQ_MASK`.
42866    ///
42867    /// Supported operand variants:
42868    ///
42869    /// ```text
42870    /// +---+----------+
42871    /// | # | Operands |
42872    /// +---+----------+
42873    /// | 1 | Xmm, Mem |
42874    /// | 2 | Xmm, Xmm |
42875    /// | 3 | Ymm, Mem |
42876    /// | 4 | Ymm, Xmm |
42877    /// | 5 | Zmm, Mem |
42878    /// | 6 | Zmm, Ymm |
42879    /// +---+----------+
42880    /// ```
42881    #[inline]
42882    pub fn vcvtph2dq_mask<A, B>(&mut self, op0: A, op1: B)
42883    where
42884        Assembler<'a>: Vcvtph2dqMaskEmitter<A, B>,
42885    {
42886        <Self as Vcvtph2dqMaskEmitter<A, B>>::vcvtph2dq_mask(self, op0, op1);
42887    }
42888    /// `VCVTPH2DQ_MASK_ER`.
42889    ///
42890    /// Supported operand variants:
42891    ///
42892    /// ```text
42893    /// +---+----------+
42894    /// | # | Operands |
42895    /// +---+----------+
42896    /// | 1 | Zmm, Ymm |
42897    /// +---+----------+
42898    /// ```
42899    #[inline]
42900    pub fn vcvtph2dq_mask_er<A, B>(&mut self, op0: A, op1: B)
42901    where
42902        Assembler<'a>: Vcvtph2dqMaskErEmitter<A, B>,
42903    {
42904        <Self as Vcvtph2dqMaskErEmitter<A, B>>::vcvtph2dq_mask_er(self, op0, op1);
42905    }
42906    /// `VCVTPH2DQ_MASKZ`.
42907    ///
42908    /// Supported operand variants:
42909    ///
42910    /// ```text
42911    /// +---+----------+
42912    /// | # | Operands |
42913    /// +---+----------+
42914    /// | 1 | Xmm, Mem |
42915    /// | 2 | Xmm, Xmm |
42916    /// | 3 | Ymm, Mem |
42917    /// | 4 | Ymm, Xmm |
42918    /// | 5 | Zmm, Mem |
42919    /// | 6 | Zmm, Ymm |
42920    /// +---+----------+
42921    /// ```
42922    #[inline]
42923    pub fn vcvtph2dq_maskz<A, B>(&mut self, op0: A, op1: B)
42924    where
42925        Assembler<'a>: Vcvtph2dqMaskzEmitter<A, B>,
42926    {
42927        <Self as Vcvtph2dqMaskzEmitter<A, B>>::vcvtph2dq_maskz(self, op0, op1);
42928    }
42929    /// `VCVTPH2DQ_MASKZ_ER`.
42930    ///
42931    /// Supported operand variants:
42932    ///
42933    /// ```text
42934    /// +---+----------+
42935    /// | # | Operands |
42936    /// +---+----------+
42937    /// | 1 | Zmm, Ymm |
42938    /// +---+----------+
42939    /// ```
42940    #[inline]
42941    pub fn vcvtph2dq_maskz_er<A, B>(&mut self, op0: A, op1: B)
42942    where
42943        Assembler<'a>: Vcvtph2dqMaskzErEmitter<A, B>,
42944    {
42945        <Self as Vcvtph2dqMaskzErEmitter<A, B>>::vcvtph2dq_maskz_er(self, op0, op1);
42946    }
42947    /// `VCVTPH2PD`.
42948    ///
42949    /// Supported operand variants:
42950    ///
42951    /// ```text
42952    /// +---+----------+
42953    /// | # | Operands |
42954    /// +---+----------+
42955    /// | 1 | Xmm, Mem |
42956    /// | 2 | Xmm, Xmm |
42957    /// | 3 | Ymm, Mem |
42958    /// | 4 | Ymm, Xmm |
42959    /// | 5 | Zmm, Mem |
42960    /// | 6 | Zmm, Xmm |
42961    /// +---+----------+
42962    /// ```
42963    #[inline]
42964    pub fn vcvtph2pd<A, B>(&mut self, op0: A, op1: B)
42965    where
42966        Assembler<'a>: Vcvtph2pdEmitter<A, B>,
42967    {
42968        <Self as Vcvtph2pdEmitter<A, B>>::vcvtph2pd(self, op0, op1);
42969    }
42970    /// `VCVTPH2PD_MASK`.
42971    ///
42972    /// Supported operand variants:
42973    ///
42974    /// ```text
42975    /// +---+----------+
42976    /// | # | Operands |
42977    /// +---+----------+
42978    /// | 1 | Xmm, Mem |
42979    /// | 2 | Xmm, Xmm |
42980    /// | 3 | Ymm, Mem |
42981    /// | 4 | Ymm, Xmm |
42982    /// | 5 | Zmm, Mem |
42983    /// | 6 | Zmm, Xmm |
42984    /// +---+----------+
42985    /// ```
42986    #[inline]
42987    pub fn vcvtph2pd_mask<A, B>(&mut self, op0: A, op1: B)
42988    where
42989        Assembler<'a>: Vcvtph2pdMaskEmitter<A, B>,
42990    {
42991        <Self as Vcvtph2pdMaskEmitter<A, B>>::vcvtph2pd_mask(self, op0, op1);
42992    }
42993    /// `VCVTPH2PD_MASK_SAE`.
42994    ///
42995    /// Supported operand variants:
42996    ///
42997    /// ```text
42998    /// +---+----------+
42999    /// | # | Operands |
43000    /// +---+----------+
43001    /// | 1 | Zmm, Xmm |
43002    /// +---+----------+
43003    /// ```
43004    #[inline]
43005    pub fn vcvtph2pd_mask_sae<A, B>(&mut self, op0: A, op1: B)
43006    where
43007        Assembler<'a>: Vcvtph2pdMaskSaeEmitter<A, B>,
43008    {
43009        <Self as Vcvtph2pdMaskSaeEmitter<A, B>>::vcvtph2pd_mask_sae(self, op0, op1);
43010    }
43011    /// `VCVTPH2PD_MASKZ`.
43012    ///
43013    /// Supported operand variants:
43014    ///
43015    /// ```text
43016    /// +---+----------+
43017    /// | # | Operands |
43018    /// +---+----------+
43019    /// | 1 | Xmm, Mem |
43020    /// | 2 | Xmm, Xmm |
43021    /// | 3 | Ymm, Mem |
43022    /// | 4 | Ymm, Xmm |
43023    /// | 5 | Zmm, Mem |
43024    /// | 6 | Zmm, Xmm |
43025    /// +---+----------+
43026    /// ```
43027    #[inline]
43028    pub fn vcvtph2pd_maskz<A, B>(&mut self, op0: A, op1: B)
43029    where
43030        Assembler<'a>: Vcvtph2pdMaskzEmitter<A, B>,
43031    {
43032        <Self as Vcvtph2pdMaskzEmitter<A, B>>::vcvtph2pd_maskz(self, op0, op1);
43033    }
43034    /// `VCVTPH2PD_MASKZ_SAE`.
43035    ///
43036    /// Supported operand variants:
43037    ///
43038    /// ```text
43039    /// +---+----------+
43040    /// | # | Operands |
43041    /// +---+----------+
43042    /// | 1 | Zmm, Xmm |
43043    /// +---+----------+
43044    /// ```
43045    #[inline]
43046    pub fn vcvtph2pd_maskz_sae<A, B>(&mut self, op0: A, op1: B)
43047    where
43048        Assembler<'a>: Vcvtph2pdMaskzSaeEmitter<A, B>,
43049    {
43050        <Self as Vcvtph2pdMaskzSaeEmitter<A, B>>::vcvtph2pd_maskz_sae(self, op0, op1);
43051    }
43052    /// `VCVTPH2PD_SAE`.
43053    ///
43054    /// Supported operand variants:
43055    ///
43056    /// ```text
43057    /// +---+----------+
43058    /// | # | Operands |
43059    /// +---+----------+
43060    /// | 1 | Zmm, Xmm |
43061    /// +---+----------+
43062    /// ```
43063    #[inline]
43064    pub fn vcvtph2pd_sae<A, B>(&mut self, op0: A, op1: B)
43065    where
43066        Assembler<'a>: Vcvtph2pdSaeEmitter<A, B>,
43067    {
43068        <Self as Vcvtph2pdSaeEmitter<A, B>>::vcvtph2pd_sae(self, op0, op1);
43069    }
43070    /// `VCVTPH2PSX`.
43071    ///
43072    /// Supported operand variants:
43073    ///
43074    /// ```text
43075    /// +---+----------+
43076    /// | # | Operands |
43077    /// +---+----------+
43078    /// | 1 | Xmm, Mem |
43079    /// | 2 | Xmm, Xmm |
43080    /// | 3 | Ymm, Mem |
43081    /// | 4 | Ymm, Xmm |
43082    /// | 5 | Zmm, Mem |
43083    /// | 6 | Zmm, Ymm |
43084    /// +---+----------+
43085    /// ```
43086    #[inline]
43087    pub fn vcvtph2psx<A, B>(&mut self, op0: A, op1: B)
43088    where
43089        Assembler<'a>: Vcvtph2psxEmitter<A, B>,
43090    {
43091        <Self as Vcvtph2psxEmitter<A, B>>::vcvtph2psx(self, op0, op1);
43092    }
43093    /// `VCVTPH2PSX_MASK`.
43094    ///
43095    /// Supported operand variants:
43096    ///
43097    /// ```text
43098    /// +---+----------+
43099    /// | # | Operands |
43100    /// +---+----------+
43101    /// | 1 | Xmm, Mem |
43102    /// | 2 | Xmm, Xmm |
43103    /// | 3 | Ymm, Mem |
43104    /// | 4 | Ymm, Xmm |
43105    /// | 5 | Zmm, Mem |
43106    /// | 6 | Zmm, Ymm |
43107    /// +---+----------+
43108    /// ```
43109    #[inline]
43110    pub fn vcvtph2psx_mask<A, B>(&mut self, op0: A, op1: B)
43111    where
43112        Assembler<'a>: Vcvtph2psxMaskEmitter<A, B>,
43113    {
43114        <Self as Vcvtph2psxMaskEmitter<A, B>>::vcvtph2psx_mask(self, op0, op1);
43115    }
43116    /// `VCVTPH2PSX_MASK_SAE`.
43117    ///
43118    /// Supported operand variants:
43119    ///
43120    /// ```text
43121    /// +---+----------+
43122    /// | # | Operands |
43123    /// +---+----------+
43124    /// | 1 | Zmm, Ymm |
43125    /// +---+----------+
43126    /// ```
43127    #[inline]
43128    pub fn vcvtph2psx_mask_sae<A, B>(&mut self, op0: A, op1: B)
43129    where
43130        Assembler<'a>: Vcvtph2psxMaskSaeEmitter<A, B>,
43131    {
43132        <Self as Vcvtph2psxMaskSaeEmitter<A, B>>::vcvtph2psx_mask_sae(self, op0, op1);
43133    }
43134    /// `VCVTPH2PSX_MASKZ`.
43135    ///
43136    /// Supported operand variants:
43137    ///
43138    /// ```text
43139    /// +---+----------+
43140    /// | # | Operands |
43141    /// +---+----------+
43142    /// | 1 | Xmm, Mem |
43143    /// | 2 | Xmm, Xmm |
43144    /// | 3 | Ymm, Mem |
43145    /// | 4 | Ymm, Xmm |
43146    /// | 5 | Zmm, Mem |
43147    /// | 6 | Zmm, Ymm |
43148    /// +---+----------+
43149    /// ```
43150    #[inline]
43151    pub fn vcvtph2psx_maskz<A, B>(&mut self, op0: A, op1: B)
43152    where
43153        Assembler<'a>: Vcvtph2psxMaskzEmitter<A, B>,
43154    {
43155        <Self as Vcvtph2psxMaskzEmitter<A, B>>::vcvtph2psx_maskz(self, op0, op1);
43156    }
43157    /// `VCVTPH2PSX_MASKZ_SAE`.
43158    ///
43159    /// Supported operand variants:
43160    ///
43161    /// ```text
43162    /// +---+----------+
43163    /// | # | Operands |
43164    /// +---+----------+
43165    /// | 1 | Zmm, Ymm |
43166    /// +---+----------+
43167    /// ```
43168    #[inline]
43169    pub fn vcvtph2psx_maskz_sae<A, B>(&mut self, op0: A, op1: B)
43170    where
43171        Assembler<'a>: Vcvtph2psxMaskzSaeEmitter<A, B>,
43172    {
43173        <Self as Vcvtph2psxMaskzSaeEmitter<A, B>>::vcvtph2psx_maskz_sae(self, op0, op1);
43174    }
43175    /// `VCVTPH2PSX_SAE`.
43176    ///
43177    /// Supported operand variants:
43178    ///
43179    /// ```text
43180    /// +---+----------+
43181    /// | # | Operands |
43182    /// +---+----------+
43183    /// | 1 | Zmm, Ymm |
43184    /// +---+----------+
43185    /// ```
43186    #[inline]
43187    pub fn vcvtph2psx_sae<A, B>(&mut self, op0: A, op1: B)
43188    where
43189        Assembler<'a>: Vcvtph2psxSaeEmitter<A, B>,
43190    {
43191        <Self as Vcvtph2psxSaeEmitter<A, B>>::vcvtph2psx_sae(self, op0, op1);
43192    }
43193    /// `VCVTPH2QQ`.
43194    ///
43195    /// Supported operand variants:
43196    ///
43197    /// ```text
43198    /// +---+----------+
43199    /// | # | Operands |
43200    /// +---+----------+
43201    /// | 1 | Xmm, Mem |
43202    /// | 2 | Xmm, Xmm |
43203    /// | 3 | Ymm, Mem |
43204    /// | 4 | Ymm, Xmm |
43205    /// | 5 | Zmm, Mem |
43206    /// | 6 | Zmm, Xmm |
43207    /// +---+----------+
43208    /// ```
43209    #[inline]
43210    pub fn vcvtph2qq<A, B>(&mut self, op0: A, op1: B)
43211    where
43212        Assembler<'a>: Vcvtph2qqEmitter<A, B>,
43213    {
43214        <Self as Vcvtph2qqEmitter<A, B>>::vcvtph2qq(self, op0, op1);
43215    }
43216    /// `VCVTPH2QQ_ER`.
43217    ///
43218    /// Supported operand variants:
43219    ///
43220    /// ```text
43221    /// +---+----------+
43222    /// | # | Operands |
43223    /// +---+----------+
43224    /// | 1 | Zmm, Xmm |
43225    /// +---+----------+
43226    /// ```
43227    #[inline]
43228    pub fn vcvtph2qq_er<A, B>(&mut self, op0: A, op1: B)
43229    where
43230        Assembler<'a>: Vcvtph2qqErEmitter<A, B>,
43231    {
43232        <Self as Vcvtph2qqErEmitter<A, B>>::vcvtph2qq_er(self, op0, op1);
43233    }
43234    /// `VCVTPH2QQ_MASK`.
43235    ///
43236    /// Supported operand variants:
43237    ///
43238    /// ```text
43239    /// +---+----------+
43240    /// | # | Operands |
43241    /// +---+----------+
43242    /// | 1 | Xmm, Mem |
43243    /// | 2 | Xmm, Xmm |
43244    /// | 3 | Ymm, Mem |
43245    /// | 4 | Ymm, Xmm |
43246    /// | 5 | Zmm, Mem |
43247    /// | 6 | Zmm, Xmm |
43248    /// +---+----------+
43249    /// ```
43250    #[inline]
43251    pub fn vcvtph2qq_mask<A, B>(&mut self, op0: A, op1: B)
43252    where
43253        Assembler<'a>: Vcvtph2qqMaskEmitter<A, B>,
43254    {
43255        <Self as Vcvtph2qqMaskEmitter<A, B>>::vcvtph2qq_mask(self, op0, op1);
43256    }
43257    /// `VCVTPH2QQ_MASK_ER`.
43258    ///
43259    /// Supported operand variants:
43260    ///
43261    /// ```text
43262    /// +---+----------+
43263    /// | # | Operands |
43264    /// +---+----------+
43265    /// | 1 | Zmm, Xmm |
43266    /// +---+----------+
43267    /// ```
43268    #[inline]
43269    pub fn vcvtph2qq_mask_er<A, B>(&mut self, op0: A, op1: B)
43270    where
43271        Assembler<'a>: Vcvtph2qqMaskErEmitter<A, B>,
43272    {
43273        <Self as Vcvtph2qqMaskErEmitter<A, B>>::vcvtph2qq_mask_er(self, op0, op1);
43274    }
43275    /// `VCVTPH2QQ_MASKZ`.
43276    ///
43277    /// Supported operand variants:
43278    ///
43279    /// ```text
43280    /// +---+----------+
43281    /// | # | Operands |
43282    /// +---+----------+
43283    /// | 1 | Xmm, Mem |
43284    /// | 2 | Xmm, Xmm |
43285    /// | 3 | Ymm, Mem |
43286    /// | 4 | Ymm, Xmm |
43287    /// | 5 | Zmm, Mem |
43288    /// | 6 | Zmm, Xmm |
43289    /// +---+----------+
43290    /// ```
43291    #[inline]
43292    pub fn vcvtph2qq_maskz<A, B>(&mut self, op0: A, op1: B)
43293    where
43294        Assembler<'a>: Vcvtph2qqMaskzEmitter<A, B>,
43295    {
43296        <Self as Vcvtph2qqMaskzEmitter<A, B>>::vcvtph2qq_maskz(self, op0, op1);
43297    }
43298    /// `VCVTPH2QQ_MASKZ_ER`.
43299    ///
43300    /// Supported operand variants:
43301    ///
43302    /// ```text
43303    /// +---+----------+
43304    /// | # | Operands |
43305    /// +---+----------+
43306    /// | 1 | Zmm, Xmm |
43307    /// +---+----------+
43308    /// ```
43309    #[inline]
43310    pub fn vcvtph2qq_maskz_er<A, B>(&mut self, op0: A, op1: B)
43311    where
43312        Assembler<'a>: Vcvtph2qqMaskzErEmitter<A, B>,
43313    {
43314        <Self as Vcvtph2qqMaskzErEmitter<A, B>>::vcvtph2qq_maskz_er(self, op0, op1);
43315    }
43316    /// `VCVTPH2UDQ`.
43317    ///
43318    /// Supported operand variants:
43319    ///
43320    /// ```text
43321    /// +---+----------+
43322    /// | # | Operands |
43323    /// +---+----------+
43324    /// | 1 | Xmm, Mem |
43325    /// | 2 | Xmm, Xmm |
43326    /// | 3 | Ymm, Mem |
43327    /// | 4 | Ymm, Xmm |
43328    /// | 5 | Zmm, Mem |
43329    /// | 6 | Zmm, Ymm |
43330    /// +---+----------+
43331    /// ```
43332    #[inline]
43333    pub fn vcvtph2udq<A, B>(&mut self, op0: A, op1: B)
43334    where
43335        Assembler<'a>: Vcvtph2udqEmitter<A, B>,
43336    {
43337        <Self as Vcvtph2udqEmitter<A, B>>::vcvtph2udq(self, op0, op1);
43338    }
43339    /// `VCVTPH2UDQ_ER`.
43340    ///
43341    /// Supported operand variants:
43342    ///
43343    /// ```text
43344    /// +---+----------+
43345    /// | # | Operands |
43346    /// +---+----------+
43347    /// | 1 | Zmm, Ymm |
43348    /// +---+----------+
43349    /// ```
43350    #[inline]
43351    pub fn vcvtph2udq_er<A, B>(&mut self, op0: A, op1: B)
43352    where
43353        Assembler<'a>: Vcvtph2udqErEmitter<A, B>,
43354    {
43355        <Self as Vcvtph2udqErEmitter<A, B>>::vcvtph2udq_er(self, op0, op1);
43356    }
43357    /// `VCVTPH2UDQ_MASK`.
43358    ///
43359    /// Supported operand variants:
43360    ///
43361    /// ```text
43362    /// +---+----------+
43363    /// | # | Operands |
43364    /// +---+----------+
43365    /// | 1 | Xmm, Mem |
43366    /// | 2 | Xmm, Xmm |
43367    /// | 3 | Ymm, Mem |
43368    /// | 4 | Ymm, Xmm |
43369    /// | 5 | Zmm, Mem |
43370    /// | 6 | Zmm, Ymm |
43371    /// +---+----------+
43372    /// ```
43373    #[inline]
43374    pub fn vcvtph2udq_mask<A, B>(&mut self, op0: A, op1: B)
43375    where
43376        Assembler<'a>: Vcvtph2udqMaskEmitter<A, B>,
43377    {
43378        <Self as Vcvtph2udqMaskEmitter<A, B>>::vcvtph2udq_mask(self, op0, op1);
43379    }
43380    /// `VCVTPH2UDQ_MASK_ER`.
43381    ///
43382    /// Supported operand variants:
43383    ///
43384    /// ```text
43385    /// +---+----------+
43386    /// | # | Operands |
43387    /// +---+----------+
43388    /// | 1 | Zmm, Ymm |
43389    /// +---+----------+
43390    /// ```
43391    #[inline]
43392    pub fn vcvtph2udq_mask_er<A, B>(&mut self, op0: A, op1: B)
43393    where
43394        Assembler<'a>: Vcvtph2udqMaskErEmitter<A, B>,
43395    {
43396        <Self as Vcvtph2udqMaskErEmitter<A, B>>::vcvtph2udq_mask_er(self, op0, op1);
43397    }
43398    /// `VCVTPH2UDQ_MASKZ`.
43399    ///
43400    /// Supported operand variants:
43401    ///
43402    /// ```text
43403    /// +---+----------+
43404    /// | # | Operands |
43405    /// +---+----------+
43406    /// | 1 | Xmm, Mem |
43407    /// | 2 | Xmm, Xmm |
43408    /// | 3 | Ymm, Mem |
43409    /// | 4 | Ymm, Xmm |
43410    /// | 5 | Zmm, Mem |
43411    /// | 6 | Zmm, Ymm |
43412    /// +---+----------+
43413    /// ```
43414    #[inline]
43415    pub fn vcvtph2udq_maskz<A, B>(&mut self, op0: A, op1: B)
43416    where
43417        Assembler<'a>: Vcvtph2udqMaskzEmitter<A, B>,
43418    {
43419        <Self as Vcvtph2udqMaskzEmitter<A, B>>::vcvtph2udq_maskz(self, op0, op1);
43420    }
43421    /// `VCVTPH2UDQ_MASKZ_ER`.
43422    ///
43423    /// Supported operand variants:
43424    ///
43425    /// ```text
43426    /// +---+----------+
43427    /// | # | Operands |
43428    /// +---+----------+
43429    /// | 1 | Zmm, Ymm |
43430    /// +---+----------+
43431    /// ```
43432    #[inline]
43433    pub fn vcvtph2udq_maskz_er<A, B>(&mut self, op0: A, op1: B)
43434    where
43435        Assembler<'a>: Vcvtph2udqMaskzErEmitter<A, B>,
43436    {
43437        <Self as Vcvtph2udqMaskzErEmitter<A, B>>::vcvtph2udq_maskz_er(self, op0, op1);
43438    }
43439    /// `VCVTPH2UQQ`.
43440    ///
43441    /// Supported operand variants:
43442    ///
43443    /// ```text
43444    /// +---+----------+
43445    /// | # | Operands |
43446    /// +---+----------+
43447    /// | 1 | Xmm, Mem |
43448    /// | 2 | Xmm, Xmm |
43449    /// | 3 | Ymm, Mem |
43450    /// | 4 | Ymm, Xmm |
43451    /// | 5 | Zmm, Mem |
43452    /// | 6 | Zmm, Xmm |
43453    /// +---+----------+
43454    /// ```
43455    #[inline]
43456    pub fn vcvtph2uqq<A, B>(&mut self, op0: A, op1: B)
43457    where
43458        Assembler<'a>: Vcvtph2uqqEmitter<A, B>,
43459    {
43460        <Self as Vcvtph2uqqEmitter<A, B>>::vcvtph2uqq(self, op0, op1);
43461    }
43462    /// `VCVTPH2UQQ_ER`.
43463    ///
43464    /// Supported operand variants:
43465    ///
43466    /// ```text
43467    /// +---+----------+
43468    /// | # | Operands |
43469    /// +---+----------+
43470    /// | 1 | Zmm, Xmm |
43471    /// +---+----------+
43472    /// ```
43473    #[inline]
43474    pub fn vcvtph2uqq_er<A, B>(&mut self, op0: A, op1: B)
43475    where
43476        Assembler<'a>: Vcvtph2uqqErEmitter<A, B>,
43477    {
43478        <Self as Vcvtph2uqqErEmitter<A, B>>::vcvtph2uqq_er(self, op0, op1);
43479    }
43480    /// `VCVTPH2UQQ_MASK`.
43481    ///
43482    /// Supported operand variants:
43483    ///
43484    /// ```text
43485    /// +---+----------+
43486    /// | # | Operands |
43487    /// +---+----------+
43488    /// | 1 | Xmm, Mem |
43489    /// | 2 | Xmm, Xmm |
43490    /// | 3 | Ymm, Mem |
43491    /// | 4 | Ymm, Xmm |
43492    /// | 5 | Zmm, Mem |
43493    /// | 6 | Zmm, Xmm |
43494    /// +---+----------+
43495    /// ```
43496    #[inline]
43497    pub fn vcvtph2uqq_mask<A, B>(&mut self, op0: A, op1: B)
43498    where
43499        Assembler<'a>: Vcvtph2uqqMaskEmitter<A, B>,
43500    {
43501        <Self as Vcvtph2uqqMaskEmitter<A, B>>::vcvtph2uqq_mask(self, op0, op1);
43502    }
43503    /// `VCVTPH2UQQ_MASK_ER`.
43504    ///
43505    /// Supported operand variants:
43506    ///
43507    /// ```text
43508    /// +---+----------+
43509    /// | # | Operands |
43510    /// +---+----------+
43511    /// | 1 | Zmm, Xmm |
43512    /// +---+----------+
43513    /// ```
43514    #[inline]
43515    pub fn vcvtph2uqq_mask_er<A, B>(&mut self, op0: A, op1: B)
43516    where
43517        Assembler<'a>: Vcvtph2uqqMaskErEmitter<A, B>,
43518    {
43519        <Self as Vcvtph2uqqMaskErEmitter<A, B>>::vcvtph2uqq_mask_er(self, op0, op1);
43520    }
43521    /// `VCVTPH2UQQ_MASKZ`.
43522    ///
43523    /// Supported operand variants:
43524    ///
43525    /// ```text
43526    /// +---+----------+
43527    /// | # | Operands |
43528    /// +---+----------+
43529    /// | 1 | Xmm, Mem |
43530    /// | 2 | Xmm, Xmm |
43531    /// | 3 | Ymm, Mem |
43532    /// | 4 | Ymm, Xmm |
43533    /// | 5 | Zmm, Mem |
43534    /// | 6 | Zmm, Xmm |
43535    /// +---+----------+
43536    /// ```
43537    #[inline]
43538    pub fn vcvtph2uqq_maskz<A, B>(&mut self, op0: A, op1: B)
43539    where
43540        Assembler<'a>: Vcvtph2uqqMaskzEmitter<A, B>,
43541    {
43542        <Self as Vcvtph2uqqMaskzEmitter<A, B>>::vcvtph2uqq_maskz(self, op0, op1);
43543    }
43544    /// `VCVTPH2UQQ_MASKZ_ER`.
43545    ///
43546    /// Supported operand variants:
43547    ///
43548    /// ```text
43549    /// +---+----------+
43550    /// | # | Operands |
43551    /// +---+----------+
43552    /// | 1 | Zmm, Xmm |
43553    /// +---+----------+
43554    /// ```
43555    #[inline]
43556    pub fn vcvtph2uqq_maskz_er<A, B>(&mut self, op0: A, op1: B)
43557    where
43558        Assembler<'a>: Vcvtph2uqqMaskzErEmitter<A, B>,
43559    {
43560        <Self as Vcvtph2uqqMaskzErEmitter<A, B>>::vcvtph2uqq_maskz_er(self, op0, op1);
43561    }
43562    /// `VCVTPH2UW`.
43563    ///
43564    /// Supported operand variants:
43565    ///
43566    /// ```text
43567    /// +---+----------+
43568    /// | # | Operands |
43569    /// +---+----------+
43570    /// | 1 | Xmm, Mem |
43571    /// | 2 | Xmm, Xmm |
43572    /// | 3 | Ymm, Mem |
43573    /// | 4 | Ymm, Ymm |
43574    /// | 5 | Zmm, Mem |
43575    /// | 6 | Zmm, Zmm |
43576    /// +---+----------+
43577    /// ```
43578    #[inline]
43579    pub fn vcvtph2uw<A, B>(&mut self, op0: A, op1: B)
43580    where
43581        Assembler<'a>: Vcvtph2uwEmitter<A, B>,
43582    {
43583        <Self as Vcvtph2uwEmitter<A, B>>::vcvtph2uw(self, op0, op1);
43584    }
43585    /// `VCVTPH2UW_ER`.
43586    ///
43587    /// Supported operand variants:
43588    ///
43589    /// ```text
43590    /// +---+----------+
43591    /// | # | Operands |
43592    /// +---+----------+
43593    /// | 1 | Zmm, Zmm |
43594    /// +---+----------+
43595    /// ```
43596    #[inline]
43597    pub fn vcvtph2uw_er<A, B>(&mut self, op0: A, op1: B)
43598    where
43599        Assembler<'a>: Vcvtph2uwErEmitter<A, B>,
43600    {
43601        <Self as Vcvtph2uwErEmitter<A, B>>::vcvtph2uw_er(self, op0, op1);
43602    }
43603    /// `VCVTPH2UW_MASK`.
43604    ///
43605    /// Supported operand variants:
43606    ///
43607    /// ```text
43608    /// +---+----------+
43609    /// | # | Operands |
43610    /// +---+----------+
43611    /// | 1 | Xmm, Mem |
43612    /// | 2 | Xmm, Xmm |
43613    /// | 3 | Ymm, Mem |
43614    /// | 4 | Ymm, Ymm |
43615    /// | 5 | Zmm, Mem |
43616    /// | 6 | Zmm, Zmm |
43617    /// +---+----------+
43618    /// ```
43619    #[inline]
43620    pub fn vcvtph2uw_mask<A, B>(&mut self, op0: A, op1: B)
43621    where
43622        Assembler<'a>: Vcvtph2uwMaskEmitter<A, B>,
43623    {
43624        <Self as Vcvtph2uwMaskEmitter<A, B>>::vcvtph2uw_mask(self, op0, op1);
43625    }
43626    /// `VCVTPH2UW_MASK_ER`.
43627    ///
43628    /// Supported operand variants:
43629    ///
43630    /// ```text
43631    /// +---+----------+
43632    /// | # | Operands |
43633    /// +---+----------+
43634    /// | 1 | Zmm, Zmm |
43635    /// +---+----------+
43636    /// ```
43637    #[inline]
43638    pub fn vcvtph2uw_mask_er<A, B>(&mut self, op0: A, op1: B)
43639    where
43640        Assembler<'a>: Vcvtph2uwMaskErEmitter<A, B>,
43641    {
43642        <Self as Vcvtph2uwMaskErEmitter<A, B>>::vcvtph2uw_mask_er(self, op0, op1);
43643    }
43644    /// `VCVTPH2UW_MASKZ`.
43645    ///
43646    /// Supported operand variants:
43647    ///
43648    /// ```text
43649    /// +---+----------+
43650    /// | # | Operands |
43651    /// +---+----------+
43652    /// | 1 | Xmm, Mem |
43653    /// | 2 | Xmm, Xmm |
43654    /// | 3 | Ymm, Mem |
43655    /// | 4 | Ymm, Ymm |
43656    /// | 5 | Zmm, Mem |
43657    /// | 6 | Zmm, Zmm |
43658    /// +---+----------+
43659    /// ```
43660    #[inline]
43661    pub fn vcvtph2uw_maskz<A, B>(&mut self, op0: A, op1: B)
43662    where
43663        Assembler<'a>: Vcvtph2uwMaskzEmitter<A, B>,
43664    {
43665        <Self as Vcvtph2uwMaskzEmitter<A, B>>::vcvtph2uw_maskz(self, op0, op1);
43666    }
43667    /// `VCVTPH2UW_MASKZ_ER`.
43668    ///
43669    /// Supported operand variants:
43670    ///
43671    /// ```text
43672    /// +---+----------+
43673    /// | # | Operands |
43674    /// +---+----------+
43675    /// | 1 | Zmm, Zmm |
43676    /// +---+----------+
43677    /// ```
43678    #[inline]
43679    pub fn vcvtph2uw_maskz_er<A, B>(&mut self, op0: A, op1: B)
43680    where
43681        Assembler<'a>: Vcvtph2uwMaskzErEmitter<A, B>,
43682    {
43683        <Self as Vcvtph2uwMaskzErEmitter<A, B>>::vcvtph2uw_maskz_er(self, op0, op1);
43684    }
43685    /// `VCVTPH2W`.
43686    ///
43687    /// Supported operand variants:
43688    ///
43689    /// ```text
43690    /// +---+----------+
43691    /// | # | Operands |
43692    /// +---+----------+
43693    /// | 1 | Xmm, Mem |
43694    /// | 2 | Xmm, Xmm |
43695    /// | 3 | Ymm, Mem |
43696    /// | 4 | Ymm, Ymm |
43697    /// | 5 | Zmm, Mem |
43698    /// | 6 | Zmm, Zmm |
43699    /// +---+----------+
43700    /// ```
43701    #[inline]
43702    pub fn vcvtph2w<A, B>(&mut self, op0: A, op1: B)
43703    where
43704        Assembler<'a>: Vcvtph2wEmitter<A, B>,
43705    {
43706        <Self as Vcvtph2wEmitter<A, B>>::vcvtph2w(self, op0, op1);
43707    }
43708    /// `VCVTPH2W_ER`.
43709    ///
43710    /// Supported operand variants:
43711    ///
43712    /// ```text
43713    /// +---+----------+
43714    /// | # | Operands |
43715    /// +---+----------+
43716    /// | 1 | Zmm, Zmm |
43717    /// +---+----------+
43718    /// ```
43719    #[inline]
43720    pub fn vcvtph2w_er<A, B>(&mut self, op0: A, op1: B)
43721    where
43722        Assembler<'a>: Vcvtph2wErEmitter<A, B>,
43723    {
43724        <Self as Vcvtph2wErEmitter<A, B>>::vcvtph2w_er(self, op0, op1);
43725    }
43726    /// `VCVTPH2W_MASK`.
43727    ///
43728    /// Supported operand variants:
43729    ///
43730    /// ```text
43731    /// +---+----------+
43732    /// | # | Operands |
43733    /// +---+----------+
43734    /// | 1 | Xmm, Mem |
43735    /// | 2 | Xmm, Xmm |
43736    /// | 3 | Ymm, Mem |
43737    /// | 4 | Ymm, Ymm |
43738    /// | 5 | Zmm, Mem |
43739    /// | 6 | Zmm, Zmm |
43740    /// +---+----------+
43741    /// ```
43742    #[inline]
43743    pub fn vcvtph2w_mask<A, B>(&mut self, op0: A, op1: B)
43744    where
43745        Assembler<'a>: Vcvtph2wMaskEmitter<A, B>,
43746    {
43747        <Self as Vcvtph2wMaskEmitter<A, B>>::vcvtph2w_mask(self, op0, op1);
43748    }
43749    /// `VCVTPH2W_MASK_ER`.
43750    ///
43751    /// Supported operand variants:
43752    ///
43753    /// ```text
43754    /// +---+----------+
43755    /// | # | Operands |
43756    /// +---+----------+
43757    /// | 1 | Zmm, Zmm |
43758    /// +---+----------+
43759    /// ```
43760    #[inline]
43761    pub fn vcvtph2w_mask_er<A, B>(&mut self, op0: A, op1: B)
43762    where
43763        Assembler<'a>: Vcvtph2wMaskErEmitter<A, B>,
43764    {
43765        <Self as Vcvtph2wMaskErEmitter<A, B>>::vcvtph2w_mask_er(self, op0, op1);
43766    }
43767    /// `VCVTPH2W_MASKZ`.
43768    ///
43769    /// Supported operand variants:
43770    ///
43771    /// ```text
43772    /// +---+----------+
43773    /// | # | Operands |
43774    /// +---+----------+
43775    /// | 1 | Xmm, Mem |
43776    /// | 2 | Xmm, Xmm |
43777    /// | 3 | Ymm, Mem |
43778    /// | 4 | Ymm, Ymm |
43779    /// | 5 | Zmm, Mem |
43780    /// | 6 | Zmm, Zmm |
43781    /// +---+----------+
43782    /// ```
43783    #[inline]
43784    pub fn vcvtph2w_maskz<A, B>(&mut self, op0: A, op1: B)
43785    where
43786        Assembler<'a>: Vcvtph2wMaskzEmitter<A, B>,
43787    {
43788        <Self as Vcvtph2wMaskzEmitter<A, B>>::vcvtph2w_maskz(self, op0, op1);
43789    }
43790    /// `VCVTPH2W_MASKZ_ER`.
43791    ///
43792    /// Supported operand variants:
43793    ///
43794    /// ```text
43795    /// +---+----------+
43796    /// | # | Operands |
43797    /// +---+----------+
43798    /// | 1 | Zmm, Zmm |
43799    /// +---+----------+
43800    /// ```
43801    #[inline]
43802    pub fn vcvtph2w_maskz_er<A, B>(&mut self, op0: A, op1: B)
43803    where
43804        Assembler<'a>: Vcvtph2wMaskzErEmitter<A, B>,
43805    {
43806        <Self as Vcvtph2wMaskzErEmitter<A, B>>::vcvtph2w_maskz_er(self, op0, op1);
43807    }
43808    /// `VCVTPS2PHX`.
43809    ///
43810    /// Supported operand variants:
43811    ///
43812    /// ```text
43813    /// +---+----------+
43814    /// | # | Operands |
43815    /// +---+----------+
43816    /// | 1 | Xmm, Mem |
43817    /// | 2 | Xmm, Xmm |
43818    /// | 3 | Xmm, Ymm |
43819    /// | 4 | Ymm, Mem |
43820    /// | 5 | Ymm, Zmm |
43821    /// +---+----------+
43822    /// ```
43823    #[inline]
43824    pub fn vcvtps2phx<A, B>(&mut self, op0: A, op1: B)
43825    where
43826        Assembler<'a>: Vcvtps2phxEmitter<A, B>,
43827    {
43828        <Self as Vcvtps2phxEmitter<A, B>>::vcvtps2phx(self, op0, op1);
43829    }
43830    /// `VCVTPS2PHX_ER`.
43831    ///
43832    /// Supported operand variants:
43833    ///
43834    /// ```text
43835    /// +---+----------+
43836    /// | # | Operands |
43837    /// +---+----------+
43838    /// | 1 | Ymm, Zmm |
43839    /// +---+----------+
43840    /// ```
43841    #[inline]
43842    pub fn vcvtps2phx_er<A, B>(&mut self, op0: A, op1: B)
43843    where
43844        Assembler<'a>: Vcvtps2phxErEmitter<A, B>,
43845    {
43846        <Self as Vcvtps2phxErEmitter<A, B>>::vcvtps2phx_er(self, op0, op1);
43847    }
43848    /// `VCVTPS2PHX_MASK`.
43849    ///
43850    /// Supported operand variants:
43851    ///
43852    /// ```text
43853    /// +---+----------+
43854    /// | # | Operands |
43855    /// +---+----------+
43856    /// | 1 | Xmm, Mem |
43857    /// | 2 | Xmm, Xmm |
43858    /// | 3 | Xmm, Ymm |
43859    /// | 4 | Ymm, Mem |
43860    /// | 5 | Ymm, Zmm |
43861    /// +---+----------+
43862    /// ```
43863    #[inline]
43864    pub fn vcvtps2phx_mask<A, B>(&mut self, op0: A, op1: B)
43865    where
43866        Assembler<'a>: Vcvtps2phxMaskEmitter<A, B>,
43867    {
43868        <Self as Vcvtps2phxMaskEmitter<A, B>>::vcvtps2phx_mask(self, op0, op1);
43869    }
43870    /// `VCVTPS2PHX_MASK_ER`.
43871    ///
43872    /// Supported operand variants:
43873    ///
43874    /// ```text
43875    /// +---+----------+
43876    /// | # | Operands |
43877    /// +---+----------+
43878    /// | 1 | Ymm, Zmm |
43879    /// +---+----------+
43880    /// ```
43881    #[inline]
43882    pub fn vcvtps2phx_mask_er<A, B>(&mut self, op0: A, op1: B)
43883    where
43884        Assembler<'a>: Vcvtps2phxMaskErEmitter<A, B>,
43885    {
43886        <Self as Vcvtps2phxMaskErEmitter<A, B>>::vcvtps2phx_mask_er(self, op0, op1);
43887    }
43888    /// `VCVTPS2PHX_MASKZ`.
43889    ///
43890    /// Supported operand variants:
43891    ///
43892    /// ```text
43893    /// +---+----------+
43894    /// | # | Operands |
43895    /// +---+----------+
43896    /// | 1 | Xmm, Mem |
43897    /// | 2 | Xmm, Xmm |
43898    /// | 3 | Xmm, Ymm |
43899    /// | 4 | Ymm, Mem |
43900    /// | 5 | Ymm, Zmm |
43901    /// +---+----------+
43902    /// ```
43903    #[inline]
43904    pub fn vcvtps2phx_maskz<A, B>(&mut self, op0: A, op1: B)
43905    where
43906        Assembler<'a>: Vcvtps2phxMaskzEmitter<A, B>,
43907    {
43908        <Self as Vcvtps2phxMaskzEmitter<A, B>>::vcvtps2phx_maskz(self, op0, op1);
43909    }
43910    /// `VCVTPS2PHX_MASKZ_ER`.
43911    ///
43912    /// Supported operand variants:
43913    ///
43914    /// ```text
43915    /// +---+----------+
43916    /// | # | Operands |
43917    /// +---+----------+
43918    /// | 1 | Ymm, Zmm |
43919    /// +---+----------+
43920    /// ```
43921    #[inline]
43922    pub fn vcvtps2phx_maskz_er<A, B>(&mut self, op0: A, op1: B)
43923    where
43924        Assembler<'a>: Vcvtps2phxMaskzErEmitter<A, B>,
43925    {
43926        <Self as Vcvtps2phxMaskzErEmitter<A, B>>::vcvtps2phx_maskz_er(self, op0, op1);
43927    }
43928    /// `VCVTQQ2PH`.
43929    ///
43930    /// Supported operand variants:
43931    ///
43932    /// ```text
43933    /// +---+----------+
43934    /// | # | Operands |
43935    /// +---+----------+
43936    /// | 1 | Xmm, Mem |
43937    /// | 2 | Xmm, Xmm |
43938    /// | 3 | Xmm, Ymm |
43939    /// | 4 | Xmm, Zmm |
43940    /// +---+----------+
43941    /// ```
43942    #[inline]
43943    pub fn vcvtqq2ph<A, B>(&mut self, op0: A, op1: B)
43944    where
43945        Assembler<'a>: Vcvtqq2phEmitter<A, B>,
43946    {
43947        <Self as Vcvtqq2phEmitter<A, B>>::vcvtqq2ph(self, op0, op1);
43948    }
43949    /// `VCVTQQ2PH_ER`.
43950    ///
43951    /// Supported operand variants:
43952    ///
43953    /// ```text
43954    /// +---+----------+
43955    /// | # | Operands |
43956    /// +---+----------+
43957    /// | 1 | Xmm, Zmm |
43958    /// +---+----------+
43959    /// ```
43960    #[inline]
43961    pub fn vcvtqq2ph_er<A, B>(&mut self, op0: A, op1: B)
43962    where
43963        Assembler<'a>: Vcvtqq2phErEmitter<A, B>,
43964    {
43965        <Self as Vcvtqq2phErEmitter<A, B>>::vcvtqq2ph_er(self, op0, op1);
43966    }
43967    /// `VCVTQQ2PH_MASK`.
43968    ///
43969    /// Supported operand variants:
43970    ///
43971    /// ```text
43972    /// +---+----------+
43973    /// | # | Operands |
43974    /// +---+----------+
43975    /// | 1 | Xmm, Mem |
43976    /// | 2 | Xmm, Xmm |
43977    /// | 3 | Xmm, Ymm |
43978    /// | 4 | Xmm, Zmm |
43979    /// +---+----------+
43980    /// ```
43981    #[inline]
43982    pub fn vcvtqq2ph_mask<A, B>(&mut self, op0: A, op1: B)
43983    where
43984        Assembler<'a>: Vcvtqq2phMaskEmitter<A, B>,
43985    {
43986        <Self as Vcvtqq2phMaskEmitter<A, B>>::vcvtqq2ph_mask(self, op0, op1);
43987    }
43988    /// `VCVTQQ2PH_MASK_ER`.
43989    ///
43990    /// Supported operand variants:
43991    ///
43992    /// ```text
43993    /// +---+----------+
43994    /// | # | Operands |
43995    /// +---+----------+
43996    /// | 1 | Xmm, Zmm |
43997    /// +---+----------+
43998    /// ```
43999    #[inline]
44000    pub fn vcvtqq2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
44001    where
44002        Assembler<'a>: Vcvtqq2phMaskErEmitter<A, B>,
44003    {
44004        <Self as Vcvtqq2phMaskErEmitter<A, B>>::vcvtqq2ph_mask_er(self, op0, op1);
44005    }
44006    /// `VCVTQQ2PH_MASKZ`.
44007    ///
44008    /// Supported operand variants:
44009    ///
44010    /// ```text
44011    /// +---+----------+
44012    /// | # | Operands |
44013    /// +---+----------+
44014    /// | 1 | Xmm, Mem |
44015    /// | 2 | Xmm, Xmm |
44016    /// | 3 | Xmm, Ymm |
44017    /// | 4 | Xmm, Zmm |
44018    /// +---+----------+
44019    /// ```
44020    #[inline]
44021    pub fn vcvtqq2ph_maskz<A, B>(&mut self, op0: A, op1: B)
44022    where
44023        Assembler<'a>: Vcvtqq2phMaskzEmitter<A, B>,
44024    {
44025        <Self as Vcvtqq2phMaskzEmitter<A, B>>::vcvtqq2ph_maskz(self, op0, op1);
44026    }
44027    /// `VCVTQQ2PH_MASKZ_ER`.
44028    ///
44029    /// Supported operand variants:
44030    ///
44031    /// ```text
44032    /// +---+----------+
44033    /// | # | Operands |
44034    /// +---+----------+
44035    /// | 1 | Xmm, Zmm |
44036    /// +---+----------+
44037    /// ```
44038    #[inline]
44039    pub fn vcvtqq2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
44040    where
44041        Assembler<'a>: Vcvtqq2phMaskzErEmitter<A, B>,
44042    {
44043        <Self as Vcvtqq2phMaskzErEmitter<A, B>>::vcvtqq2ph_maskz_er(self, op0, op1);
44044    }
44045    /// `VCVTSD2SH`.
44046    ///
44047    /// Supported operand variants:
44048    ///
44049    /// ```text
44050    /// +---+---------------+
44051    /// | # | Operands      |
44052    /// +---+---------------+
44053    /// | 1 | Xmm, Xmm, Mem |
44054    /// | 2 | Xmm, Xmm, Xmm |
44055    /// +---+---------------+
44056    /// ```
44057    #[inline]
44058    pub fn vcvtsd2sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44059    where
44060        Assembler<'a>: Vcvtsd2shEmitter<A, B, C>,
44061    {
44062        <Self as Vcvtsd2shEmitter<A, B, C>>::vcvtsd2sh(self, op0, op1, op2);
44063    }
44064    /// `VCVTSD2SH_ER`.
44065    ///
44066    /// Supported operand variants:
44067    ///
44068    /// ```text
44069    /// +---+---------------+
44070    /// | # | Operands      |
44071    /// +---+---------------+
44072    /// | 1 | Xmm, Xmm, Xmm |
44073    /// +---+---------------+
44074    /// ```
44075    #[inline]
44076    pub fn vcvtsd2sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44077    where
44078        Assembler<'a>: Vcvtsd2shErEmitter<A, B, C>,
44079    {
44080        <Self as Vcvtsd2shErEmitter<A, B, C>>::vcvtsd2sh_er(self, op0, op1, op2);
44081    }
44082    /// `VCVTSD2SH_MASK`.
44083    ///
44084    /// Supported operand variants:
44085    ///
44086    /// ```text
44087    /// +---+---------------+
44088    /// | # | Operands      |
44089    /// +---+---------------+
44090    /// | 1 | Xmm, Xmm, Mem |
44091    /// | 2 | Xmm, Xmm, Xmm |
44092    /// +---+---------------+
44093    /// ```
44094    #[inline]
44095    pub fn vcvtsd2sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44096    where
44097        Assembler<'a>: Vcvtsd2shMaskEmitter<A, B, C>,
44098    {
44099        <Self as Vcvtsd2shMaskEmitter<A, B, C>>::vcvtsd2sh_mask(self, op0, op1, op2);
44100    }
44101    /// `VCVTSD2SH_MASK_ER`.
44102    ///
44103    /// Supported operand variants:
44104    ///
44105    /// ```text
44106    /// +---+---------------+
44107    /// | # | Operands      |
44108    /// +---+---------------+
44109    /// | 1 | Xmm, Xmm, Xmm |
44110    /// +---+---------------+
44111    /// ```
44112    #[inline]
44113    pub fn vcvtsd2sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44114    where
44115        Assembler<'a>: Vcvtsd2shMaskErEmitter<A, B, C>,
44116    {
44117        <Self as Vcvtsd2shMaskErEmitter<A, B, C>>::vcvtsd2sh_mask_er(self, op0, op1, op2);
44118    }
44119    /// `VCVTSD2SH_MASKZ`.
44120    ///
44121    /// Supported operand variants:
44122    ///
44123    /// ```text
44124    /// +---+---------------+
44125    /// | # | Operands      |
44126    /// +---+---------------+
44127    /// | 1 | Xmm, Xmm, Mem |
44128    /// | 2 | Xmm, Xmm, Xmm |
44129    /// +---+---------------+
44130    /// ```
44131    #[inline]
44132    pub fn vcvtsd2sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44133    where
44134        Assembler<'a>: Vcvtsd2shMaskzEmitter<A, B, C>,
44135    {
44136        <Self as Vcvtsd2shMaskzEmitter<A, B, C>>::vcvtsd2sh_maskz(self, op0, op1, op2);
44137    }
44138    /// `VCVTSD2SH_MASKZ_ER`.
44139    ///
44140    /// Supported operand variants:
44141    ///
44142    /// ```text
44143    /// +---+---------------+
44144    /// | # | Operands      |
44145    /// +---+---------------+
44146    /// | 1 | Xmm, Xmm, Xmm |
44147    /// +---+---------------+
44148    /// ```
44149    #[inline]
44150    pub fn vcvtsd2sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44151    where
44152        Assembler<'a>: Vcvtsd2shMaskzErEmitter<A, B, C>,
44153    {
44154        <Self as Vcvtsd2shMaskzErEmitter<A, B, C>>::vcvtsd2sh_maskz_er(self, op0, op1, op2);
44155    }
44156    /// `VCVTSH2SD`.
44157    ///
44158    /// Supported operand variants:
44159    ///
44160    /// ```text
44161    /// +---+---------------+
44162    /// | # | Operands      |
44163    /// +---+---------------+
44164    /// | 1 | Xmm, Xmm, Mem |
44165    /// | 2 | Xmm, Xmm, Xmm |
44166    /// +---+---------------+
44167    /// ```
44168    #[inline]
44169    pub fn vcvtsh2sd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44170    where
44171        Assembler<'a>: Vcvtsh2sdEmitter<A, B, C>,
44172    {
44173        <Self as Vcvtsh2sdEmitter<A, B, C>>::vcvtsh2sd(self, op0, op1, op2);
44174    }
44175    /// `VCVTSH2SD_MASK`.
44176    ///
44177    /// Supported operand variants:
44178    ///
44179    /// ```text
44180    /// +---+---------------+
44181    /// | # | Operands      |
44182    /// +---+---------------+
44183    /// | 1 | Xmm, Xmm, Mem |
44184    /// | 2 | Xmm, Xmm, Xmm |
44185    /// +---+---------------+
44186    /// ```
44187    #[inline]
44188    pub fn vcvtsh2sd_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44189    where
44190        Assembler<'a>: Vcvtsh2sdMaskEmitter<A, B, C>,
44191    {
44192        <Self as Vcvtsh2sdMaskEmitter<A, B, C>>::vcvtsh2sd_mask(self, op0, op1, op2);
44193    }
44194    /// `VCVTSH2SD_MASK_SAE`.
44195    ///
44196    /// Supported operand variants:
44197    ///
44198    /// ```text
44199    /// +---+---------------+
44200    /// | # | Operands      |
44201    /// +---+---------------+
44202    /// | 1 | Xmm, Xmm, Xmm |
44203    /// +---+---------------+
44204    /// ```
44205    #[inline]
44206    pub fn vcvtsh2sd_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44207    where
44208        Assembler<'a>: Vcvtsh2sdMaskSaeEmitter<A, B, C>,
44209    {
44210        <Self as Vcvtsh2sdMaskSaeEmitter<A, B, C>>::vcvtsh2sd_mask_sae(self, op0, op1, op2);
44211    }
44212    /// `VCVTSH2SD_MASKZ`.
44213    ///
44214    /// Supported operand variants:
44215    ///
44216    /// ```text
44217    /// +---+---------------+
44218    /// | # | Operands      |
44219    /// +---+---------------+
44220    /// | 1 | Xmm, Xmm, Mem |
44221    /// | 2 | Xmm, Xmm, Xmm |
44222    /// +---+---------------+
44223    /// ```
44224    #[inline]
44225    pub fn vcvtsh2sd_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44226    where
44227        Assembler<'a>: Vcvtsh2sdMaskzEmitter<A, B, C>,
44228    {
44229        <Self as Vcvtsh2sdMaskzEmitter<A, B, C>>::vcvtsh2sd_maskz(self, op0, op1, op2);
44230    }
44231    /// `VCVTSH2SD_MASKZ_SAE`.
44232    ///
44233    /// Supported operand variants:
44234    ///
44235    /// ```text
44236    /// +---+---------------+
44237    /// | # | Operands      |
44238    /// +---+---------------+
44239    /// | 1 | Xmm, Xmm, Xmm |
44240    /// +---+---------------+
44241    /// ```
44242    #[inline]
44243    pub fn vcvtsh2sd_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44244    where
44245        Assembler<'a>: Vcvtsh2sdMaskzSaeEmitter<A, B, C>,
44246    {
44247        <Self as Vcvtsh2sdMaskzSaeEmitter<A, B, C>>::vcvtsh2sd_maskz_sae(self, op0, op1, op2);
44248    }
44249    /// `VCVTSH2SD_SAE`.
44250    ///
44251    /// Supported operand variants:
44252    ///
44253    /// ```text
44254    /// +---+---------------+
44255    /// | # | Operands      |
44256    /// +---+---------------+
44257    /// | 1 | Xmm, Xmm, Xmm |
44258    /// +---+---------------+
44259    /// ```
44260    #[inline]
44261    pub fn vcvtsh2sd_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44262    where
44263        Assembler<'a>: Vcvtsh2sdSaeEmitter<A, B, C>,
44264    {
44265        <Self as Vcvtsh2sdSaeEmitter<A, B, C>>::vcvtsh2sd_sae(self, op0, op1, op2);
44266    }
44267    /// `VCVTSH2SI`.
44268    ///
44269    /// Supported operand variants:
44270    ///
44271    /// ```text
44272    /// +---+----------+
44273    /// | # | Operands |
44274    /// +---+----------+
44275    /// | 1 | Gpd, Mem |
44276    /// | 2 | Gpd, Xmm |
44277    /// | 3 | Gpq, Mem |
44278    /// | 4 | Gpq, Xmm |
44279    /// +---+----------+
44280    /// ```
44281    #[inline]
44282    pub fn vcvtsh2si<A, B>(&mut self, op0: A, op1: B)
44283    where
44284        Assembler<'a>: Vcvtsh2siEmitter<A, B>,
44285    {
44286        <Self as Vcvtsh2siEmitter<A, B>>::vcvtsh2si(self, op0, op1);
44287    }
44288    /// `VCVTSH2SI_ER`.
44289    ///
44290    /// Supported operand variants:
44291    ///
44292    /// ```text
44293    /// +---+----------+
44294    /// | # | Operands |
44295    /// +---+----------+
44296    /// | 1 | Gpd, Xmm |
44297    /// | 2 | Gpq, Xmm |
44298    /// +---+----------+
44299    /// ```
44300    #[inline]
44301    pub fn vcvtsh2si_er<A, B>(&mut self, op0: A, op1: B)
44302    where
44303        Assembler<'a>: Vcvtsh2siErEmitter<A, B>,
44304    {
44305        <Self as Vcvtsh2siErEmitter<A, B>>::vcvtsh2si_er(self, op0, op1);
44306    }
44307    /// `VCVTSH2SS`.
44308    ///
44309    /// Supported operand variants:
44310    ///
44311    /// ```text
44312    /// +---+---------------+
44313    /// | # | Operands      |
44314    /// +---+---------------+
44315    /// | 1 | Xmm, Xmm, Mem |
44316    /// | 2 | Xmm, Xmm, Xmm |
44317    /// +---+---------------+
44318    /// ```
44319    #[inline]
44320    pub fn vcvtsh2ss<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44321    where
44322        Assembler<'a>: Vcvtsh2ssEmitter<A, B, C>,
44323    {
44324        <Self as Vcvtsh2ssEmitter<A, B, C>>::vcvtsh2ss(self, op0, op1, op2);
44325    }
44326    /// `VCVTSH2SS_MASK`.
44327    ///
44328    /// Supported operand variants:
44329    ///
44330    /// ```text
44331    /// +---+---------------+
44332    /// | # | Operands      |
44333    /// +---+---------------+
44334    /// | 1 | Xmm, Xmm, Mem |
44335    /// | 2 | Xmm, Xmm, Xmm |
44336    /// +---+---------------+
44337    /// ```
44338    #[inline]
44339    pub fn vcvtsh2ss_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44340    where
44341        Assembler<'a>: Vcvtsh2ssMaskEmitter<A, B, C>,
44342    {
44343        <Self as Vcvtsh2ssMaskEmitter<A, B, C>>::vcvtsh2ss_mask(self, op0, op1, op2);
44344    }
44345    /// `VCVTSH2SS_MASK_SAE`.
44346    ///
44347    /// Supported operand variants:
44348    ///
44349    /// ```text
44350    /// +---+---------------+
44351    /// | # | Operands      |
44352    /// +---+---------------+
44353    /// | 1 | Xmm, Xmm, Xmm |
44354    /// +---+---------------+
44355    /// ```
44356    #[inline]
44357    pub fn vcvtsh2ss_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44358    where
44359        Assembler<'a>: Vcvtsh2ssMaskSaeEmitter<A, B, C>,
44360    {
44361        <Self as Vcvtsh2ssMaskSaeEmitter<A, B, C>>::vcvtsh2ss_mask_sae(self, op0, op1, op2);
44362    }
44363    /// `VCVTSH2SS_MASKZ`.
44364    ///
44365    /// Supported operand variants:
44366    ///
44367    /// ```text
44368    /// +---+---------------+
44369    /// | # | Operands      |
44370    /// +---+---------------+
44371    /// | 1 | Xmm, Xmm, Mem |
44372    /// | 2 | Xmm, Xmm, Xmm |
44373    /// +---+---------------+
44374    /// ```
44375    #[inline]
44376    pub fn vcvtsh2ss_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44377    where
44378        Assembler<'a>: Vcvtsh2ssMaskzEmitter<A, B, C>,
44379    {
44380        <Self as Vcvtsh2ssMaskzEmitter<A, B, C>>::vcvtsh2ss_maskz(self, op0, op1, op2);
44381    }
44382    /// `VCVTSH2SS_MASKZ_SAE`.
44383    ///
44384    /// Supported operand variants:
44385    ///
44386    /// ```text
44387    /// +---+---------------+
44388    /// | # | Operands      |
44389    /// +---+---------------+
44390    /// | 1 | Xmm, Xmm, Xmm |
44391    /// +---+---------------+
44392    /// ```
44393    #[inline]
44394    pub fn vcvtsh2ss_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44395    where
44396        Assembler<'a>: Vcvtsh2ssMaskzSaeEmitter<A, B, C>,
44397    {
44398        <Self as Vcvtsh2ssMaskzSaeEmitter<A, B, C>>::vcvtsh2ss_maskz_sae(self, op0, op1, op2);
44399    }
44400    /// `VCVTSH2SS_SAE`.
44401    ///
44402    /// Supported operand variants:
44403    ///
44404    /// ```text
44405    /// +---+---------------+
44406    /// | # | Operands      |
44407    /// +---+---------------+
44408    /// | 1 | Xmm, Xmm, Xmm |
44409    /// +---+---------------+
44410    /// ```
44411    #[inline]
44412    pub fn vcvtsh2ss_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44413    where
44414        Assembler<'a>: Vcvtsh2ssSaeEmitter<A, B, C>,
44415    {
44416        <Self as Vcvtsh2ssSaeEmitter<A, B, C>>::vcvtsh2ss_sae(self, op0, op1, op2);
44417    }
44418    /// `VCVTSH2USI`.
44419    ///
44420    /// Supported operand variants:
44421    ///
44422    /// ```text
44423    /// +---+----------+
44424    /// | # | Operands |
44425    /// +---+----------+
44426    /// | 1 | Gpd, Mem |
44427    /// | 2 | Gpd, Xmm |
44428    /// | 3 | Gpq, Mem |
44429    /// | 4 | Gpq, Xmm |
44430    /// +---+----------+
44431    /// ```
44432    #[inline]
44433    pub fn vcvtsh2usi<A, B>(&mut self, op0: A, op1: B)
44434    where
44435        Assembler<'a>: Vcvtsh2usiEmitter<A, B>,
44436    {
44437        <Self as Vcvtsh2usiEmitter<A, B>>::vcvtsh2usi(self, op0, op1);
44438    }
44439    /// `VCVTSH2USI_ER`.
44440    ///
44441    /// Supported operand variants:
44442    ///
44443    /// ```text
44444    /// +---+----------+
44445    /// | # | Operands |
44446    /// +---+----------+
44447    /// | 1 | Gpd, Xmm |
44448    /// | 2 | Gpq, Xmm |
44449    /// +---+----------+
44450    /// ```
44451    #[inline]
44452    pub fn vcvtsh2usi_er<A, B>(&mut self, op0: A, op1: B)
44453    where
44454        Assembler<'a>: Vcvtsh2usiErEmitter<A, B>,
44455    {
44456        <Self as Vcvtsh2usiErEmitter<A, B>>::vcvtsh2usi_er(self, op0, op1);
44457    }
44458    /// `VCVTSI2SH`.
44459    ///
44460    /// Supported operand variants:
44461    ///
44462    /// ```text
44463    /// +---+---------------+
44464    /// | # | Operands      |
44465    /// +---+---------------+
44466    /// | 1 | Xmm, Xmm, Gpd |
44467    /// | 2 | Xmm, Xmm, Gpq |
44468    /// | 3 | Xmm, Xmm, Mem |
44469    /// +---+---------------+
44470    /// ```
44471    #[inline]
44472    pub fn vcvtsi2sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44473    where
44474        Assembler<'a>: Vcvtsi2shEmitter<A, B, C>,
44475    {
44476        <Self as Vcvtsi2shEmitter<A, B, C>>::vcvtsi2sh(self, op0, op1, op2);
44477    }
44478    /// `VCVTSI2SH_ER`.
44479    ///
44480    /// Supported operand variants:
44481    ///
44482    /// ```text
44483    /// +---+---------------+
44484    /// | # | Operands      |
44485    /// +---+---------------+
44486    /// | 1 | Xmm, Xmm, Gpd |
44487    /// | 2 | Xmm, Xmm, Gpq |
44488    /// +---+---------------+
44489    /// ```
44490    #[inline]
44491    pub fn vcvtsi2sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44492    where
44493        Assembler<'a>: Vcvtsi2shErEmitter<A, B, C>,
44494    {
44495        <Self as Vcvtsi2shErEmitter<A, B, C>>::vcvtsi2sh_er(self, op0, op1, op2);
44496    }
44497    /// `VCVTSS2SH`.
44498    ///
44499    /// Supported operand variants:
44500    ///
44501    /// ```text
44502    /// +---+---------------+
44503    /// | # | Operands      |
44504    /// +---+---------------+
44505    /// | 1 | Xmm, Xmm, Mem |
44506    /// | 2 | Xmm, Xmm, Xmm |
44507    /// +---+---------------+
44508    /// ```
44509    #[inline]
44510    pub fn vcvtss2sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44511    where
44512        Assembler<'a>: Vcvtss2shEmitter<A, B, C>,
44513    {
44514        <Self as Vcvtss2shEmitter<A, B, C>>::vcvtss2sh(self, op0, op1, op2);
44515    }
44516    /// `VCVTSS2SH_ER`.
44517    ///
44518    /// Supported operand variants:
44519    ///
44520    /// ```text
44521    /// +---+---------------+
44522    /// | # | Operands      |
44523    /// +---+---------------+
44524    /// | 1 | Xmm, Xmm, Xmm |
44525    /// +---+---------------+
44526    /// ```
44527    #[inline]
44528    pub fn vcvtss2sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44529    where
44530        Assembler<'a>: Vcvtss2shErEmitter<A, B, C>,
44531    {
44532        <Self as Vcvtss2shErEmitter<A, B, C>>::vcvtss2sh_er(self, op0, op1, op2);
44533    }
44534    /// `VCVTSS2SH_MASK`.
44535    ///
44536    /// Supported operand variants:
44537    ///
44538    /// ```text
44539    /// +---+---------------+
44540    /// | # | Operands      |
44541    /// +---+---------------+
44542    /// | 1 | Xmm, Xmm, Mem |
44543    /// | 2 | Xmm, Xmm, Xmm |
44544    /// +---+---------------+
44545    /// ```
44546    #[inline]
44547    pub fn vcvtss2sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44548    where
44549        Assembler<'a>: Vcvtss2shMaskEmitter<A, B, C>,
44550    {
44551        <Self as Vcvtss2shMaskEmitter<A, B, C>>::vcvtss2sh_mask(self, op0, op1, op2);
44552    }
44553    /// `VCVTSS2SH_MASK_ER`.
44554    ///
44555    /// Supported operand variants:
44556    ///
44557    /// ```text
44558    /// +---+---------------+
44559    /// | # | Operands      |
44560    /// +---+---------------+
44561    /// | 1 | Xmm, Xmm, Xmm |
44562    /// +---+---------------+
44563    /// ```
44564    #[inline]
44565    pub fn vcvtss2sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44566    where
44567        Assembler<'a>: Vcvtss2shMaskErEmitter<A, B, C>,
44568    {
44569        <Self as Vcvtss2shMaskErEmitter<A, B, C>>::vcvtss2sh_mask_er(self, op0, op1, op2);
44570    }
44571    /// `VCVTSS2SH_MASKZ`.
44572    ///
44573    /// Supported operand variants:
44574    ///
44575    /// ```text
44576    /// +---+---------------+
44577    /// | # | Operands      |
44578    /// +---+---------------+
44579    /// | 1 | Xmm, Xmm, Mem |
44580    /// | 2 | Xmm, Xmm, Xmm |
44581    /// +---+---------------+
44582    /// ```
44583    #[inline]
44584    pub fn vcvtss2sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44585    where
44586        Assembler<'a>: Vcvtss2shMaskzEmitter<A, B, C>,
44587    {
44588        <Self as Vcvtss2shMaskzEmitter<A, B, C>>::vcvtss2sh_maskz(self, op0, op1, op2);
44589    }
44590    /// `VCVTSS2SH_MASKZ_ER`.
44591    ///
44592    /// Supported operand variants:
44593    ///
44594    /// ```text
44595    /// +---+---------------+
44596    /// | # | Operands      |
44597    /// +---+---------------+
44598    /// | 1 | Xmm, Xmm, Xmm |
44599    /// +---+---------------+
44600    /// ```
44601    #[inline]
44602    pub fn vcvtss2sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
44603    where
44604        Assembler<'a>: Vcvtss2shMaskzErEmitter<A, B, C>,
44605    {
44606        <Self as Vcvtss2shMaskzErEmitter<A, B, C>>::vcvtss2sh_maskz_er(self, op0, op1, op2);
44607    }
44608    /// `VCVTTPH2DQ`.
44609    ///
44610    /// Supported operand variants:
44611    ///
44612    /// ```text
44613    /// +---+----------+
44614    /// | # | Operands |
44615    /// +---+----------+
44616    /// | 1 | Xmm, Mem |
44617    /// | 2 | Xmm, Xmm |
44618    /// | 3 | Ymm, Mem |
44619    /// | 4 | Ymm, Xmm |
44620    /// | 5 | Zmm, Mem |
44621    /// | 6 | Zmm, Ymm |
44622    /// +---+----------+
44623    /// ```
44624    #[inline]
44625    pub fn vcvttph2dq<A, B>(&mut self, op0: A, op1: B)
44626    where
44627        Assembler<'a>: Vcvttph2dqEmitter<A, B>,
44628    {
44629        <Self as Vcvttph2dqEmitter<A, B>>::vcvttph2dq(self, op0, op1);
44630    }
44631    /// `VCVTTPH2DQ_MASK`.
44632    ///
44633    /// Supported operand variants:
44634    ///
44635    /// ```text
44636    /// +---+----------+
44637    /// | # | Operands |
44638    /// +---+----------+
44639    /// | 1 | Xmm, Mem |
44640    /// | 2 | Xmm, Xmm |
44641    /// | 3 | Ymm, Mem |
44642    /// | 4 | Ymm, Xmm |
44643    /// | 5 | Zmm, Mem |
44644    /// | 6 | Zmm, Ymm |
44645    /// +---+----------+
44646    /// ```
44647    #[inline]
44648    pub fn vcvttph2dq_mask<A, B>(&mut self, op0: A, op1: B)
44649    where
44650        Assembler<'a>: Vcvttph2dqMaskEmitter<A, B>,
44651    {
44652        <Self as Vcvttph2dqMaskEmitter<A, B>>::vcvttph2dq_mask(self, op0, op1);
44653    }
44654    /// `VCVTTPH2DQ_MASK_SAE`.
44655    ///
44656    /// Supported operand variants:
44657    ///
44658    /// ```text
44659    /// +---+----------+
44660    /// | # | Operands |
44661    /// +---+----------+
44662    /// | 1 | Zmm, Ymm |
44663    /// +---+----------+
44664    /// ```
44665    #[inline]
44666    pub fn vcvttph2dq_mask_sae<A, B>(&mut self, op0: A, op1: B)
44667    where
44668        Assembler<'a>: Vcvttph2dqMaskSaeEmitter<A, B>,
44669    {
44670        <Self as Vcvttph2dqMaskSaeEmitter<A, B>>::vcvttph2dq_mask_sae(self, op0, op1);
44671    }
44672    /// `VCVTTPH2DQ_MASKZ`.
44673    ///
44674    /// Supported operand variants:
44675    ///
44676    /// ```text
44677    /// +---+----------+
44678    /// | # | Operands |
44679    /// +---+----------+
44680    /// | 1 | Xmm, Mem |
44681    /// | 2 | Xmm, Xmm |
44682    /// | 3 | Ymm, Mem |
44683    /// | 4 | Ymm, Xmm |
44684    /// | 5 | Zmm, Mem |
44685    /// | 6 | Zmm, Ymm |
44686    /// +---+----------+
44687    /// ```
44688    #[inline]
44689    pub fn vcvttph2dq_maskz<A, B>(&mut self, op0: A, op1: B)
44690    where
44691        Assembler<'a>: Vcvttph2dqMaskzEmitter<A, B>,
44692    {
44693        <Self as Vcvttph2dqMaskzEmitter<A, B>>::vcvttph2dq_maskz(self, op0, op1);
44694    }
44695    /// `VCVTTPH2DQ_MASKZ_SAE`.
44696    ///
44697    /// Supported operand variants:
44698    ///
44699    /// ```text
44700    /// +---+----------+
44701    /// | # | Operands |
44702    /// +---+----------+
44703    /// | 1 | Zmm, Ymm |
44704    /// +---+----------+
44705    /// ```
44706    #[inline]
44707    pub fn vcvttph2dq_maskz_sae<A, B>(&mut self, op0: A, op1: B)
44708    where
44709        Assembler<'a>: Vcvttph2dqMaskzSaeEmitter<A, B>,
44710    {
44711        <Self as Vcvttph2dqMaskzSaeEmitter<A, B>>::vcvttph2dq_maskz_sae(self, op0, op1);
44712    }
44713    /// `VCVTTPH2DQ_SAE`.
44714    ///
44715    /// Supported operand variants:
44716    ///
44717    /// ```text
44718    /// +---+----------+
44719    /// | # | Operands |
44720    /// +---+----------+
44721    /// | 1 | Zmm, Ymm |
44722    /// +---+----------+
44723    /// ```
44724    #[inline]
44725    pub fn vcvttph2dq_sae<A, B>(&mut self, op0: A, op1: B)
44726    where
44727        Assembler<'a>: Vcvttph2dqSaeEmitter<A, B>,
44728    {
44729        <Self as Vcvttph2dqSaeEmitter<A, B>>::vcvttph2dq_sae(self, op0, op1);
44730    }
44731    /// `VCVTTPH2QQ`.
44732    ///
44733    /// Supported operand variants:
44734    ///
44735    /// ```text
44736    /// +---+----------+
44737    /// | # | Operands |
44738    /// +---+----------+
44739    /// | 1 | Xmm, Mem |
44740    /// | 2 | Xmm, Xmm |
44741    /// | 3 | Ymm, Mem |
44742    /// | 4 | Ymm, Xmm |
44743    /// | 5 | Zmm, Mem |
44744    /// | 6 | Zmm, Xmm |
44745    /// +---+----------+
44746    /// ```
44747    #[inline]
44748    pub fn vcvttph2qq<A, B>(&mut self, op0: A, op1: B)
44749    where
44750        Assembler<'a>: Vcvttph2qqEmitter<A, B>,
44751    {
44752        <Self as Vcvttph2qqEmitter<A, B>>::vcvttph2qq(self, op0, op1);
44753    }
44754    /// `VCVTTPH2QQ_MASK`.
44755    ///
44756    /// Supported operand variants:
44757    ///
44758    /// ```text
44759    /// +---+----------+
44760    /// | # | Operands |
44761    /// +---+----------+
44762    /// | 1 | Xmm, Mem |
44763    /// | 2 | Xmm, Xmm |
44764    /// | 3 | Ymm, Mem |
44765    /// | 4 | Ymm, Xmm |
44766    /// | 5 | Zmm, Mem |
44767    /// | 6 | Zmm, Xmm |
44768    /// +---+----------+
44769    /// ```
44770    #[inline]
44771    pub fn vcvttph2qq_mask<A, B>(&mut self, op0: A, op1: B)
44772    where
44773        Assembler<'a>: Vcvttph2qqMaskEmitter<A, B>,
44774    {
44775        <Self as Vcvttph2qqMaskEmitter<A, B>>::vcvttph2qq_mask(self, op0, op1);
44776    }
44777    /// `VCVTTPH2QQ_MASK_SAE`.
44778    ///
44779    /// Supported operand variants:
44780    ///
44781    /// ```text
44782    /// +---+----------+
44783    /// | # | Operands |
44784    /// +---+----------+
44785    /// | 1 | Zmm, Xmm |
44786    /// +---+----------+
44787    /// ```
44788    #[inline]
44789    pub fn vcvttph2qq_mask_sae<A, B>(&mut self, op0: A, op1: B)
44790    where
44791        Assembler<'a>: Vcvttph2qqMaskSaeEmitter<A, B>,
44792    {
44793        <Self as Vcvttph2qqMaskSaeEmitter<A, B>>::vcvttph2qq_mask_sae(self, op0, op1);
44794    }
44795    /// `VCVTTPH2QQ_MASKZ`.
44796    ///
44797    /// Supported operand variants:
44798    ///
44799    /// ```text
44800    /// +---+----------+
44801    /// | # | Operands |
44802    /// +---+----------+
44803    /// | 1 | Xmm, Mem |
44804    /// | 2 | Xmm, Xmm |
44805    /// | 3 | Ymm, Mem |
44806    /// | 4 | Ymm, Xmm |
44807    /// | 5 | Zmm, Mem |
44808    /// | 6 | Zmm, Xmm |
44809    /// +---+----------+
44810    /// ```
44811    #[inline]
44812    pub fn vcvttph2qq_maskz<A, B>(&mut self, op0: A, op1: B)
44813    where
44814        Assembler<'a>: Vcvttph2qqMaskzEmitter<A, B>,
44815    {
44816        <Self as Vcvttph2qqMaskzEmitter<A, B>>::vcvttph2qq_maskz(self, op0, op1);
44817    }
44818    /// `VCVTTPH2QQ_MASKZ_SAE`.
44819    ///
44820    /// Supported operand variants:
44821    ///
44822    /// ```text
44823    /// +---+----------+
44824    /// | # | Operands |
44825    /// +---+----------+
44826    /// | 1 | Zmm, Xmm |
44827    /// +---+----------+
44828    /// ```
44829    #[inline]
44830    pub fn vcvttph2qq_maskz_sae<A, B>(&mut self, op0: A, op1: B)
44831    where
44832        Assembler<'a>: Vcvttph2qqMaskzSaeEmitter<A, B>,
44833    {
44834        <Self as Vcvttph2qqMaskzSaeEmitter<A, B>>::vcvttph2qq_maskz_sae(self, op0, op1);
44835    }
44836    /// `VCVTTPH2QQ_SAE`.
44837    ///
44838    /// Supported operand variants:
44839    ///
44840    /// ```text
44841    /// +---+----------+
44842    /// | # | Operands |
44843    /// +---+----------+
44844    /// | 1 | Zmm, Xmm |
44845    /// +---+----------+
44846    /// ```
44847    #[inline]
44848    pub fn vcvttph2qq_sae<A, B>(&mut self, op0: A, op1: B)
44849    where
44850        Assembler<'a>: Vcvttph2qqSaeEmitter<A, B>,
44851    {
44852        <Self as Vcvttph2qqSaeEmitter<A, B>>::vcvttph2qq_sae(self, op0, op1);
44853    }
44854    /// `VCVTTPH2UDQ`.
44855    ///
44856    /// Supported operand variants:
44857    ///
44858    /// ```text
44859    /// +---+----------+
44860    /// | # | Operands |
44861    /// +---+----------+
44862    /// | 1 | Xmm, Mem |
44863    /// | 2 | Xmm, Xmm |
44864    /// | 3 | Ymm, Mem |
44865    /// | 4 | Ymm, Xmm |
44866    /// | 5 | Zmm, Mem |
44867    /// | 6 | Zmm, Ymm |
44868    /// +---+----------+
44869    /// ```
44870    #[inline]
44871    pub fn vcvttph2udq<A, B>(&mut self, op0: A, op1: B)
44872    where
44873        Assembler<'a>: Vcvttph2udqEmitter<A, B>,
44874    {
44875        <Self as Vcvttph2udqEmitter<A, B>>::vcvttph2udq(self, op0, op1);
44876    }
44877    /// `VCVTTPH2UDQ_MASK`.
44878    ///
44879    /// Supported operand variants:
44880    ///
44881    /// ```text
44882    /// +---+----------+
44883    /// | # | Operands |
44884    /// +---+----------+
44885    /// | 1 | Xmm, Mem |
44886    /// | 2 | Xmm, Xmm |
44887    /// | 3 | Ymm, Mem |
44888    /// | 4 | Ymm, Xmm |
44889    /// | 5 | Zmm, Mem |
44890    /// | 6 | Zmm, Ymm |
44891    /// +---+----------+
44892    /// ```
44893    #[inline]
44894    pub fn vcvttph2udq_mask<A, B>(&mut self, op0: A, op1: B)
44895    where
44896        Assembler<'a>: Vcvttph2udqMaskEmitter<A, B>,
44897    {
44898        <Self as Vcvttph2udqMaskEmitter<A, B>>::vcvttph2udq_mask(self, op0, op1);
44899    }
44900    /// `VCVTTPH2UDQ_MASK_SAE`.
44901    ///
44902    /// Supported operand variants:
44903    ///
44904    /// ```text
44905    /// +---+----------+
44906    /// | # | Operands |
44907    /// +---+----------+
44908    /// | 1 | Zmm, Ymm |
44909    /// +---+----------+
44910    /// ```
44911    #[inline]
44912    pub fn vcvttph2udq_mask_sae<A, B>(&mut self, op0: A, op1: B)
44913    where
44914        Assembler<'a>: Vcvttph2udqMaskSaeEmitter<A, B>,
44915    {
44916        <Self as Vcvttph2udqMaskSaeEmitter<A, B>>::vcvttph2udq_mask_sae(self, op0, op1);
44917    }
44918    /// `VCVTTPH2UDQ_MASKZ`.
44919    ///
44920    /// Supported operand variants:
44921    ///
44922    /// ```text
44923    /// +---+----------+
44924    /// | # | Operands |
44925    /// +---+----------+
44926    /// | 1 | Xmm, Mem |
44927    /// | 2 | Xmm, Xmm |
44928    /// | 3 | Ymm, Mem |
44929    /// | 4 | Ymm, Xmm |
44930    /// | 5 | Zmm, Mem |
44931    /// | 6 | Zmm, Ymm |
44932    /// +---+----------+
44933    /// ```
44934    #[inline]
44935    pub fn vcvttph2udq_maskz<A, B>(&mut self, op0: A, op1: B)
44936    where
44937        Assembler<'a>: Vcvttph2udqMaskzEmitter<A, B>,
44938    {
44939        <Self as Vcvttph2udqMaskzEmitter<A, B>>::vcvttph2udq_maskz(self, op0, op1);
44940    }
44941    /// `VCVTTPH2UDQ_MASKZ_SAE`.
44942    ///
44943    /// Supported operand variants:
44944    ///
44945    /// ```text
44946    /// +---+----------+
44947    /// | # | Operands |
44948    /// +---+----------+
44949    /// | 1 | Zmm, Ymm |
44950    /// +---+----------+
44951    /// ```
44952    #[inline]
44953    pub fn vcvttph2udq_maskz_sae<A, B>(&mut self, op0: A, op1: B)
44954    where
44955        Assembler<'a>: Vcvttph2udqMaskzSaeEmitter<A, B>,
44956    {
44957        <Self as Vcvttph2udqMaskzSaeEmitter<A, B>>::vcvttph2udq_maskz_sae(self, op0, op1);
44958    }
44959    /// `VCVTTPH2UDQ_SAE`.
44960    ///
44961    /// Supported operand variants:
44962    ///
44963    /// ```text
44964    /// +---+----------+
44965    /// | # | Operands |
44966    /// +---+----------+
44967    /// | 1 | Zmm, Ymm |
44968    /// +---+----------+
44969    /// ```
44970    #[inline]
44971    pub fn vcvttph2udq_sae<A, B>(&mut self, op0: A, op1: B)
44972    where
44973        Assembler<'a>: Vcvttph2udqSaeEmitter<A, B>,
44974    {
44975        <Self as Vcvttph2udqSaeEmitter<A, B>>::vcvttph2udq_sae(self, op0, op1);
44976    }
44977    /// `VCVTTPH2UQQ`.
44978    ///
44979    /// Supported operand variants:
44980    ///
44981    /// ```text
44982    /// +---+----------+
44983    /// | # | Operands |
44984    /// +---+----------+
44985    /// | 1 | Xmm, Mem |
44986    /// | 2 | Xmm, Xmm |
44987    /// | 3 | Ymm, Mem |
44988    /// | 4 | Ymm, Xmm |
44989    /// | 5 | Zmm, Mem |
44990    /// | 6 | Zmm, Xmm |
44991    /// +---+----------+
44992    /// ```
44993    #[inline]
44994    pub fn vcvttph2uqq<A, B>(&mut self, op0: A, op1: B)
44995    where
44996        Assembler<'a>: Vcvttph2uqqEmitter<A, B>,
44997    {
44998        <Self as Vcvttph2uqqEmitter<A, B>>::vcvttph2uqq(self, op0, op1);
44999    }
45000    /// `VCVTTPH2UQQ_MASK`.
45001    ///
45002    /// Supported operand variants:
45003    ///
45004    /// ```text
45005    /// +---+----------+
45006    /// | # | Operands |
45007    /// +---+----------+
45008    /// | 1 | Xmm, Mem |
45009    /// | 2 | Xmm, Xmm |
45010    /// | 3 | Ymm, Mem |
45011    /// | 4 | Ymm, Xmm |
45012    /// | 5 | Zmm, Mem |
45013    /// | 6 | Zmm, Xmm |
45014    /// +---+----------+
45015    /// ```
45016    #[inline]
45017    pub fn vcvttph2uqq_mask<A, B>(&mut self, op0: A, op1: B)
45018    where
45019        Assembler<'a>: Vcvttph2uqqMaskEmitter<A, B>,
45020    {
45021        <Self as Vcvttph2uqqMaskEmitter<A, B>>::vcvttph2uqq_mask(self, op0, op1);
45022    }
45023    /// `VCVTTPH2UQQ_MASK_SAE`.
45024    ///
45025    /// Supported operand variants:
45026    ///
45027    /// ```text
45028    /// +---+----------+
45029    /// | # | Operands |
45030    /// +---+----------+
45031    /// | 1 | Zmm, Xmm |
45032    /// +---+----------+
45033    /// ```
45034    #[inline]
45035    pub fn vcvttph2uqq_mask_sae<A, B>(&mut self, op0: A, op1: B)
45036    where
45037        Assembler<'a>: Vcvttph2uqqMaskSaeEmitter<A, B>,
45038    {
45039        <Self as Vcvttph2uqqMaskSaeEmitter<A, B>>::vcvttph2uqq_mask_sae(self, op0, op1);
45040    }
45041    /// `VCVTTPH2UQQ_MASKZ`.
45042    ///
45043    /// Supported operand variants:
45044    ///
45045    /// ```text
45046    /// +---+----------+
45047    /// | # | Operands |
45048    /// +---+----------+
45049    /// | 1 | Xmm, Mem |
45050    /// | 2 | Xmm, Xmm |
45051    /// | 3 | Ymm, Mem |
45052    /// | 4 | Ymm, Xmm |
45053    /// | 5 | Zmm, Mem |
45054    /// | 6 | Zmm, Xmm |
45055    /// +---+----------+
45056    /// ```
45057    #[inline]
45058    pub fn vcvttph2uqq_maskz<A, B>(&mut self, op0: A, op1: B)
45059    where
45060        Assembler<'a>: Vcvttph2uqqMaskzEmitter<A, B>,
45061    {
45062        <Self as Vcvttph2uqqMaskzEmitter<A, B>>::vcvttph2uqq_maskz(self, op0, op1);
45063    }
45064    /// `VCVTTPH2UQQ_MASKZ_SAE`.
45065    ///
45066    /// Supported operand variants:
45067    ///
45068    /// ```text
45069    /// +---+----------+
45070    /// | # | Operands |
45071    /// +---+----------+
45072    /// | 1 | Zmm, Xmm |
45073    /// +---+----------+
45074    /// ```
45075    #[inline]
45076    pub fn vcvttph2uqq_maskz_sae<A, B>(&mut self, op0: A, op1: B)
45077    where
45078        Assembler<'a>: Vcvttph2uqqMaskzSaeEmitter<A, B>,
45079    {
45080        <Self as Vcvttph2uqqMaskzSaeEmitter<A, B>>::vcvttph2uqq_maskz_sae(self, op0, op1);
45081    }
45082    /// `VCVTTPH2UQQ_SAE`.
45083    ///
45084    /// Supported operand variants:
45085    ///
45086    /// ```text
45087    /// +---+----------+
45088    /// | # | Operands |
45089    /// +---+----------+
45090    /// | 1 | Zmm, Xmm |
45091    /// +---+----------+
45092    /// ```
45093    #[inline]
45094    pub fn vcvttph2uqq_sae<A, B>(&mut self, op0: A, op1: B)
45095    where
45096        Assembler<'a>: Vcvttph2uqqSaeEmitter<A, B>,
45097    {
45098        <Self as Vcvttph2uqqSaeEmitter<A, B>>::vcvttph2uqq_sae(self, op0, op1);
45099    }
45100    /// `VCVTTPH2UW`.
45101    ///
45102    /// Supported operand variants:
45103    ///
45104    /// ```text
45105    /// +---+----------+
45106    /// | # | Operands |
45107    /// +---+----------+
45108    /// | 1 | Xmm, Mem |
45109    /// | 2 | Xmm, Xmm |
45110    /// | 3 | Ymm, Mem |
45111    /// | 4 | Ymm, Ymm |
45112    /// | 5 | Zmm, Mem |
45113    /// | 6 | Zmm, Zmm |
45114    /// +---+----------+
45115    /// ```
45116    #[inline]
45117    pub fn vcvttph2uw<A, B>(&mut self, op0: A, op1: B)
45118    where
45119        Assembler<'a>: Vcvttph2uwEmitter<A, B>,
45120    {
45121        <Self as Vcvttph2uwEmitter<A, B>>::vcvttph2uw(self, op0, op1);
45122    }
45123    /// `VCVTTPH2UW_MASK`.
45124    ///
45125    /// Supported operand variants:
45126    ///
45127    /// ```text
45128    /// +---+----------+
45129    /// | # | Operands |
45130    /// +---+----------+
45131    /// | 1 | Xmm, Mem |
45132    /// | 2 | Xmm, Xmm |
45133    /// | 3 | Ymm, Mem |
45134    /// | 4 | Ymm, Ymm |
45135    /// | 5 | Zmm, Mem |
45136    /// | 6 | Zmm, Zmm |
45137    /// +---+----------+
45138    /// ```
45139    #[inline]
45140    pub fn vcvttph2uw_mask<A, B>(&mut self, op0: A, op1: B)
45141    where
45142        Assembler<'a>: Vcvttph2uwMaskEmitter<A, B>,
45143    {
45144        <Self as Vcvttph2uwMaskEmitter<A, B>>::vcvttph2uw_mask(self, op0, op1);
45145    }
45146    /// `VCVTTPH2UW_MASK_SAE`.
45147    ///
45148    /// Supported operand variants:
45149    ///
45150    /// ```text
45151    /// +---+----------+
45152    /// | # | Operands |
45153    /// +---+----------+
45154    /// | 1 | Zmm, Zmm |
45155    /// +---+----------+
45156    /// ```
45157    #[inline]
45158    pub fn vcvttph2uw_mask_sae<A, B>(&mut self, op0: A, op1: B)
45159    where
45160        Assembler<'a>: Vcvttph2uwMaskSaeEmitter<A, B>,
45161    {
45162        <Self as Vcvttph2uwMaskSaeEmitter<A, B>>::vcvttph2uw_mask_sae(self, op0, op1);
45163    }
45164    /// `VCVTTPH2UW_MASKZ`.
45165    ///
45166    /// Supported operand variants:
45167    ///
45168    /// ```text
45169    /// +---+----------+
45170    /// | # | Operands |
45171    /// +---+----------+
45172    /// | 1 | Xmm, Mem |
45173    /// | 2 | Xmm, Xmm |
45174    /// | 3 | Ymm, Mem |
45175    /// | 4 | Ymm, Ymm |
45176    /// | 5 | Zmm, Mem |
45177    /// | 6 | Zmm, Zmm |
45178    /// +---+----------+
45179    /// ```
45180    #[inline]
45181    pub fn vcvttph2uw_maskz<A, B>(&mut self, op0: A, op1: B)
45182    where
45183        Assembler<'a>: Vcvttph2uwMaskzEmitter<A, B>,
45184    {
45185        <Self as Vcvttph2uwMaskzEmitter<A, B>>::vcvttph2uw_maskz(self, op0, op1);
45186    }
45187    /// `VCVTTPH2UW_MASKZ_SAE`.
45188    ///
45189    /// Supported operand variants:
45190    ///
45191    /// ```text
45192    /// +---+----------+
45193    /// | # | Operands |
45194    /// +---+----------+
45195    /// | 1 | Zmm, Zmm |
45196    /// +---+----------+
45197    /// ```
45198    #[inline]
45199    pub fn vcvttph2uw_maskz_sae<A, B>(&mut self, op0: A, op1: B)
45200    where
45201        Assembler<'a>: Vcvttph2uwMaskzSaeEmitter<A, B>,
45202    {
45203        <Self as Vcvttph2uwMaskzSaeEmitter<A, B>>::vcvttph2uw_maskz_sae(self, op0, op1);
45204    }
45205    /// `VCVTTPH2UW_SAE`.
45206    ///
45207    /// Supported operand variants:
45208    ///
45209    /// ```text
45210    /// +---+----------+
45211    /// | # | Operands |
45212    /// +---+----------+
45213    /// | 1 | Zmm, Zmm |
45214    /// +---+----------+
45215    /// ```
45216    #[inline]
45217    pub fn vcvttph2uw_sae<A, B>(&mut self, op0: A, op1: B)
45218    where
45219        Assembler<'a>: Vcvttph2uwSaeEmitter<A, B>,
45220    {
45221        <Self as Vcvttph2uwSaeEmitter<A, B>>::vcvttph2uw_sae(self, op0, op1);
45222    }
45223    /// `VCVTTPH2W`.
45224    ///
45225    /// Supported operand variants:
45226    ///
45227    /// ```text
45228    /// +---+----------+
45229    /// | # | Operands |
45230    /// +---+----------+
45231    /// | 1 | Xmm, Mem |
45232    /// | 2 | Xmm, Xmm |
45233    /// | 3 | Ymm, Mem |
45234    /// | 4 | Ymm, Ymm |
45235    /// | 5 | Zmm, Mem |
45236    /// | 6 | Zmm, Zmm |
45237    /// +---+----------+
45238    /// ```
45239    #[inline]
45240    pub fn vcvttph2w<A, B>(&mut self, op0: A, op1: B)
45241    where
45242        Assembler<'a>: Vcvttph2wEmitter<A, B>,
45243    {
45244        <Self as Vcvttph2wEmitter<A, B>>::vcvttph2w(self, op0, op1);
45245    }
45246    /// `VCVTTPH2W_MASK`.
45247    ///
45248    /// Supported operand variants:
45249    ///
45250    /// ```text
45251    /// +---+----------+
45252    /// | # | Operands |
45253    /// +---+----------+
45254    /// | 1 | Xmm, Mem |
45255    /// | 2 | Xmm, Xmm |
45256    /// | 3 | Ymm, Mem |
45257    /// | 4 | Ymm, Ymm |
45258    /// | 5 | Zmm, Mem |
45259    /// | 6 | Zmm, Zmm |
45260    /// +---+----------+
45261    /// ```
45262    #[inline]
45263    pub fn vcvttph2w_mask<A, B>(&mut self, op0: A, op1: B)
45264    where
45265        Assembler<'a>: Vcvttph2wMaskEmitter<A, B>,
45266    {
45267        <Self as Vcvttph2wMaskEmitter<A, B>>::vcvttph2w_mask(self, op0, op1);
45268    }
45269    /// `VCVTTPH2W_MASK_SAE`.
45270    ///
45271    /// Supported operand variants:
45272    ///
45273    /// ```text
45274    /// +---+----------+
45275    /// | # | Operands |
45276    /// +---+----------+
45277    /// | 1 | Zmm, Zmm |
45278    /// +---+----------+
45279    /// ```
45280    #[inline]
45281    pub fn vcvttph2w_mask_sae<A, B>(&mut self, op0: A, op1: B)
45282    where
45283        Assembler<'a>: Vcvttph2wMaskSaeEmitter<A, B>,
45284    {
45285        <Self as Vcvttph2wMaskSaeEmitter<A, B>>::vcvttph2w_mask_sae(self, op0, op1);
45286    }
45287    /// `VCVTTPH2W_MASKZ`.
45288    ///
45289    /// Supported operand variants:
45290    ///
45291    /// ```text
45292    /// +---+----------+
45293    /// | # | Operands |
45294    /// +---+----------+
45295    /// | 1 | Xmm, Mem |
45296    /// | 2 | Xmm, Xmm |
45297    /// | 3 | Ymm, Mem |
45298    /// | 4 | Ymm, Ymm |
45299    /// | 5 | Zmm, Mem |
45300    /// | 6 | Zmm, Zmm |
45301    /// +---+----------+
45302    /// ```
45303    #[inline]
45304    pub fn vcvttph2w_maskz<A, B>(&mut self, op0: A, op1: B)
45305    where
45306        Assembler<'a>: Vcvttph2wMaskzEmitter<A, B>,
45307    {
45308        <Self as Vcvttph2wMaskzEmitter<A, B>>::vcvttph2w_maskz(self, op0, op1);
45309    }
45310    /// `VCVTTPH2W_MASKZ_SAE`.
45311    ///
45312    /// Supported operand variants:
45313    ///
45314    /// ```text
45315    /// +---+----------+
45316    /// | # | Operands |
45317    /// +---+----------+
45318    /// | 1 | Zmm, Zmm |
45319    /// +---+----------+
45320    /// ```
45321    #[inline]
45322    pub fn vcvttph2w_maskz_sae<A, B>(&mut self, op0: A, op1: B)
45323    where
45324        Assembler<'a>: Vcvttph2wMaskzSaeEmitter<A, B>,
45325    {
45326        <Self as Vcvttph2wMaskzSaeEmitter<A, B>>::vcvttph2w_maskz_sae(self, op0, op1);
45327    }
45328    /// `VCVTTPH2W_SAE`.
45329    ///
45330    /// Supported operand variants:
45331    ///
45332    /// ```text
45333    /// +---+----------+
45334    /// | # | Operands |
45335    /// +---+----------+
45336    /// | 1 | Zmm, Zmm |
45337    /// +---+----------+
45338    /// ```
45339    #[inline]
45340    pub fn vcvttph2w_sae<A, B>(&mut self, op0: A, op1: B)
45341    where
45342        Assembler<'a>: Vcvttph2wSaeEmitter<A, B>,
45343    {
45344        <Self as Vcvttph2wSaeEmitter<A, B>>::vcvttph2w_sae(self, op0, op1);
45345    }
45346    /// `VCVTTSH2SI`.
45347    ///
45348    /// Supported operand variants:
45349    ///
45350    /// ```text
45351    /// +---+----------+
45352    /// | # | Operands |
45353    /// +---+----------+
45354    /// | 1 | Gpd, Mem |
45355    /// | 2 | Gpd, Xmm |
45356    /// | 3 | Gpq, Mem |
45357    /// | 4 | Gpq, Xmm |
45358    /// +---+----------+
45359    /// ```
45360    #[inline]
45361    pub fn vcvttsh2si<A, B>(&mut self, op0: A, op1: B)
45362    where
45363        Assembler<'a>: Vcvttsh2siEmitter<A, B>,
45364    {
45365        <Self as Vcvttsh2siEmitter<A, B>>::vcvttsh2si(self, op0, op1);
45366    }
45367    /// `VCVTTSH2SI_SAE`.
45368    ///
45369    /// Supported operand variants:
45370    ///
45371    /// ```text
45372    /// +---+----------+
45373    /// | # | Operands |
45374    /// +---+----------+
45375    /// | 1 | Gpd, Xmm |
45376    /// | 2 | Gpq, Xmm |
45377    /// +---+----------+
45378    /// ```
45379    #[inline]
45380    pub fn vcvttsh2si_sae<A, B>(&mut self, op0: A, op1: B)
45381    where
45382        Assembler<'a>: Vcvttsh2siSaeEmitter<A, B>,
45383    {
45384        <Self as Vcvttsh2siSaeEmitter<A, B>>::vcvttsh2si_sae(self, op0, op1);
45385    }
45386    /// `VCVTTSH2USI`.
45387    ///
45388    /// Supported operand variants:
45389    ///
45390    /// ```text
45391    /// +---+----------+
45392    /// | # | Operands |
45393    /// +---+----------+
45394    /// | 1 | Gpd, Mem |
45395    /// | 2 | Gpd, Xmm |
45396    /// | 3 | Gpq, Mem |
45397    /// | 4 | Gpq, Xmm |
45398    /// +---+----------+
45399    /// ```
45400    #[inline]
45401    pub fn vcvttsh2usi<A, B>(&mut self, op0: A, op1: B)
45402    where
45403        Assembler<'a>: Vcvttsh2usiEmitter<A, B>,
45404    {
45405        <Self as Vcvttsh2usiEmitter<A, B>>::vcvttsh2usi(self, op0, op1);
45406    }
45407    /// `VCVTTSH2USI_SAE`.
45408    ///
45409    /// Supported operand variants:
45410    ///
45411    /// ```text
45412    /// +---+----------+
45413    /// | # | Operands |
45414    /// +---+----------+
45415    /// | 1 | Gpd, Xmm |
45416    /// | 2 | Gpq, Xmm |
45417    /// +---+----------+
45418    /// ```
45419    #[inline]
45420    pub fn vcvttsh2usi_sae<A, B>(&mut self, op0: A, op1: B)
45421    where
45422        Assembler<'a>: Vcvttsh2usiSaeEmitter<A, B>,
45423    {
45424        <Self as Vcvttsh2usiSaeEmitter<A, B>>::vcvttsh2usi_sae(self, op0, op1);
45425    }
45426    /// `VCVTUDQ2PH`.
45427    ///
45428    /// Supported operand variants:
45429    ///
45430    /// ```text
45431    /// +---+----------+
45432    /// | # | Operands |
45433    /// +---+----------+
45434    /// | 1 | Xmm, Mem |
45435    /// | 2 | Xmm, Xmm |
45436    /// | 3 | Xmm, Ymm |
45437    /// | 4 | Ymm, Mem |
45438    /// | 5 | Ymm, Zmm |
45439    /// +---+----------+
45440    /// ```
45441    #[inline]
45442    pub fn vcvtudq2ph<A, B>(&mut self, op0: A, op1: B)
45443    where
45444        Assembler<'a>: Vcvtudq2phEmitter<A, B>,
45445    {
45446        <Self as Vcvtudq2phEmitter<A, B>>::vcvtudq2ph(self, op0, op1);
45447    }
45448    /// `VCVTUDQ2PH_ER`.
45449    ///
45450    /// Supported operand variants:
45451    ///
45452    /// ```text
45453    /// +---+----------+
45454    /// | # | Operands |
45455    /// +---+----------+
45456    /// | 1 | Ymm, Zmm |
45457    /// +---+----------+
45458    /// ```
45459    #[inline]
45460    pub fn vcvtudq2ph_er<A, B>(&mut self, op0: A, op1: B)
45461    where
45462        Assembler<'a>: Vcvtudq2phErEmitter<A, B>,
45463    {
45464        <Self as Vcvtudq2phErEmitter<A, B>>::vcvtudq2ph_er(self, op0, op1);
45465    }
45466    /// `VCVTUDQ2PH_MASK`.
45467    ///
45468    /// Supported operand variants:
45469    ///
45470    /// ```text
45471    /// +---+----------+
45472    /// | # | Operands |
45473    /// +---+----------+
45474    /// | 1 | Xmm, Mem |
45475    /// | 2 | Xmm, Xmm |
45476    /// | 3 | Xmm, Ymm |
45477    /// | 4 | Ymm, Mem |
45478    /// | 5 | Ymm, Zmm |
45479    /// +---+----------+
45480    /// ```
45481    #[inline]
45482    pub fn vcvtudq2ph_mask<A, B>(&mut self, op0: A, op1: B)
45483    where
45484        Assembler<'a>: Vcvtudq2phMaskEmitter<A, B>,
45485    {
45486        <Self as Vcvtudq2phMaskEmitter<A, B>>::vcvtudq2ph_mask(self, op0, op1);
45487    }
45488    /// `VCVTUDQ2PH_MASK_ER`.
45489    ///
45490    /// Supported operand variants:
45491    ///
45492    /// ```text
45493    /// +---+----------+
45494    /// | # | Operands |
45495    /// +---+----------+
45496    /// | 1 | Ymm, Zmm |
45497    /// +---+----------+
45498    /// ```
45499    #[inline]
45500    pub fn vcvtudq2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
45501    where
45502        Assembler<'a>: Vcvtudq2phMaskErEmitter<A, B>,
45503    {
45504        <Self as Vcvtudq2phMaskErEmitter<A, B>>::vcvtudq2ph_mask_er(self, op0, op1);
45505    }
45506    /// `VCVTUDQ2PH_MASKZ`.
45507    ///
45508    /// Supported operand variants:
45509    ///
45510    /// ```text
45511    /// +---+----------+
45512    /// | # | Operands |
45513    /// +---+----------+
45514    /// | 1 | Xmm, Mem |
45515    /// | 2 | Xmm, Xmm |
45516    /// | 3 | Xmm, Ymm |
45517    /// | 4 | Ymm, Mem |
45518    /// | 5 | Ymm, Zmm |
45519    /// +---+----------+
45520    /// ```
45521    #[inline]
45522    pub fn vcvtudq2ph_maskz<A, B>(&mut self, op0: A, op1: B)
45523    where
45524        Assembler<'a>: Vcvtudq2phMaskzEmitter<A, B>,
45525    {
45526        <Self as Vcvtudq2phMaskzEmitter<A, B>>::vcvtudq2ph_maskz(self, op0, op1);
45527    }
45528    /// `VCVTUDQ2PH_MASKZ_ER`.
45529    ///
45530    /// Supported operand variants:
45531    ///
45532    /// ```text
45533    /// +---+----------+
45534    /// | # | Operands |
45535    /// +---+----------+
45536    /// | 1 | Ymm, Zmm |
45537    /// +---+----------+
45538    /// ```
45539    #[inline]
45540    pub fn vcvtudq2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
45541    where
45542        Assembler<'a>: Vcvtudq2phMaskzErEmitter<A, B>,
45543    {
45544        <Self as Vcvtudq2phMaskzErEmitter<A, B>>::vcvtudq2ph_maskz_er(self, op0, op1);
45545    }
45546    /// `VCVTUQQ2PH`.
45547    ///
45548    /// Supported operand variants:
45549    ///
45550    /// ```text
45551    /// +---+----------+
45552    /// | # | Operands |
45553    /// +---+----------+
45554    /// | 1 | Xmm, Mem |
45555    /// | 2 | Xmm, Xmm |
45556    /// | 3 | Xmm, Ymm |
45557    /// | 4 | Xmm, Zmm |
45558    /// +---+----------+
45559    /// ```
45560    #[inline]
45561    pub fn vcvtuqq2ph<A, B>(&mut self, op0: A, op1: B)
45562    where
45563        Assembler<'a>: Vcvtuqq2phEmitter<A, B>,
45564    {
45565        <Self as Vcvtuqq2phEmitter<A, B>>::vcvtuqq2ph(self, op0, op1);
45566    }
45567    /// `VCVTUQQ2PH_ER`.
45568    ///
45569    /// Supported operand variants:
45570    ///
45571    /// ```text
45572    /// +---+----------+
45573    /// | # | Operands |
45574    /// +---+----------+
45575    /// | 1 | Xmm, Zmm |
45576    /// +---+----------+
45577    /// ```
45578    #[inline]
45579    pub fn vcvtuqq2ph_er<A, B>(&mut self, op0: A, op1: B)
45580    where
45581        Assembler<'a>: Vcvtuqq2phErEmitter<A, B>,
45582    {
45583        <Self as Vcvtuqq2phErEmitter<A, B>>::vcvtuqq2ph_er(self, op0, op1);
45584    }
45585    /// `VCVTUQQ2PH_MASK`.
45586    ///
45587    /// Supported operand variants:
45588    ///
45589    /// ```text
45590    /// +---+----------+
45591    /// | # | Operands |
45592    /// +---+----------+
45593    /// | 1 | Xmm, Mem |
45594    /// | 2 | Xmm, Xmm |
45595    /// | 3 | Xmm, Ymm |
45596    /// | 4 | Xmm, Zmm |
45597    /// +---+----------+
45598    /// ```
45599    #[inline]
45600    pub fn vcvtuqq2ph_mask<A, B>(&mut self, op0: A, op1: B)
45601    where
45602        Assembler<'a>: Vcvtuqq2phMaskEmitter<A, B>,
45603    {
45604        <Self as Vcvtuqq2phMaskEmitter<A, B>>::vcvtuqq2ph_mask(self, op0, op1);
45605    }
45606    /// `VCVTUQQ2PH_MASK_ER`.
45607    ///
45608    /// Supported operand variants:
45609    ///
45610    /// ```text
45611    /// +---+----------+
45612    /// | # | Operands |
45613    /// +---+----------+
45614    /// | 1 | Xmm, Zmm |
45615    /// +---+----------+
45616    /// ```
45617    #[inline]
45618    pub fn vcvtuqq2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
45619    where
45620        Assembler<'a>: Vcvtuqq2phMaskErEmitter<A, B>,
45621    {
45622        <Self as Vcvtuqq2phMaskErEmitter<A, B>>::vcvtuqq2ph_mask_er(self, op0, op1);
45623    }
45624    /// `VCVTUQQ2PH_MASKZ`.
45625    ///
45626    /// Supported operand variants:
45627    ///
45628    /// ```text
45629    /// +---+----------+
45630    /// | # | Operands |
45631    /// +---+----------+
45632    /// | 1 | Xmm, Mem |
45633    /// | 2 | Xmm, Xmm |
45634    /// | 3 | Xmm, Ymm |
45635    /// | 4 | Xmm, Zmm |
45636    /// +---+----------+
45637    /// ```
45638    #[inline]
45639    pub fn vcvtuqq2ph_maskz<A, B>(&mut self, op0: A, op1: B)
45640    where
45641        Assembler<'a>: Vcvtuqq2phMaskzEmitter<A, B>,
45642    {
45643        <Self as Vcvtuqq2phMaskzEmitter<A, B>>::vcvtuqq2ph_maskz(self, op0, op1);
45644    }
45645    /// `VCVTUQQ2PH_MASKZ_ER`.
45646    ///
45647    /// Supported operand variants:
45648    ///
45649    /// ```text
45650    /// +---+----------+
45651    /// | # | Operands |
45652    /// +---+----------+
45653    /// | 1 | Xmm, Zmm |
45654    /// +---+----------+
45655    /// ```
45656    #[inline]
45657    pub fn vcvtuqq2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
45658    where
45659        Assembler<'a>: Vcvtuqq2phMaskzErEmitter<A, B>,
45660    {
45661        <Self as Vcvtuqq2phMaskzErEmitter<A, B>>::vcvtuqq2ph_maskz_er(self, op0, op1);
45662    }
45663    /// `VCVTUSI2SH`.
45664    ///
45665    /// Supported operand variants:
45666    ///
45667    /// ```text
45668    /// +---+---------------+
45669    /// | # | Operands      |
45670    /// +---+---------------+
45671    /// | 1 | Xmm, Xmm, Gpd |
45672    /// | 2 | Xmm, Xmm, Gpq |
45673    /// | 3 | Xmm, Xmm, Mem |
45674    /// +---+---------------+
45675    /// ```
45676    #[inline]
45677    pub fn vcvtusi2sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
45678    where
45679        Assembler<'a>: Vcvtusi2shEmitter<A, B, C>,
45680    {
45681        <Self as Vcvtusi2shEmitter<A, B, C>>::vcvtusi2sh(self, op0, op1, op2);
45682    }
45683    /// `VCVTUSI2SH_ER`.
45684    ///
45685    /// Supported operand variants:
45686    ///
45687    /// ```text
45688    /// +---+---------------+
45689    /// | # | Operands      |
45690    /// +---+---------------+
45691    /// | 1 | Xmm, Xmm, Gpd |
45692    /// | 2 | Xmm, Xmm, Gpq |
45693    /// +---+---------------+
45694    /// ```
45695    #[inline]
45696    pub fn vcvtusi2sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
45697    where
45698        Assembler<'a>: Vcvtusi2shErEmitter<A, B, C>,
45699    {
45700        <Self as Vcvtusi2shErEmitter<A, B, C>>::vcvtusi2sh_er(self, op0, op1, op2);
45701    }
45702    /// `VCVTUW2PH`.
45703    ///
45704    /// Supported operand variants:
45705    ///
45706    /// ```text
45707    /// +---+----------+
45708    /// | # | Operands |
45709    /// +---+----------+
45710    /// | 1 | Xmm, Mem |
45711    /// | 2 | Xmm, Xmm |
45712    /// | 3 | Ymm, Mem |
45713    /// | 4 | Ymm, Ymm |
45714    /// | 5 | Zmm, Mem |
45715    /// | 6 | Zmm, Zmm |
45716    /// +---+----------+
45717    /// ```
45718    #[inline]
45719    pub fn vcvtuw2ph<A, B>(&mut self, op0: A, op1: B)
45720    where
45721        Assembler<'a>: Vcvtuw2phEmitter<A, B>,
45722    {
45723        <Self as Vcvtuw2phEmitter<A, B>>::vcvtuw2ph(self, op0, op1);
45724    }
45725    /// `VCVTUW2PH_ER`.
45726    ///
45727    /// Supported operand variants:
45728    ///
45729    /// ```text
45730    /// +---+----------+
45731    /// | # | Operands |
45732    /// +---+----------+
45733    /// | 1 | Zmm, Zmm |
45734    /// +---+----------+
45735    /// ```
45736    #[inline]
45737    pub fn vcvtuw2ph_er<A, B>(&mut self, op0: A, op1: B)
45738    where
45739        Assembler<'a>: Vcvtuw2phErEmitter<A, B>,
45740    {
45741        <Self as Vcvtuw2phErEmitter<A, B>>::vcvtuw2ph_er(self, op0, op1);
45742    }
45743    /// `VCVTUW2PH_MASK`.
45744    ///
45745    /// Supported operand variants:
45746    ///
45747    /// ```text
45748    /// +---+----------+
45749    /// | # | Operands |
45750    /// +---+----------+
45751    /// | 1 | Xmm, Mem |
45752    /// | 2 | Xmm, Xmm |
45753    /// | 3 | Ymm, Mem |
45754    /// | 4 | Ymm, Ymm |
45755    /// | 5 | Zmm, Mem |
45756    /// | 6 | Zmm, Zmm |
45757    /// +---+----------+
45758    /// ```
45759    #[inline]
45760    pub fn vcvtuw2ph_mask<A, B>(&mut self, op0: A, op1: B)
45761    where
45762        Assembler<'a>: Vcvtuw2phMaskEmitter<A, B>,
45763    {
45764        <Self as Vcvtuw2phMaskEmitter<A, B>>::vcvtuw2ph_mask(self, op0, op1);
45765    }
45766    /// `VCVTUW2PH_MASK_ER`.
45767    ///
45768    /// Supported operand variants:
45769    ///
45770    /// ```text
45771    /// +---+----------+
45772    /// | # | Operands |
45773    /// +---+----------+
45774    /// | 1 | Zmm, Zmm |
45775    /// +---+----------+
45776    /// ```
45777    #[inline]
45778    pub fn vcvtuw2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
45779    where
45780        Assembler<'a>: Vcvtuw2phMaskErEmitter<A, B>,
45781    {
45782        <Self as Vcvtuw2phMaskErEmitter<A, B>>::vcvtuw2ph_mask_er(self, op0, op1);
45783    }
45784    /// `VCVTUW2PH_MASKZ`.
45785    ///
45786    /// Supported operand variants:
45787    ///
45788    /// ```text
45789    /// +---+----------+
45790    /// | # | Operands |
45791    /// +---+----------+
45792    /// | 1 | Xmm, Mem |
45793    /// | 2 | Xmm, Xmm |
45794    /// | 3 | Ymm, Mem |
45795    /// | 4 | Ymm, Ymm |
45796    /// | 5 | Zmm, Mem |
45797    /// | 6 | Zmm, Zmm |
45798    /// +---+----------+
45799    /// ```
45800    #[inline]
45801    pub fn vcvtuw2ph_maskz<A, B>(&mut self, op0: A, op1: B)
45802    where
45803        Assembler<'a>: Vcvtuw2phMaskzEmitter<A, B>,
45804    {
45805        <Self as Vcvtuw2phMaskzEmitter<A, B>>::vcvtuw2ph_maskz(self, op0, op1);
45806    }
45807    /// `VCVTUW2PH_MASKZ_ER`.
45808    ///
45809    /// Supported operand variants:
45810    ///
45811    /// ```text
45812    /// +---+----------+
45813    /// | # | Operands |
45814    /// +---+----------+
45815    /// | 1 | Zmm, Zmm |
45816    /// +---+----------+
45817    /// ```
45818    #[inline]
45819    pub fn vcvtuw2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
45820    where
45821        Assembler<'a>: Vcvtuw2phMaskzErEmitter<A, B>,
45822    {
45823        <Self as Vcvtuw2phMaskzErEmitter<A, B>>::vcvtuw2ph_maskz_er(self, op0, op1);
45824    }
45825    /// `VCVTW2PH`.
45826    ///
45827    /// Supported operand variants:
45828    ///
45829    /// ```text
45830    /// +---+----------+
45831    /// | # | Operands |
45832    /// +---+----------+
45833    /// | 1 | Xmm, Mem |
45834    /// | 2 | Xmm, Xmm |
45835    /// | 3 | Ymm, Mem |
45836    /// | 4 | Ymm, Ymm |
45837    /// | 5 | Zmm, Mem |
45838    /// | 6 | Zmm, Zmm |
45839    /// +---+----------+
45840    /// ```
45841    #[inline]
45842    pub fn vcvtw2ph<A, B>(&mut self, op0: A, op1: B)
45843    where
45844        Assembler<'a>: Vcvtw2phEmitter<A, B>,
45845    {
45846        <Self as Vcvtw2phEmitter<A, B>>::vcvtw2ph(self, op0, op1);
45847    }
45848    /// `VCVTW2PH_ER`.
45849    ///
45850    /// Supported operand variants:
45851    ///
45852    /// ```text
45853    /// +---+----------+
45854    /// | # | Operands |
45855    /// +---+----------+
45856    /// | 1 | Zmm, Zmm |
45857    /// +---+----------+
45858    /// ```
45859    #[inline]
45860    pub fn vcvtw2ph_er<A, B>(&mut self, op0: A, op1: B)
45861    where
45862        Assembler<'a>: Vcvtw2phErEmitter<A, B>,
45863    {
45864        <Self as Vcvtw2phErEmitter<A, B>>::vcvtw2ph_er(self, op0, op1);
45865    }
45866    /// `VCVTW2PH_MASK`.
45867    ///
45868    /// Supported operand variants:
45869    ///
45870    /// ```text
45871    /// +---+----------+
45872    /// | # | Operands |
45873    /// +---+----------+
45874    /// | 1 | Xmm, Mem |
45875    /// | 2 | Xmm, Xmm |
45876    /// | 3 | Ymm, Mem |
45877    /// | 4 | Ymm, Ymm |
45878    /// | 5 | Zmm, Mem |
45879    /// | 6 | Zmm, Zmm |
45880    /// +---+----------+
45881    /// ```
45882    #[inline]
45883    pub fn vcvtw2ph_mask<A, B>(&mut self, op0: A, op1: B)
45884    where
45885        Assembler<'a>: Vcvtw2phMaskEmitter<A, B>,
45886    {
45887        <Self as Vcvtw2phMaskEmitter<A, B>>::vcvtw2ph_mask(self, op0, op1);
45888    }
45889    /// `VCVTW2PH_MASK_ER`.
45890    ///
45891    /// Supported operand variants:
45892    ///
45893    /// ```text
45894    /// +---+----------+
45895    /// | # | Operands |
45896    /// +---+----------+
45897    /// | 1 | Zmm, Zmm |
45898    /// +---+----------+
45899    /// ```
45900    #[inline]
45901    pub fn vcvtw2ph_mask_er<A, B>(&mut self, op0: A, op1: B)
45902    where
45903        Assembler<'a>: Vcvtw2phMaskErEmitter<A, B>,
45904    {
45905        <Self as Vcvtw2phMaskErEmitter<A, B>>::vcvtw2ph_mask_er(self, op0, op1);
45906    }
45907    /// `VCVTW2PH_MASKZ`.
45908    ///
45909    /// Supported operand variants:
45910    ///
45911    /// ```text
45912    /// +---+----------+
45913    /// | # | Operands |
45914    /// +---+----------+
45915    /// | 1 | Xmm, Mem |
45916    /// | 2 | Xmm, Xmm |
45917    /// | 3 | Ymm, Mem |
45918    /// | 4 | Ymm, Ymm |
45919    /// | 5 | Zmm, Mem |
45920    /// | 6 | Zmm, Zmm |
45921    /// +---+----------+
45922    /// ```
45923    #[inline]
45924    pub fn vcvtw2ph_maskz<A, B>(&mut self, op0: A, op1: B)
45925    where
45926        Assembler<'a>: Vcvtw2phMaskzEmitter<A, B>,
45927    {
45928        <Self as Vcvtw2phMaskzEmitter<A, B>>::vcvtw2ph_maskz(self, op0, op1);
45929    }
45930    /// `VCVTW2PH_MASKZ_ER`.
45931    ///
45932    /// Supported operand variants:
45933    ///
45934    /// ```text
45935    /// +---+----------+
45936    /// | # | Operands |
45937    /// +---+----------+
45938    /// | 1 | Zmm, Zmm |
45939    /// +---+----------+
45940    /// ```
45941    #[inline]
45942    pub fn vcvtw2ph_maskz_er<A, B>(&mut self, op0: A, op1: B)
45943    where
45944        Assembler<'a>: Vcvtw2phMaskzErEmitter<A, B>,
45945    {
45946        <Self as Vcvtw2phMaskzErEmitter<A, B>>::vcvtw2ph_maskz_er(self, op0, op1);
45947    }
45948    /// `VDIVPH`.
45949    ///
45950    /// Supported operand variants:
45951    ///
45952    /// ```text
45953    /// +---+---------------+
45954    /// | # | Operands      |
45955    /// +---+---------------+
45956    /// | 1 | Xmm, Xmm, Mem |
45957    /// | 2 | Xmm, Xmm, Xmm |
45958    /// | 3 | Ymm, Ymm, Mem |
45959    /// | 4 | Ymm, Ymm, Ymm |
45960    /// | 5 | Zmm, Zmm, Mem |
45961    /// | 6 | Zmm, Zmm, Zmm |
45962    /// +---+---------------+
45963    /// ```
45964    #[inline]
45965    pub fn vdivph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
45966    where
45967        Assembler<'a>: VdivphEmitter<A, B, C>,
45968    {
45969        <Self as VdivphEmitter<A, B, C>>::vdivph(self, op0, op1, op2);
45970    }
45971    /// `VDIVPH_ER`.
45972    ///
45973    /// Supported operand variants:
45974    ///
45975    /// ```text
45976    /// +---+---------------+
45977    /// | # | Operands      |
45978    /// +---+---------------+
45979    /// | 1 | Zmm, Zmm, Zmm |
45980    /// +---+---------------+
45981    /// ```
45982    #[inline]
45983    pub fn vdivph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
45984    where
45985        Assembler<'a>: VdivphErEmitter<A, B, C>,
45986    {
45987        <Self as VdivphErEmitter<A, B, C>>::vdivph_er(self, op0, op1, op2);
45988    }
45989    /// `VDIVPH_MASK`.
45990    ///
45991    /// Supported operand variants:
45992    ///
45993    /// ```text
45994    /// +---+---------------+
45995    /// | # | Operands      |
45996    /// +---+---------------+
45997    /// | 1 | Xmm, Xmm, Mem |
45998    /// | 2 | Xmm, Xmm, Xmm |
45999    /// | 3 | Ymm, Ymm, Mem |
46000    /// | 4 | Ymm, Ymm, Ymm |
46001    /// | 5 | Zmm, Zmm, Mem |
46002    /// | 6 | Zmm, Zmm, Zmm |
46003    /// +---+---------------+
46004    /// ```
46005    #[inline]
46006    pub fn vdivph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46007    where
46008        Assembler<'a>: VdivphMaskEmitter<A, B, C>,
46009    {
46010        <Self as VdivphMaskEmitter<A, B, C>>::vdivph_mask(self, op0, op1, op2);
46011    }
46012    /// `VDIVPH_MASK_ER`.
46013    ///
46014    /// Supported operand variants:
46015    ///
46016    /// ```text
46017    /// +---+---------------+
46018    /// | # | Operands      |
46019    /// +---+---------------+
46020    /// | 1 | Zmm, Zmm, Zmm |
46021    /// +---+---------------+
46022    /// ```
46023    #[inline]
46024    pub fn vdivph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46025    where
46026        Assembler<'a>: VdivphMaskErEmitter<A, B, C>,
46027    {
46028        <Self as VdivphMaskErEmitter<A, B, C>>::vdivph_mask_er(self, op0, op1, op2);
46029    }
46030    /// `VDIVPH_MASKZ`.
46031    ///
46032    /// Supported operand variants:
46033    ///
46034    /// ```text
46035    /// +---+---------------+
46036    /// | # | Operands      |
46037    /// +---+---------------+
46038    /// | 1 | Xmm, Xmm, Mem |
46039    /// | 2 | Xmm, Xmm, Xmm |
46040    /// | 3 | Ymm, Ymm, Mem |
46041    /// | 4 | Ymm, Ymm, Ymm |
46042    /// | 5 | Zmm, Zmm, Mem |
46043    /// | 6 | Zmm, Zmm, Zmm |
46044    /// +---+---------------+
46045    /// ```
46046    #[inline]
46047    pub fn vdivph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46048    where
46049        Assembler<'a>: VdivphMaskzEmitter<A, B, C>,
46050    {
46051        <Self as VdivphMaskzEmitter<A, B, C>>::vdivph_maskz(self, op0, op1, op2);
46052    }
46053    /// `VDIVPH_MASKZ_ER`.
46054    ///
46055    /// Supported operand variants:
46056    ///
46057    /// ```text
46058    /// +---+---------------+
46059    /// | # | Operands      |
46060    /// +---+---------------+
46061    /// | 1 | Zmm, Zmm, Zmm |
46062    /// +---+---------------+
46063    /// ```
46064    #[inline]
46065    pub fn vdivph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46066    where
46067        Assembler<'a>: VdivphMaskzErEmitter<A, B, C>,
46068    {
46069        <Self as VdivphMaskzErEmitter<A, B, C>>::vdivph_maskz_er(self, op0, op1, op2);
46070    }
46071    /// `VDIVSH`.
46072    ///
46073    /// Supported operand variants:
46074    ///
46075    /// ```text
46076    /// +---+---------------+
46077    /// | # | Operands      |
46078    /// +---+---------------+
46079    /// | 1 | Xmm, Xmm, Mem |
46080    /// | 2 | Xmm, Xmm, Xmm |
46081    /// +---+---------------+
46082    /// ```
46083    #[inline]
46084    pub fn vdivsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46085    where
46086        Assembler<'a>: VdivshEmitter<A, B, C>,
46087    {
46088        <Self as VdivshEmitter<A, B, C>>::vdivsh(self, op0, op1, op2);
46089    }
46090    /// `VDIVSH_ER`.
46091    ///
46092    /// Supported operand variants:
46093    ///
46094    /// ```text
46095    /// +---+---------------+
46096    /// | # | Operands      |
46097    /// +---+---------------+
46098    /// | 1 | Xmm, Xmm, Xmm |
46099    /// +---+---------------+
46100    /// ```
46101    #[inline]
46102    pub fn vdivsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46103    where
46104        Assembler<'a>: VdivshErEmitter<A, B, C>,
46105    {
46106        <Self as VdivshErEmitter<A, B, C>>::vdivsh_er(self, op0, op1, op2);
46107    }
46108    /// `VDIVSH_MASK`.
46109    ///
46110    /// Supported operand variants:
46111    ///
46112    /// ```text
46113    /// +---+---------------+
46114    /// | # | Operands      |
46115    /// +---+---------------+
46116    /// | 1 | Xmm, Xmm, Mem |
46117    /// | 2 | Xmm, Xmm, Xmm |
46118    /// +---+---------------+
46119    /// ```
46120    #[inline]
46121    pub fn vdivsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46122    where
46123        Assembler<'a>: VdivshMaskEmitter<A, B, C>,
46124    {
46125        <Self as VdivshMaskEmitter<A, B, C>>::vdivsh_mask(self, op0, op1, op2);
46126    }
46127    /// `VDIVSH_MASK_ER`.
46128    ///
46129    /// Supported operand variants:
46130    ///
46131    /// ```text
46132    /// +---+---------------+
46133    /// | # | Operands      |
46134    /// +---+---------------+
46135    /// | 1 | Xmm, Xmm, Xmm |
46136    /// +---+---------------+
46137    /// ```
46138    #[inline]
46139    pub fn vdivsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46140    where
46141        Assembler<'a>: VdivshMaskErEmitter<A, B, C>,
46142    {
46143        <Self as VdivshMaskErEmitter<A, B, C>>::vdivsh_mask_er(self, op0, op1, op2);
46144    }
46145    /// `VDIVSH_MASKZ`.
46146    ///
46147    /// Supported operand variants:
46148    ///
46149    /// ```text
46150    /// +---+---------------+
46151    /// | # | Operands      |
46152    /// +---+---------------+
46153    /// | 1 | Xmm, Xmm, Mem |
46154    /// | 2 | Xmm, Xmm, Xmm |
46155    /// +---+---------------+
46156    /// ```
46157    #[inline]
46158    pub fn vdivsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46159    where
46160        Assembler<'a>: VdivshMaskzEmitter<A, B, C>,
46161    {
46162        <Self as VdivshMaskzEmitter<A, B, C>>::vdivsh_maskz(self, op0, op1, op2);
46163    }
46164    /// `VDIVSH_MASKZ_ER`.
46165    ///
46166    /// Supported operand variants:
46167    ///
46168    /// ```text
46169    /// +---+---------------+
46170    /// | # | Operands      |
46171    /// +---+---------------+
46172    /// | 1 | Xmm, Xmm, Xmm |
46173    /// +---+---------------+
46174    /// ```
46175    #[inline]
46176    pub fn vdivsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46177    where
46178        Assembler<'a>: VdivshMaskzErEmitter<A, B, C>,
46179    {
46180        <Self as VdivshMaskzErEmitter<A, B, C>>::vdivsh_maskz_er(self, op0, op1, op2);
46181    }
46182    /// `VERR`.
46183    ///
46184    /// Supported operand variants:
46185    ///
46186    /// ```text
46187    /// +---+----------+
46188    /// | # | Operands |
46189    /// +---+----------+
46190    /// | 1 | Gpd      |
46191    /// | 2 | Mem      |
46192    /// +---+----------+
46193    /// ```
46194    #[inline]
46195    pub fn verr<A>(&mut self, op0: A)
46196    where
46197        Assembler<'a>: VerrEmitter<A>,
46198    {
46199        <Self as VerrEmitter<A>>::verr(self, op0);
46200    }
46201    /// `VERW`.
46202    ///
46203    /// Supported operand variants:
46204    ///
46205    /// ```text
46206    /// +---+----------+
46207    /// | # | Operands |
46208    /// +---+----------+
46209    /// | 1 | Gpd      |
46210    /// | 2 | Mem      |
46211    /// +---+----------+
46212    /// ```
46213    #[inline]
46214    pub fn verw<A>(&mut self, op0: A)
46215    where
46216        Assembler<'a>: VerwEmitter<A>,
46217    {
46218        <Self as VerwEmitter<A>>::verw(self, op0);
46219    }
46220    /// `VFCMADDCPH`.
46221    ///
46222    /// Supported operand variants:
46223    ///
46224    /// ```text
46225    /// +---+---------------+
46226    /// | # | Operands      |
46227    /// +---+---------------+
46228    /// | 1 | Xmm, Xmm, Mem |
46229    /// | 2 | Xmm, Xmm, Xmm |
46230    /// | 3 | Ymm, Ymm, Mem |
46231    /// | 4 | Ymm, Ymm, Ymm |
46232    /// | 5 | Zmm, Zmm, Mem |
46233    /// | 6 | Zmm, Zmm, Zmm |
46234    /// +---+---------------+
46235    /// ```
46236    #[inline]
46237    pub fn vfcmaddcph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46238    where
46239        Assembler<'a>: VfcmaddcphEmitter<A, B, C>,
46240    {
46241        <Self as VfcmaddcphEmitter<A, B, C>>::vfcmaddcph(self, op0, op1, op2);
46242    }
46243    /// `VFCMADDCPH_ER`.
46244    ///
46245    /// Supported operand variants:
46246    ///
46247    /// ```text
46248    /// +---+---------------+
46249    /// | # | Operands      |
46250    /// +---+---------------+
46251    /// | 1 | Zmm, Zmm, Zmm |
46252    /// +---+---------------+
46253    /// ```
46254    #[inline]
46255    pub fn vfcmaddcph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46256    where
46257        Assembler<'a>: VfcmaddcphErEmitter<A, B, C>,
46258    {
46259        <Self as VfcmaddcphErEmitter<A, B, C>>::vfcmaddcph_er(self, op0, op1, op2);
46260    }
46261    /// `VFCMADDCPH_MASK`.
46262    ///
46263    /// Supported operand variants:
46264    ///
46265    /// ```text
46266    /// +---+---------------+
46267    /// | # | Operands      |
46268    /// +---+---------------+
46269    /// | 1 | Xmm, Xmm, Mem |
46270    /// | 2 | Xmm, Xmm, Xmm |
46271    /// | 3 | Ymm, Ymm, Mem |
46272    /// | 4 | Ymm, Ymm, Ymm |
46273    /// | 5 | Zmm, Zmm, Mem |
46274    /// | 6 | Zmm, Zmm, Zmm |
46275    /// +---+---------------+
46276    /// ```
46277    #[inline]
46278    pub fn vfcmaddcph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46279    where
46280        Assembler<'a>: VfcmaddcphMaskEmitter<A, B, C>,
46281    {
46282        <Self as VfcmaddcphMaskEmitter<A, B, C>>::vfcmaddcph_mask(self, op0, op1, op2);
46283    }
46284    /// `VFCMADDCPH_MASK_ER`.
46285    ///
46286    /// Supported operand variants:
46287    ///
46288    /// ```text
46289    /// +---+---------------+
46290    /// | # | Operands      |
46291    /// +---+---------------+
46292    /// | 1 | Zmm, Zmm, Zmm |
46293    /// +---+---------------+
46294    /// ```
46295    #[inline]
46296    pub fn vfcmaddcph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46297    where
46298        Assembler<'a>: VfcmaddcphMaskErEmitter<A, B, C>,
46299    {
46300        <Self as VfcmaddcphMaskErEmitter<A, B, C>>::vfcmaddcph_mask_er(self, op0, op1, op2);
46301    }
46302    /// `VFCMADDCPH_MASKZ`.
46303    ///
46304    /// Supported operand variants:
46305    ///
46306    /// ```text
46307    /// +---+---------------+
46308    /// | # | Operands      |
46309    /// +---+---------------+
46310    /// | 1 | Xmm, Xmm, Mem |
46311    /// | 2 | Xmm, Xmm, Xmm |
46312    /// | 3 | Ymm, Ymm, Mem |
46313    /// | 4 | Ymm, Ymm, Ymm |
46314    /// | 5 | Zmm, Zmm, Mem |
46315    /// | 6 | Zmm, Zmm, Zmm |
46316    /// +---+---------------+
46317    /// ```
46318    #[inline]
46319    pub fn vfcmaddcph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46320    where
46321        Assembler<'a>: VfcmaddcphMaskzEmitter<A, B, C>,
46322    {
46323        <Self as VfcmaddcphMaskzEmitter<A, B, C>>::vfcmaddcph_maskz(self, op0, op1, op2);
46324    }
46325    /// `VFCMADDCPH_MASKZ_ER`.
46326    ///
46327    /// Supported operand variants:
46328    ///
46329    /// ```text
46330    /// +---+---------------+
46331    /// | # | Operands      |
46332    /// +---+---------------+
46333    /// | 1 | Zmm, Zmm, Zmm |
46334    /// +---+---------------+
46335    /// ```
46336    #[inline]
46337    pub fn vfcmaddcph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46338    where
46339        Assembler<'a>: VfcmaddcphMaskzErEmitter<A, B, C>,
46340    {
46341        <Self as VfcmaddcphMaskzErEmitter<A, B, C>>::vfcmaddcph_maskz_er(self, op0, op1, op2);
46342    }
46343    /// `VFCMADDCSH`.
46344    ///
46345    /// Supported operand variants:
46346    ///
46347    /// ```text
46348    /// +---+---------------+
46349    /// | # | Operands      |
46350    /// +---+---------------+
46351    /// | 1 | Xmm, Xmm, Mem |
46352    /// | 2 | Xmm, Xmm, Xmm |
46353    /// +---+---------------+
46354    /// ```
46355    #[inline]
46356    pub fn vfcmaddcsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46357    where
46358        Assembler<'a>: VfcmaddcshEmitter<A, B, C>,
46359    {
46360        <Self as VfcmaddcshEmitter<A, B, C>>::vfcmaddcsh(self, op0, op1, op2);
46361    }
46362    /// `VFCMADDCSH_ER`.
46363    ///
46364    /// Supported operand variants:
46365    ///
46366    /// ```text
46367    /// +---+---------------+
46368    /// | # | Operands      |
46369    /// +---+---------------+
46370    /// | 1 | Xmm, Xmm, Xmm |
46371    /// +---+---------------+
46372    /// ```
46373    #[inline]
46374    pub fn vfcmaddcsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46375    where
46376        Assembler<'a>: VfcmaddcshErEmitter<A, B, C>,
46377    {
46378        <Self as VfcmaddcshErEmitter<A, B, C>>::vfcmaddcsh_er(self, op0, op1, op2);
46379    }
46380    /// `VFCMADDCSH_MASK`.
46381    ///
46382    /// Supported operand variants:
46383    ///
46384    /// ```text
46385    /// +---+---------------+
46386    /// | # | Operands      |
46387    /// +---+---------------+
46388    /// | 1 | Xmm, Xmm, Mem |
46389    /// | 2 | Xmm, Xmm, Xmm |
46390    /// +---+---------------+
46391    /// ```
46392    #[inline]
46393    pub fn vfcmaddcsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46394    where
46395        Assembler<'a>: VfcmaddcshMaskEmitter<A, B, C>,
46396    {
46397        <Self as VfcmaddcshMaskEmitter<A, B, C>>::vfcmaddcsh_mask(self, op0, op1, op2);
46398    }
46399    /// `VFCMADDCSH_MASK_ER`.
46400    ///
46401    /// Supported operand variants:
46402    ///
46403    /// ```text
46404    /// +---+---------------+
46405    /// | # | Operands      |
46406    /// +---+---------------+
46407    /// | 1 | Xmm, Xmm, Xmm |
46408    /// +---+---------------+
46409    /// ```
46410    #[inline]
46411    pub fn vfcmaddcsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46412    where
46413        Assembler<'a>: VfcmaddcshMaskErEmitter<A, B, C>,
46414    {
46415        <Self as VfcmaddcshMaskErEmitter<A, B, C>>::vfcmaddcsh_mask_er(self, op0, op1, op2);
46416    }
46417    /// `VFCMADDCSH_MASKZ`.
46418    ///
46419    /// Supported operand variants:
46420    ///
46421    /// ```text
46422    /// +---+---------------+
46423    /// | # | Operands      |
46424    /// +---+---------------+
46425    /// | 1 | Xmm, Xmm, Mem |
46426    /// | 2 | Xmm, Xmm, Xmm |
46427    /// +---+---------------+
46428    /// ```
46429    #[inline]
46430    pub fn vfcmaddcsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46431    where
46432        Assembler<'a>: VfcmaddcshMaskzEmitter<A, B, C>,
46433    {
46434        <Self as VfcmaddcshMaskzEmitter<A, B, C>>::vfcmaddcsh_maskz(self, op0, op1, op2);
46435    }
46436    /// `VFCMADDCSH_MASKZ_ER`.
46437    ///
46438    /// Supported operand variants:
46439    ///
46440    /// ```text
46441    /// +---+---------------+
46442    /// | # | Operands      |
46443    /// +---+---------------+
46444    /// | 1 | Xmm, Xmm, Xmm |
46445    /// +---+---------------+
46446    /// ```
46447    #[inline]
46448    pub fn vfcmaddcsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46449    where
46450        Assembler<'a>: VfcmaddcshMaskzErEmitter<A, B, C>,
46451    {
46452        <Self as VfcmaddcshMaskzErEmitter<A, B, C>>::vfcmaddcsh_maskz_er(self, op0, op1, op2);
46453    }
46454    /// `VFCMULCPH`.
46455    ///
46456    /// Supported operand variants:
46457    ///
46458    /// ```text
46459    /// +---+---------------+
46460    /// | # | Operands      |
46461    /// +---+---------------+
46462    /// | 1 | Xmm, Xmm, Mem |
46463    /// | 2 | Xmm, Xmm, Xmm |
46464    /// | 3 | Ymm, Ymm, Mem |
46465    /// | 4 | Ymm, Ymm, Ymm |
46466    /// | 5 | Zmm, Zmm, Mem |
46467    /// | 6 | Zmm, Zmm, Zmm |
46468    /// +---+---------------+
46469    /// ```
46470    #[inline]
46471    pub fn vfcmulcph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46472    where
46473        Assembler<'a>: VfcmulcphEmitter<A, B, C>,
46474    {
46475        <Self as VfcmulcphEmitter<A, B, C>>::vfcmulcph(self, op0, op1, op2);
46476    }
46477    /// `VFCMULCPH_ER`.
46478    ///
46479    /// Supported operand variants:
46480    ///
46481    /// ```text
46482    /// +---+---------------+
46483    /// | # | Operands      |
46484    /// +---+---------------+
46485    /// | 1 | Zmm, Zmm, Zmm |
46486    /// +---+---------------+
46487    /// ```
46488    #[inline]
46489    pub fn vfcmulcph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46490    where
46491        Assembler<'a>: VfcmulcphErEmitter<A, B, C>,
46492    {
46493        <Self as VfcmulcphErEmitter<A, B, C>>::vfcmulcph_er(self, op0, op1, op2);
46494    }
46495    /// `VFCMULCPH_MASK`.
46496    ///
46497    /// Supported operand variants:
46498    ///
46499    /// ```text
46500    /// +---+---------------+
46501    /// | # | Operands      |
46502    /// +---+---------------+
46503    /// | 1 | Xmm, Xmm, Mem |
46504    /// | 2 | Xmm, Xmm, Xmm |
46505    /// | 3 | Ymm, Ymm, Mem |
46506    /// | 4 | Ymm, Ymm, Ymm |
46507    /// | 5 | Zmm, Zmm, Mem |
46508    /// | 6 | Zmm, Zmm, Zmm |
46509    /// +---+---------------+
46510    /// ```
46511    #[inline]
46512    pub fn vfcmulcph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46513    where
46514        Assembler<'a>: VfcmulcphMaskEmitter<A, B, C>,
46515    {
46516        <Self as VfcmulcphMaskEmitter<A, B, C>>::vfcmulcph_mask(self, op0, op1, op2);
46517    }
46518    /// `VFCMULCPH_MASK_ER`.
46519    ///
46520    /// Supported operand variants:
46521    ///
46522    /// ```text
46523    /// +---+---------------+
46524    /// | # | Operands      |
46525    /// +---+---------------+
46526    /// | 1 | Zmm, Zmm, Zmm |
46527    /// +---+---------------+
46528    /// ```
46529    #[inline]
46530    pub fn vfcmulcph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46531    where
46532        Assembler<'a>: VfcmulcphMaskErEmitter<A, B, C>,
46533    {
46534        <Self as VfcmulcphMaskErEmitter<A, B, C>>::vfcmulcph_mask_er(self, op0, op1, op2);
46535    }
46536    /// `VFCMULCPH_MASKZ`.
46537    ///
46538    /// Supported operand variants:
46539    ///
46540    /// ```text
46541    /// +---+---------------+
46542    /// | # | Operands      |
46543    /// +---+---------------+
46544    /// | 1 | Xmm, Xmm, Mem |
46545    /// | 2 | Xmm, Xmm, Xmm |
46546    /// | 3 | Ymm, Ymm, Mem |
46547    /// | 4 | Ymm, Ymm, Ymm |
46548    /// | 5 | Zmm, Zmm, Mem |
46549    /// | 6 | Zmm, Zmm, Zmm |
46550    /// +---+---------------+
46551    /// ```
46552    #[inline]
46553    pub fn vfcmulcph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46554    where
46555        Assembler<'a>: VfcmulcphMaskzEmitter<A, B, C>,
46556    {
46557        <Self as VfcmulcphMaskzEmitter<A, B, C>>::vfcmulcph_maskz(self, op0, op1, op2);
46558    }
46559    /// `VFCMULCPH_MASKZ_ER`.
46560    ///
46561    /// Supported operand variants:
46562    ///
46563    /// ```text
46564    /// +---+---------------+
46565    /// | # | Operands      |
46566    /// +---+---------------+
46567    /// | 1 | Zmm, Zmm, Zmm |
46568    /// +---+---------------+
46569    /// ```
46570    #[inline]
46571    pub fn vfcmulcph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46572    where
46573        Assembler<'a>: VfcmulcphMaskzErEmitter<A, B, C>,
46574    {
46575        <Self as VfcmulcphMaskzErEmitter<A, B, C>>::vfcmulcph_maskz_er(self, op0, op1, op2);
46576    }
46577    /// `VFCMULCSH`.
46578    ///
46579    /// Supported operand variants:
46580    ///
46581    /// ```text
46582    /// +---+---------------+
46583    /// | # | Operands      |
46584    /// +---+---------------+
46585    /// | 1 | Xmm, Xmm, Mem |
46586    /// | 2 | Xmm, Xmm, Xmm |
46587    /// +---+---------------+
46588    /// ```
46589    #[inline]
46590    pub fn vfcmulcsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46591    where
46592        Assembler<'a>: VfcmulcshEmitter<A, B, C>,
46593    {
46594        <Self as VfcmulcshEmitter<A, B, C>>::vfcmulcsh(self, op0, op1, op2);
46595    }
46596    /// `VFCMULCSH_ER`.
46597    ///
46598    /// Supported operand variants:
46599    ///
46600    /// ```text
46601    /// +---+---------------+
46602    /// | # | Operands      |
46603    /// +---+---------------+
46604    /// | 1 | Xmm, Xmm, Xmm |
46605    /// +---+---------------+
46606    /// ```
46607    #[inline]
46608    pub fn vfcmulcsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46609    where
46610        Assembler<'a>: VfcmulcshErEmitter<A, B, C>,
46611    {
46612        <Self as VfcmulcshErEmitter<A, B, C>>::vfcmulcsh_er(self, op0, op1, op2);
46613    }
46614    /// `VFCMULCSH_MASK`.
46615    ///
46616    /// Supported operand variants:
46617    ///
46618    /// ```text
46619    /// +---+---------------+
46620    /// | # | Operands      |
46621    /// +---+---------------+
46622    /// | 1 | Xmm, Xmm, Mem |
46623    /// | 2 | Xmm, Xmm, Xmm |
46624    /// +---+---------------+
46625    /// ```
46626    #[inline]
46627    pub fn vfcmulcsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46628    where
46629        Assembler<'a>: VfcmulcshMaskEmitter<A, B, C>,
46630    {
46631        <Self as VfcmulcshMaskEmitter<A, B, C>>::vfcmulcsh_mask(self, op0, op1, op2);
46632    }
46633    /// `VFCMULCSH_MASK_ER`.
46634    ///
46635    /// Supported operand variants:
46636    ///
46637    /// ```text
46638    /// +---+---------------+
46639    /// | # | Operands      |
46640    /// +---+---------------+
46641    /// | 1 | Xmm, Xmm, Xmm |
46642    /// +---+---------------+
46643    /// ```
46644    #[inline]
46645    pub fn vfcmulcsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46646    where
46647        Assembler<'a>: VfcmulcshMaskErEmitter<A, B, C>,
46648    {
46649        <Self as VfcmulcshMaskErEmitter<A, B, C>>::vfcmulcsh_mask_er(self, op0, op1, op2);
46650    }
46651    /// `VFCMULCSH_MASKZ`.
46652    ///
46653    /// Supported operand variants:
46654    ///
46655    /// ```text
46656    /// +---+---------------+
46657    /// | # | Operands      |
46658    /// +---+---------------+
46659    /// | 1 | Xmm, Xmm, Mem |
46660    /// | 2 | Xmm, Xmm, Xmm |
46661    /// +---+---------------+
46662    /// ```
46663    #[inline]
46664    pub fn vfcmulcsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46665    where
46666        Assembler<'a>: VfcmulcshMaskzEmitter<A, B, C>,
46667    {
46668        <Self as VfcmulcshMaskzEmitter<A, B, C>>::vfcmulcsh_maskz(self, op0, op1, op2);
46669    }
46670    /// `VFCMULCSH_MASKZ_ER`.
46671    ///
46672    /// Supported operand variants:
46673    ///
46674    /// ```text
46675    /// +---+---------------+
46676    /// | # | Operands      |
46677    /// +---+---------------+
46678    /// | 1 | Xmm, Xmm, Xmm |
46679    /// +---+---------------+
46680    /// ```
46681    #[inline]
46682    pub fn vfcmulcsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46683    where
46684        Assembler<'a>: VfcmulcshMaskzErEmitter<A, B, C>,
46685    {
46686        <Self as VfcmulcshMaskzErEmitter<A, B, C>>::vfcmulcsh_maskz_er(self, op0, op1, op2);
46687    }
46688    /// `VFMADD132PH`.
46689    ///
46690    /// Supported operand variants:
46691    ///
46692    /// ```text
46693    /// +---+---------------+
46694    /// | # | Operands      |
46695    /// +---+---------------+
46696    /// | 1 | Xmm, Xmm, Mem |
46697    /// | 2 | Xmm, Xmm, Xmm |
46698    /// | 3 | Ymm, Ymm, Mem |
46699    /// | 4 | Ymm, Ymm, Ymm |
46700    /// | 5 | Zmm, Zmm, Mem |
46701    /// | 6 | Zmm, Zmm, Zmm |
46702    /// +---+---------------+
46703    /// ```
46704    #[inline]
46705    pub fn vfmadd132ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46706    where
46707        Assembler<'a>: Vfmadd132phEmitter<A, B, C>,
46708    {
46709        <Self as Vfmadd132phEmitter<A, B, C>>::vfmadd132ph(self, op0, op1, op2);
46710    }
46711    /// `VFMADD132PH_ER`.
46712    ///
46713    /// Supported operand variants:
46714    ///
46715    /// ```text
46716    /// +---+---------------+
46717    /// | # | Operands      |
46718    /// +---+---------------+
46719    /// | 1 | Zmm, Zmm, Zmm |
46720    /// +---+---------------+
46721    /// ```
46722    #[inline]
46723    pub fn vfmadd132ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46724    where
46725        Assembler<'a>: Vfmadd132phErEmitter<A, B, C>,
46726    {
46727        <Self as Vfmadd132phErEmitter<A, B, C>>::vfmadd132ph_er(self, op0, op1, op2);
46728    }
46729    /// `VFMADD132PH_MASK`.
46730    ///
46731    /// Supported operand variants:
46732    ///
46733    /// ```text
46734    /// +---+---------------+
46735    /// | # | Operands      |
46736    /// +---+---------------+
46737    /// | 1 | Xmm, Xmm, Mem |
46738    /// | 2 | Xmm, Xmm, Xmm |
46739    /// | 3 | Ymm, Ymm, Mem |
46740    /// | 4 | Ymm, Ymm, Ymm |
46741    /// | 5 | Zmm, Zmm, Mem |
46742    /// | 6 | Zmm, Zmm, Zmm |
46743    /// +---+---------------+
46744    /// ```
46745    #[inline]
46746    pub fn vfmadd132ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46747    where
46748        Assembler<'a>: Vfmadd132phMaskEmitter<A, B, C>,
46749    {
46750        <Self as Vfmadd132phMaskEmitter<A, B, C>>::vfmadd132ph_mask(self, op0, op1, op2);
46751    }
46752    /// `VFMADD132PH_MASK_ER`.
46753    ///
46754    /// Supported operand variants:
46755    ///
46756    /// ```text
46757    /// +---+---------------+
46758    /// | # | Operands      |
46759    /// +---+---------------+
46760    /// | 1 | Zmm, Zmm, Zmm |
46761    /// +---+---------------+
46762    /// ```
46763    #[inline]
46764    pub fn vfmadd132ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46765    where
46766        Assembler<'a>: Vfmadd132phMaskErEmitter<A, B, C>,
46767    {
46768        <Self as Vfmadd132phMaskErEmitter<A, B, C>>::vfmadd132ph_mask_er(self, op0, op1, op2);
46769    }
46770    /// `VFMADD132PH_MASKZ`.
46771    ///
46772    /// Supported operand variants:
46773    ///
46774    /// ```text
46775    /// +---+---------------+
46776    /// | # | Operands      |
46777    /// +---+---------------+
46778    /// | 1 | Xmm, Xmm, Mem |
46779    /// | 2 | Xmm, Xmm, Xmm |
46780    /// | 3 | Ymm, Ymm, Mem |
46781    /// | 4 | Ymm, Ymm, Ymm |
46782    /// | 5 | Zmm, Zmm, Mem |
46783    /// | 6 | Zmm, Zmm, Zmm |
46784    /// +---+---------------+
46785    /// ```
46786    #[inline]
46787    pub fn vfmadd132ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46788    where
46789        Assembler<'a>: Vfmadd132phMaskzEmitter<A, B, C>,
46790    {
46791        <Self as Vfmadd132phMaskzEmitter<A, B, C>>::vfmadd132ph_maskz(self, op0, op1, op2);
46792    }
46793    /// `VFMADD132PH_MASKZ_ER`.
46794    ///
46795    /// Supported operand variants:
46796    ///
46797    /// ```text
46798    /// +---+---------------+
46799    /// | # | Operands      |
46800    /// +---+---------------+
46801    /// | 1 | Zmm, Zmm, Zmm |
46802    /// +---+---------------+
46803    /// ```
46804    #[inline]
46805    pub fn vfmadd132ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46806    where
46807        Assembler<'a>: Vfmadd132phMaskzErEmitter<A, B, C>,
46808    {
46809        <Self as Vfmadd132phMaskzErEmitter<A, B, C>>::vfmadd132ph_maskz_er(self, op0, op1, op2);
46810    }
46811    /// `VFMADD132SH`.
46812    ///
46813    /// Supported operand variants:
46814    ///
46815    /// ```text
46816    /// +---+---------------+
46817    /// | # | Operands      |
46818    /// +---+---------------+
46819    /// | 1 | Xmm, Xmm, Mem |
46820    /// | 2 | Xmm, Xmm, Xmm |
46821    /// +---+---------------+
46822    /// ```
46823    #[inline]
46824    pub fn vfmadd132sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46825    where
46826        Assembler<'a>: Vfmadd132shEmitter<A, B, C>,
46827    {
46828        <Self as Vfmadd132shEmitter<A, B, C>>::vfmadd132sh(self, op0, op1, op2);
46829    }
46830    /// `VFMADD132SH_ER`.
46831    ///
46832    /// Supported operand variants:
46833    ///
46834    /// ```text
46835    /// +---+---------------+
46836    /// | # | Operands      |
46837    /// +---+---------------+
46838    /// | 1 | Xmm, Xmm, Xmm |
46839    /// +---+---------------+
46840    /// ```
46841    #[inline]
46842    pub fn vfmadd132sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46843    where
46844        Assembler<'a>: Vfmadd132shErEmitter<A, B, C>,
46845    {
46846        <Self as Vfmadd132shErEmitter<A, B, C>>::vfmadd132sh_er(self, op0, op1, op2);
46847    }
46848    /// `VFMADD132SH_MASK`.
46849    ///
46850    /// Supported operand variants:
46851    ///
46852    /// ```text
46853    /// +---+---------------+
46854    /// | # | Operands      |
46855    /// +---+---------------+
46856    /// | 1 | Xmm, Xmm, Mem |
46857    /// | 2 | Xmm, Xmm, Xmm |
46858    /// +---+---------------+
46859    /// ```
46860    #[inline]
46861    pub fn vfmadd132sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46862    where
46863        Assembler<'a>: Vfmadd132shMaskEmitter<A, B, C>,
46864    {
46865        <Self as Vfmadd132shMaskEmitter<A, B, C>>::vfmadd132sh_mask(self, op0, op1, op2);
46866    }
46867    /// `VFMADD132SH_MASK_ER`.
46868    ///
46869    /// Supported operand variants:
46870    ///
46871    /// ```text
46872    /// +---+---------------+
46873    /// | # | Operands      |
46874    /// +---+---------------+
46875    /// | 1 | Xmm, Xmm, Xmm |
46876    /// +---+---------------+
46877    /// ```
46878    #[inline]
46879    pub fn vfmadd132sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46880    where
46881        Assembler<'a>: Vfmadd132shMaskErEmitter<A, B, C>,
46882    {
46883        <Self as Vfmadd132shMaskErEmitter<A, B, C>>::vfmadd132sh_mask_er(self, op0, op1, op2);
46884    }
46885    /// `VFMADD132SH_MASKZ`.
46886    ///
46887    /// Supported operand variants:
46888    ///
46889    /// ```text
46890    /// +---+---------------+
46891    /// | # | Operands      |
46892    /// +---+---------------+
46893    /// | 1 | Xmm, Xmm, Mem |
46894    /// | 2 | Xmm, Xmm, Xmm |
46895    /// +---+---------------+
46896    /// ```
46897    #[inline]
46898    pub fn vfmadd132sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46899    where
46900        Assembler<'a>: Vfmadd132shMaskzEmitter<A, B, C>,
46901    {
46902        <Self as Vfmadd132shMaskzEmitter<A, B, C>>::vfmadd132sh_maskz(self, op0, op1, op2);
46903    }
46904    /// `VFMADD132SH_MASKZ_ER`.
46905    ///
46906    /// Supported operand variants:
46907    ///
46908    /// ```text
46909    /// +---+---------------+
46910    /// | # | Operands      |
46911    /// +---+---------------+
46912    /// | 1 | Xmm, Xmm, Xmm |
46913    /// +---+---------------+
46914    /// ```
46915    #[inline]
46916    pub fn vfmadd132sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46917    where
46918        Assembler<'a>: Vfmadd132shMaskzErEmitter<A, B, C>,
46919    {
46920        <Self as Vfmadd132shMaskzErEmitter<A, B, C>>::vfmadd132sh_maskz_er(self, op0, op1, op2);
46921    }
46922    /// `VFMADD213PH`.
46923    ///
46924    /// Supported operand variants:
46925    ///
46926    /// ```text
46927    /// +---+---------------+
46928    /// | # | Operands      |
46929    /// +---+---------------+
46930    /// | 1 | Xmm, Xmm, Mem |
46931    /// | 2 | Xmm, Xmm, Xmm |
46932    /// | 3 | Ymm, Ymm, Mem |
46933    /// | 4 | Ymm, Ymm, Ymm |
46934    /// | 5 | Zmm, Zmm, Mem |
46935    /// | 6 | Zmm, Zmm, Zmm |
46936    /// +---+---------------+
46937    /// ```
46938    #[inline]
46939    pub fn vfmadd213ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46940    where
46941        Assembler<'a>: Vfmadd213phEmitter<A, B, C>,
46942    {
46943        <Self as Vfmadd213phEmitter<A, B, C>>::vfmadd213ph(self, op0, op1, op2);
46944    }
46945    /// `VFMADD213PH_ER`.
46946    ///
46947    /// Supported operand variants:
46948    ///
46949    /// ```text
46950    /// +---+---------------+
46951    /// | # | Operands      |
46952    /// +---+---------------+
46953    /// | 1 | Zmm, Zmm, Zmm |
46954    /// +---+---------------+
46955    /// ```
46956    #[inline]
46957    pub fn vfmadd213ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46958    where
46959        Assembler<'a>: Vfmadd213phErEmitter<A, B, C>,
46960    {
46961        <Self as Vfmadd213phErEmitter<A, B, C>>::vfmadd213ph_er(self, op0, op1, op2);
46962    }
46963    /// `VFMADD213PH_MASK`.
46964    ///
46965    /// Supported operand variants:
46966    ///
46967    /// ```text
46968    /// +---+---------------+
46969    /// | # | Operands      |
46970    /// +---+---------------+
46971    /// | 1 | Xmm, Xmm, Mem |
46972    /// | 2 | Xmm, Xmm, Xmm |
46973    /// | 3 | Ymm, Ymm, Mem |
46974    /// | 4 | Ymm, Ymm, Ymm |
46975    /// | 5 | Zmm, Zmm, Mem |
46976    /// | 6 | Zmm, Zmm, Zmm |
46977    /// +---+---------------+
46978    /// ```
46979    #[inline]
46980    pub fn vfmadd213ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46981    where
46982        Assembler<'a>: Vfmadd213phMaskEmitter<A, B, C>,
46983    {
46984        <Self as Vfmadd213phMaskEmitter<A, B, C>>::vfmadd213ph_mask(self, op0, op1, op2);
46985    }
46986    /// `VFMADD213PH_MASK_ER`.
46987    ///
46988    /// Supported operand variants:
46989    ///
46990    /// ```text
46991    /// +---+---------------+
46992    /// | # | Operands      |
46993    /// +---+---------------+
46994    /// | 1 | Zmm, Zmm, Zmm |
46995    /// +---+---------------+
46996    /// ```
46997    #[inline]
46998    pub fn vfmadd213ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
46999    where
47000        Assembler<'a>: Vfmadd213phMaskErEmitter<A, B, C>,
47001    {
47002        <Self as Vfmadd213phMaskErEmitter<A, B, C>>::vfmadd213ph_mask_er(self, op0, op1, op2);
47003    }
47004    /// `VFMADD213PH_MASKZ`.
47005    ///
47006    /// Supported operand variants:
47007    ///
47008    /// ```text
47009    /// +---+---------------+
47010    /// | # | Operands      |
47011    /// +---+---------------+
47012    /// | 1 | Xmm, Xmm, Mem |
47013    /// | 2 | Xmm, Xmm, Xmm |
47014    /// | 3 | Ymm, Ymm, Mem |
47015    /// | 4 | Ymm, Ymm, Ymm |
47016    /// | 5 | Zmm, Zmm, Mem |
47017    /// | 6 | Zmm, Zmm, Zmm |
47018    /// +---+---------------+
47019    /// ```
47020    #[inline]
47021    pub fn vfmadd213ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47022    where
47023        Assembler<'a>: Vfmadd213phMaskzEmitter<A, B, C>,
47024    {
47025        <Self as Vfmadd213phMaskzEmitter<A, B, C>>::vfmadd213ph_maskz(self, op0, op1, op2);
47026    }
47027    /// `VFMADD213PH_MASKZ_ER`.
47028    ///
47029    /// Supported operand variants:
47030    ///
47031    /// ```text
47032    /// +---+---------------+
47033    /// | # | Operands      |
47034    /// +---+---------------+
47035    /// | 1 | Zmm, Zmm, Zmm |
47036    /// +---+---------------+
47037    /// ```
47038    #[inline]
47039    pub fn vfmadd213ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47040    where
47041        Assembler<'a>: Vfmadd213phMaskzErEmitter<A, B, C>,
47042    {
47043        <Self as Vfmadd213phMaskzErEmitter<A, B, C>>::vfmadd213ph_maskz_er(self, op0, op1, op2);
47044    }
47045    /// `VFMADD213SH`.
47046    ///
47047    /// Supported operand variants:
47048    ///
47049    /// ```text
47050    /// +---+---------------+
47051    /// | # | Operands      |
47052    /// +---+---------------+
47053    /// | 1 | Xmm, Xmm, Mem |
47054    /// | 2 | Xmm, Xmm, Xmm |
47055    /// +---+---------------+
47056    /// ```
47057    #[inline]
47058    pub fn vfmadd213sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47059    where
47060        Assembler<'a>: Vfmadd213shEmitter<A, B, C>,
47061    {
47062        <Self as Vfmadd213shEmitter<A, B, C>>::vfmadd213sh(self, op0, op1, op2);
47063    }
47064    /// `VFMADD213SH_ER`.
47065    ///
47066    /// Supported operand variants:
47067    ///
47068    /// ```text
47069    /// +---+---------------+
47070    /// | # | Operands      |
47071    /// +---+---------------+
47072    /// | 1 | Xmm, Xmm, Xmm |
47073    /// +---+---------------+
47074    /// ```
47075    #[inline]
47076    pub fn vfmadd213sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47077    where
47078        Assembler<'a>: Vfmadd213shErEmitter<A, B, C>,
47079    {
47080        <Self as Vfmadd213shErEmitter<A, B, C>>::vfmadd213sh_er(self, op0, op1, op2);
47081    }
47082    /// `VFMADD213SH_MASK`.
47083    ///
47084    /// Supported operand variants:
47085    ///
47086    /// ```text
47087    /// +---+---------------+
47088    /// | # | Operands      |
47089    /// +---+---------------+
47090    /// | 1 | Xmm, Xmm, Mem |
47091    /// | 2 | Xmm, Xmm, Xmm |
47092    /// +---+---------------+
47093    /// ```
47094    #[inline]
47095    pub fn vfmadd213sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47096    where
47097        Assembler<'a>: Vfmadd213shMaskEmitter<A, B, C>,
47098    {
47099        <Self as Vfmadd213shMaskEmitter<A, B, C>>::vfmadd213sh_mask(self, op0, op1, op2);
47100    }
47101    /// `VFMADD213SH_MASK_ER`.
47102    ///
47103    /// Supported operand variants:
47104    ///
47105    /// ```text
47106    /// +---+---------------+
47107    /// | # | Operands      |
47108    /// +---+---------------+
47109    /// | 1 | Xmm, Xmm, Xmm |
47110    /// +---+---------------+
47111    /// ```
47112    #[inline]
47113    pub fn vfmadd213sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47114    where
47115        Assembler<'a>: Vfmadd213shMaskErEmitter<A, B, C>,
47116    {
47117        <Self as Vfmadd213shMaskErEmitter<A, B, C>>::vfmadd213sh_mask_er(self, op0, op1, op2);
47118    }
47119    /// `VFMADD213SH_MASKZ`.
47120    ///
47121    /// Supported operand variants:
47122    ///
47123    /// ```text
47124    /// +---+---------------+
47125    /// | # | Operands      |
47126    /// +---+---------------+
47127    /// | 1 | Xmm, Xmm, Mem |
47128    /// | 2 | Xmm, Xmm, Xmm |
47129    /// +---+---------------+
47130    /// ```
47131    #[inline]
47132    pub fn vfmadd213sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47133    where
47134        Assembler<'a>: Vfmadd213shMaskzEmitter<A, B, C>,
47135    {
47136        <Self as Vfmadd213shMaskzEmitter<A, B, C>>::vfmadd213sh_maskz(self, op0, op1, op2);
47137    }
47138    /// `VFMADD213SH_MASKZ_ER`.
47139    ///
47140    /// Supported operand variants:
47141    ///
47142    /// ```text
47143    /// +---+---------------+
47144    /// | # | Operands      |
47145    /// +---+---------------+
47146    /// | 1 | Xmm, Xmm, Xmm |
47147    /// +---+---------------+
47148    /// ```
47149    #[inline]
47150    pub fn vfmadd213sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47151    where
47152        Assembler<'a>: Vfmadd213shMaskzErEmitter<A, B, C>,
47153    {
47154        <Self as Vfmadd213shMaskzErEmitter<A, B, C>>::vfmadd213sh_maskz_er(self, op0, op1, op2);
47155    }
47156    /// `VFMADD231PH`.
47157    ///
47158    /// Supported operand variants:
47159    ///
47160    /// ```text
47161    /// +---+---------------+
47162    /// | # | Operands      |
47163    /// +---+---------------+
47164    /// | 1 | Xmm, Xmm, Mem |
47165    /// | 2 | Xmm, Xmm, Xmm |
47166    /// | 3 | Ymm, Ymm, Mem |
47167    /// | 4 | Ymm, Ymm, Ymm |
47168    /// | 5 | Zmm, Zmm, Mem |
47169    /// | 6 | Zmm, Zmm, Zmm |
47170    /// +---+---------------+
47171    /// ```
47172    #[inline]
47173    pub fn vfmadd231ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47174    where
47175        Assembler<'a>: Vfmadd231phEmitter<A, B, C>,
47176    {
47177        <Self as Vfmadd231phEmitter<A, B, C>>::vfmadd231ph(self, op0, op1, op2);
47178    }
47179    /// `VFMADD231PH_ER`.
47180    ///
47181    /// Supported operand variants:
47182    ///
47183    /// ```text
47184    /// +---+---------------+
47185    /// | # | Operands      |
47186    /// +---+---------------+
47187    /// | 1 | Zmm, Zmm, Zmm |
47188    /// +---+---------------+
47189    /// ```
47190    #[inline]
47191    pub fn vfmadd231ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47192    where
47193        Assembler<'a>: Vfmadd231phErEmitter<A, B, C>,
47194    {
47195        <Self as Vfmadd231phErEmitter<A, B, C>>::vfmadd231ph_er(self, op0, op1, op2);
47196    }
47197    /// `VFMADD231PH_MASK`.
47198    ///
47199    /// Supported operand variants:
47200    ///
47201    /// ```text
47202    /// +---+---------------+
47203    /// | # | Operands      |
47204    /// +---+---------------+
47205    /// | 1 | Xmm, Xmm, Mem |
47206    /// | 2 | Xmm, Xmm, Xmm |
47207    /// | 3 | Ymm, Ymm, Mem |
47208    /// | 4 | Ymm, Ymm, Ymm |
47209    /// | 5 | Zmm, Zmm, Mem |
47210    /// | 6 | Zmm, Zmm, Zmm |
47211    /// +---+---------------+
47212    /// ```
47213    #[inline]
47214    pub fn vfmadd231ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47215    where
47216        Assembler<'a>: Vfmadd231phMaskEmitter<A, B, C>,
47217    {
47218        <Self as Vfmadd231phMaskEmitter<A, B, C>>::vfmadd231ph_mask(self, op0, op1, op2);
47219    }
47220    /// `VFMADD231PH_MASK_ER`.
47221    ///
47222    /// Supported operand variants:
47223    ///
47224    /// ```text
47225    /// +---+---------------+
47226    /// | # | Operands      |
47227    /// +---+---------------+
47228    /// | 1 | Zmm, Zmm, Zmm |
47229    /// +---+---------------+
47230    /// ```
47231    #[inline]
47232    pub fn vfmadd231ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47233    where
47234        Assembler<'a>: Vfmadd231phMaskErEmitter<A, B, C>,
47235    {
47236        <Self as Vfmadd231phMaskErEmitter<A, B, C>>::vfmadd231ph_mask_er(self, op0, op1, op2);
47237    }
47238    /// `VFMADD231PH_MASKZ`.
47239    ///
47240    /// Supported operand variants:
47241    ///
47242    /// ```text
47243    /// +---+---------------+
47244    /// | # | Operands      |
47245    /// +---+---------------+
47246    /// | 1 | Xmm, Xmm, Mem |
47247    /// | 2 | Xmm, Xmm, Xmm |
47248    /// | 3 | Ymm, Ymm, Mem |
47249    /// | 4 | Ymm, Ymm, Ymm |
47250    /// | 5 | Zmm, Zmm, Mem |
47251    /// | 6 | Zmm, Zmm, Zmm |
47252    /// +---+---------------+
47253    /// ```
47254    #[inline]
47255    pub fn vfmadd231ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47256    where
47257        Assembler<'a>: Vfmadd231phMaskzEmitter<A, B, C>,
47258    {
47259        <Self as Vfmadd231phMaskzEmitter<A, B, C>>::vfmadd231ph_maskz(self, op0, op1, op2);
47260    }
47261    /// `VFMADD231PH_MASKZ_ER`.
47262    ///
47263    /// Supported operand variants:
47264    ///
47265    /// ```text
47266    /// +---+---------------+
47267    /// | # | Operands      |
47268    /// +---+---------------+
47269    /// | 1 | Zmm, Zmm, Zmm |
47270    /// +---+---------------+
47271    /// ```
47272    #[inline]
47273    pub fn vfmadd231ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47274    where
47275        Assembler<'a>: Vfmadd231phMaskzErEmitter<A, B, C>,
47276    {
47277        <Self as Vfmadd231phMaskzErEmitter<A, B, C>>::vfmadd231ph_maskz_er(self, op0, op1, op2);
47278    }
47279    /// `VFMADD231SH`.
47280    ///
47281    /// Supported operand variants:
47282    ///
47283    /// ```text
47284    /// +---+---------------+
47285    /// | # | Operands      |
47286    /// +---+---------------+
47287    /// | 1 | Xmm, Xmm, Mem |
47288    /// | 2 | Xmm, Xmm, Xmm |
47289    /// +---+---------------+
47290    /// ```
47291    #[inline]
47292    pub fn vfmadd231sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47293    where
47294        Assembler<'a>: Vfmadd231shEmitter<A, B, C>,
47295    {
47296        <Self as Vfmadd231shEmitter<A, B, C>>::vfmadd231sh(self, op0, op1, op2);
47297    }
47298    /// `VFMADD231SH_ER`.
47299    ///
47300    /// Supported operand variants:
47301    ///
47302    /// ```text
47303    /// +---+---------------+
47304    /// | # | Operands      |
47305    /// +---+---------------+
47306    /// | 1 | Xmm, Xmm, Xmm |
47307    /// +---+---------------+
47308    /// ```
47309    #[inline]
47310    pub fn vfmadd231sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47311    where
47312        Assembler<'a>: Vfmadd231shErEmitter<A, B, C>,
47313    {
47314        <Self as Vfmadd231shErEmitter<A, B, C>>::vfmadd231sh_er(self, op0, op1, op2);
47315    }
47316    /// `VFMADD231SH_MASK`.
47317    ///
47318    /// Supported operand variants:
47319    ///
47320    /// ```text
47321    /// +---+---------------+
47322    /// | # | Operands      |
47323    /// +---+---------------+
47324    /// | 1 | Xmm, Xmm, Mem |
47325    /// | 2 | Xmm, Xmm, Xmm |
47326    /// +---+---------------+
47327    /// ```
47328    #[inline]
47329    pub fn vfmadd231sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47330    where
47331        Assembler<'a>: Vfmadd231shMaskEmitter<A, B, C>,
47332    {
47333        <Self as Vfmadd231shMaskEmitter<A, B, C>>::vfmadd231sh_mask(self, op0, op1, op2);
47334    }
47335    /// `VFMADD231SH_MASK_ER`.
47336    ///
47337    /// Supported operand variants:
47338    ///
47339    /// ```text
47340    /// +---+---------------+
47341    /// | # | Operands      |
47342    /// +---+---------------+
47343    /// | 1 | Xmm, Xmm, Xmm |
47344    /// +---+---------------+
47345    /// ```
47346    #[inline]
47347    pub fn vfmadd231sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47348    where
47349        Assembler<'a>: Vfmadd231shMaskErEmitter<A, B, C>,
47350    {
47351        <Self as Vfmadd231shMaskErEmitter<A, B, C>>::vfmadd231sh_mask_er(self, op0, op1, op2);
47352    }
47353    /// `VFMADD231SH_MASKZ`.
47354    ///
47355    /// Supported operand variants:
47356    ///
47357    /// ```text
47358    /// +---+---------------+
47359    /// | # | Operands      |
47360    /// +---+---------------+
47361    /// | 1 | Xmm, Xmm, Mem |
47362    /// | 2 | Xmm, Xmm, Xmm |
47363    /// +---+---------------+
47364    /// ```
47365    #[inline]
47366    pub fn vfmadd231sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47367    where
47368        Assembler<'a>: Vfmadd231shMaskzEmitter<A, B, C>,
47369    {
47370        <Self as Vfmadd231shMaskzEmitter<A, B, C>>::vfmadd231sh_maskz(self, op0, op1, op2);
47371    }
47372    /// `VFMADD231SH_MASKZ_ER`.
47373    ///
47374    /// Supported operand variants:
47375    ///
47376    /// ```text
47377    /// +---+---------------+
47378    /// | # | Operands      |
47379    /// +---+---------------+
47380    /// | 1 | Xmm, Xmm, Xmm |
47381    /// +---+---------------+
47382    /// ```
47383    #[inline]
47384    pub fn vfmadd231sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47385    where
47386        Assembler<'a>: Vfmadd231shMaskzErEmitter<A, B, C>,
47387    {
47388        <Self as Vfmadd231shMaskzErEmitter<A, B, C>>::vfmadd231sh_maskz_er(self, op0, op1, op2);
47389    }
47390    /// `VFMADDCPH`.
47391    ///
47392    /// Supported operand variants:
47393    ///
47394    /// ```text
47395    /// +---+---------------+
47396    /// | # | Operands      |
47397    /// +---+---------------+
47398    /// | 1 | Xmm, Xmm, Mem |
47399    /// | 2 | Xmm, Xmm, Xmm |
47400    /// | 3 | Ymm, Ymm, Mem |
47401    /// | 4 | Ymm, Ymm, Ymm |
47402    /// | 5 | Zmm, Zmm, Mem |
47403    /// | 6 | Zmm, Zmm, Zmm |
47404    /// +---+---------------+
47405    /// ```
47406    #[inline]
47407    pub fn vfmaddcph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47408    where
47409        Assembler<'a>: VfmaddcphEmitter<A, B, C>,
47410    {
47411        <Self as VfmaddcphEmitter<A, B, C>>::vfmaddcph(self, op0, op1, op2);
47412    }
47413    /// `VFMADDCPH_ER`.
47414    ///
47415    /// Supported operand variants:
47416    ///
47417    /// ```text
47418    /// +---+---------------+
47419    /// | # | Operands      |
47420    /// +---+---------------+
47421    /// | 1 | Zmm, Zmm, Zmm |
47422    /// +---+---------------+
47423    /// ```
47424    #[inline]
47425    pub fn vfmaddcph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47426    where
47427        Assembler<'a>: VfmaddcphErEmitter<A, B, C>,
47428    {
47429        <Self as VfmaddcphErEmitter<A, B, C>>::vfmaddcph_er(self, op0, op1, op2);
47430    }
47431    /// `VFMADDCPH_MASK`.
47432    ///
47433    /// Supported operand variants:
47434    ///
47435    /// ```text
47436    /// +---+---------------+
47437    /// | # | Operands      |
47438    /// +---+---------------+
47439    /// | 1 | Xmm, Xmm, Mem |
47440    /// | 2 | Xmm, Xmm, Xmm |
47441    /// | 3 | Ymm, Ymm, Mem |
47442    /// | 4 | Ymm, Ymm, Ymm |
47443    /// | 5 | Zmm, Zmm, Mem |
47444    /// | 6 | Zmm, Zmm, Zmm |
47445    /// +---+---------------+
47446    /// ```
47447    #[inline]
47448    pub fn vfmaddcph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47449    where
47450        Assembler<'a>: VfmaddcphMaskEmitter<A, B, C>,
47451    {
47452        <Self as VfmaddcphMaskEmitter<A, B, C>>::vfmaddcph_mask(self, op0, op1, op2);
47453    }
47454    /// `VFMADDCPH_MASK_ER`.
47455    ///
47456    /// Supported operand variants:
47457    ///
47458    /// ```text
47459    /// +---+---------------+
47460    /// | # | Operands      |
47461    /// +---+---------------+
47462    /// | 1 | Zmm, Zmm, Zmm |
47463    /// +---+---------------+
47464    /// ```
47465    #[inline]
47466    pub fn vfmaddcph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47467    where
47468        Assembler<'a>: VfmaddcphMaskErEmitter<A, B, C>,
47469    {
47470        <Self as VfmaddcphMaskErEmitter<A, B, C>>::vfmaddcph_mask_er(self, op0, op1, op2);
47471    }
47472    /// `VFMADDCPH_MASKZ`.
47473    ///
47474    /// Supported operand variants:
47475    ///
47476    /// ```text
47477    /// +---+---------------+
47478    /// | # | Operands      |
47479    /// +---+---------------+
47480    /// | 1 | Xmm, Xmm, Mem |
47481    /// | 2 | Xmm, Xmm, Xmm |
47482    /// | 3 | Ymm, Ymm, Mem |
47483    /// | 4 | Ymm, Ymm, Ymm |
47484    /// | 5 | Zmm, Zmm, Mem |
47485    /// | 6 | Zmm, Zmm, Zmm |
47486    /// +---+---------------+
47487    /// ```
47488    #[inline]
47489    pub fn vfmaddcph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47490    where
47491        Assembler<'a>: VfmaddcphMaskzEmitter<A, B, C>,
47492    {
47493        <Self as VfmaddcphMaskzEmitter<A, B, C>>::vfmaddcph_maskz(self, op0, op1, op2);
47494    }
47495    /// `VFMADDCPH_MASKZ_ER`.
47496    ///
47497    /// Supported operand variants:
47498    ///
47499    /// ```text
47500    /// +---+---------------+
47501    /// | # | Operands      |
47502    /// +---+---------------+
47503    /// | 1 | Zmm, Zmm, Zmm |
47504    /// +---+---------------+
47505    /// ```
47506    #[inline]
47507    pub fn vfmaddcph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47508    where
47509        Assembler<'a>: VfmaddcphMaskzErEmitter<A, B, C>,
47510    {
47511        <Self as VfmaddcphMaskzErEmitter<A, B, C>>::vfmaddcph_maskz_er(self, op0, op1, op2);
47512    }
47513    /// `VFMADDCSH`.
47514    ///
47515    /// Supported operand variants:
47516    ///
47517    /// ```text
47518    /// +---+---------------+
47519    /// | # | Operands      |
47520    /// +---+---------------+
47521    /// | 1 | Xmm, Xmm, Mem |
47522    /// | 2 | Xmm, Xmm, Xmm |
47523    /// +---+---------------+
47524    /// ```
47525    #[inline]
47526    pub fn vfmaddcsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47527    where
47528        Assembler<'a>: VfmaddcshEmitter<A, B, C>,
47529    {
47530        <Self as VfmaddcshEmitter<A, B, C>>::vfmaddcsh(self, op0, op1, op2);
47531    }
47532    /// `VFMADDCSH_ER`.
47533    ///
47534    /// Supported operand variants:
47535    ///
47536    /// ```text
47537    /// +---+---------------+
47538    /// | # | Operands      |
47539    /// +---+---------------+
47540    /// | 1 | Xmm, Xmm, Xmm |
47541    /// +---+---------------+
47542    /// ```
47543    #[inline]
47544    pub fn vfmaddcsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47545    where
47546        Assembler<'a>: VfmaddcshErEmitter<A, B, C>,
47547    {
47548        <Self as VfmaddcshErEmitter<A, B, C>>::vfmaddcsh_er(self, op0, op1, op2);
47549    }
47550    /// `VFMADDCSH_MASK`.
47551    ///
47552    /// Supported operand variants:
47553    ///
47554    /// ```text
47555    /// +---+---------------+
47556    /// | # | Operands      |
47557    /// +---+---------------+
47558    /// | 1 | Xmm, Xmm, Mem |
47559    /// | 2 | Xmm, Xmm, Xmm |
47560    /// +---+---------------+
47561    /// ```
47562    #[inline]
47563    pub fn vfmaddcsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47564    where
47565        Assembler<'a>: VfmaddcshMaskEmitter<A, B, C>,
47566    {
47567        <Self as VfmaddcshMaskEmitter<A, B, C>>::vfmaddcsh_mask(self, op0, op1, op2);
47568    }
47569    /// `VFMADDCSH_MASK_ER`.
47570    ///
47571    /// Supported operand variants:
47572    ///
47573    /// ```text
47574    /// +---+---------------+
47575    /// | # | Operands      |
47576    /// +---+---------------+
47577    /// | 1 | Xmm, Xmm, Xmm |
47578    /// +---+---------------+
47579    /// ```
47580    #[inline]
47581    pub fn vfmaddcsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47582    where
47583        Assembler<'a>: VfmaddcshMaskErEmitter<A, B, C>,
47584    {
47585        <Self as VfmaddcshMaskErEmitter<A, B, C>>::vfmaddcsh_mask_er(self, op0, op1, op2);
47586    }
47587    /// `VFMADDCSH_MASKZ`.
47588    ///
47589    /// Supported operand variants:
47590    ///
47591    /// ```text
47592    /// +---+---------------+
47593    /// | # | Operands      |
47594    /// +---+---------------+
47595    /// | 1 | Xmm, Xmm, Mem |
47596    /// | 2 | Xmm, Xmm, Xmm |
47597    /// +---+---------------+
47598    /// ```
47599    #[inline]
47600    pub fn vfmaddcsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47601    where
47602        Assembler<'a>: VfmaddcshMaskzEmitter<A, B, C>,
47603    {
47604        <Self as VfmaddcshMaskzEmitter<A, B, C>>::vfmaddcsh_maskz(self, op0, op1, op2);
47605    }
47606    /// `VFMADDCSH_MASKZ_ER`.
47607    ///
47608    /// Supported operand variants:
47609    ///
47610    /// ```text
47611    /// +---+---------------+
47612    /// | # | Operands      |
47613    /// +---+---------------+
47614    /// | 1 | Xmm, Xmm, Xmm |
47615    /// +---+---------------+
47616    /// ```
47617    #[inline]
47618    pub fn vfmaddcsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47619    where
47620        Assembler<'a>: VfmaddcshMaskzErEmitter<A, B, C>,
47621    {
47622        <Self as VfmaddcshMaskzErEmitter<A, B, C>>::vfmaddcsh_maskz_er(self, op0, op1, op2);
47623    }
47624    /// `VFMADDSUB132PH`.
47625    ///
47626    /// Supported operand variants:
47627    ///
47628    /// ```text
47629    /// +---+---------------+
47630    /// | # | Operands      |
47631    /// +---+---------------+
47632    /// | 1 | Xmm, Xmm, Mem |
47633    /// | 2 | Xmm, Xmm, Xmm |
47634    /// | 3 | Ymm, Ymm, Mem |
47635    /// | 4 | Ymm, Ymm, Ymm |
47636    /// | 5 | Zmm, Zmm, Mem |
47637    /// | 6 | Zmm, Zmm, Zmm |
47638    /// +---+---------------+
47639    /// ```
47640    #[inline]
47641    pub fn vfmaddsub132ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47642    where
47643        Assembler<'a>: Vfmaddsub132phEmitter<A, B, C>,
47644    {
47645        <Self as Vfmaddsub132phEmitter<A, B, C>>::vfmaddsub132ph(self, op0, op1, op2);
47646    }
47647    /// `VFMADDSUB132PH_ER`.
47648    ///
47649    /// Supported operand variants:
47650    ///
47651    /// ```text
47652    /// +---+---------------+
47653    /// | # | Operands      |
47654    /// +---+---------------+
47655    /// | 1 | Zmm, Zmm, Zmm |
47656    /// +---+---------------+
47657    /// ```
47658    #[inline]
47659    pub fn vfmaddsub132ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47660    where
47661        Assembler<'a>: Vfmaddsub132phErEmitter<A, B, C>,
47662    {
47663        <Self as Vfmaddsub132phErEmitter<A, B, C>>::vfmaddsub132ph_er(self, op0, op1, op2);
47664    }
47665    /// `VFMADDSUB132PH_MASK`.
47666    ///
47667    /// Supported operand variants:
47668    ///
47669    /// ```text
47670    /// +---+---------------+
47671    /// | # | Operands      |
47672    /// +---+---------------+
47673    /// | 1 | Xmm, Xmm, Mem |
47674    /// | 2 | Xmm, Xmm, Xmm |
47675    /// | 3 | Ymm, Ymm, Mem |
47676    /// | 4 | Ymm, Ymm, Ymm |
47677    /// | 5 | Zmm, Zmm, Mem |
47678    /// | 6 | Zmm, Zmm, Zmm |
47679    /// +---+---------------+
47680    /// ```
47681    #[inline]
47682    pub fn vfmaddsub132ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47683    where
47684        Assembler<'a>: Vfmaddsub132phMaskEmitter<A, B, C>,
47685    {
47686        <Self as Vfmaddsub132phMaskEmitter<A, B, C>>::vfmaddsub132ph_mask(self, op0, op1, op2);
47687    }
47688    /// `VFMADDSUB132PH_MASK_ER`.
47689    ///
47690    /// Supported operand variants:
47691    ///
47692    /// ```text
47693    /// +---+---------------+
47694    /// | # | Operands      |
47695    /// +---+---------------+
47696    /// | 1 | Zmm, Zmm, Zmm |
47697    /// +---+---------------+
47698    /// ```
47699    #[inline]
47700    pub fn vfmaddsub132ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47701    where
47702        Assembler<'a>: Vfmaddsub132phMaskErEmitter<A, B, C>,
47703    {
47704        <Self as Vfmaddsub132phMaskErEmitter<A, B, C>>::vfmaddsub132ph_mask_er(self, op0, op1, op2);
47705    }
47706    /// `VFMADDSUB132PH_MASKZ`.
47707    ///
47708    /// Supported operand variants:
47709    ///
47710    /// ```text
47711    /// +---+---------------+
47712    /// | # | Operands      |
47713    /// +---+---------------+
47714    /// | 1 | Xmm, Xmm, Mem |
47715    /// | 2 | Xmm, Xmm, Xmm |
47716    /// | 3 | Ymm, Ymm, Mem |
47717    /// | 4 | Ymm, Ymm, Ymm |
47718    /// | 5 | Zmm, Zmm, Mem |
47719    /// | 6 | Zmm, Zmm, Zmm |
47720    /// +---+---------------+
47721    /// ```
47722    #[inline]
47723    pub fn vfmaddsub132ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47724    where
47725        Assembler<'a>: Vfmaddsub132phMaskzEmitter<A, B, C>,
47726    {
47727        <Self as Vfmaddsub132phMaskzEmitter<A, B, C>>::vfmaddsub132ph_maskz(self, op0, op1, op2);
47728    }
47729    /// `VFMADDSUB132PH_MASKZ_ER`.
47730    ///
47731    /// Supported operand variants:
47732    ///
47733    /// ```text
47734    /// +---+---------------+
47735    /// | # | Operands      |
47736    /// +---+---------------+
47737    /// | 1 | Zmm, Zmm, Zmm |
47738    /// +---+---------------+
47739    /// ```
47740    #[inline]
47741    pub fn vfmaddsub132ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47742    where
47743        Assembler<'a>: Vfmaddsub132phMaskzErEmitter<A, B, C>,
47744    {
47745        <Self as Vfmaddsub132phMaskzErEmitter<A, B, C>>::vfmaddsub132ph_maskz_er(
47746            self, op0, op1, op2,
47747        );
47748    }
47749    /// `VFMADDSUB213PH`.
47750    ///
47751    /// Supported operand variants:
47752    ///
47753    /// ```text
47754    /// +---+---------------+
47755    /// | # | Operands      |
47756    /// +---+---------------+
47757    /// | 1 | Xmm, Xmm, Mem |
47758    /// | 2 | Xmm, Xmm, Xmm |
47759    /// | 3 | Ymm, Ymm, Mem |
47760    /// | 4 | Ymm, Ymm, Ymm |
47761    /// | 5 | Zmm, Zmm, Mem |
47762    /// | 6 | Zmm, Zmm, Zmm |
47763    /// +---+---------------+
47764    /// ```
47765    #[inline]
47766    pub fn vfmaddsub213ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47767    where
47768        Assembler<'a>: Vfmaddsub213phEmitter<A, B, C>,
47769    {
47770        <Self as Vfmaddsub213phEmitter<A, B, C>>::vfmaddsub213ph(self, op0, op1, op2);
47771    }
47772    /// `VFMADDSUB213PH_ER`.
47773    ///
47774    /// Supported operand variants:
47775    ///
47776    /// ```text
47777    /// +---+---------------+
47778    /// | # | Operands      |
47779    /// +---+---------------+
47780    /// | 1 | Zmm, Zmm, Zmm |
47781    /// +---+---------------+
47782    /// ```
47783    #[inline]
47784    pub fn vfmaddsub213ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47785    where
47786        Assembler<'a>: Vfmaddsub213phErEmitter<A, B, C>,
47787    {
47788        <Self as Vfmaddsub213phErEmitter<A, B, C>>::vfmaddsub213ph_er(self, op0, op1, op2);
47789    }
47790    /// `VFMADDSUB213PH_MASK`.
47791    ///
47792    /// Supported operand variants:
47793    ///
47794    /// ```text
47795    /// +---+---------------+
47796    /// | # | Operands      |
47797    /// +---+---------------+
47798    /// | 1 | Xmm, Xmm, Mem |
47799    /// | 2 | Xmm, Xmm, Xmm |
47800    /// | 3 | Ymm, Ymm, Mem |
47801    /// | 4 | Ymm, Ymm, Ymm |
47802    /// | 5 | Zmm, Zmm, Mem |
47803    /// | 6 | Zmm, Zmm, Zmm |
47804    /// +---+---------------+
47805    /// ```
47806    #[inline]
47807    pub fn vfmaddsub213ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47808    where
47809        Assembler<'a>: Vfmaddsub213phMaskEmitter<A, B, C>,
47810    {
47811        <Self as Vfmaddsub213phMaskEmitter<A, B, C>>::vfmaddsub213ph_mask(self, op0, op1, op2);
47812    }
47813    /// `VFMADDSUB213PH_MASK_ER`.
47814    ///
47815    /// Supported operand variants:
47816    ///
47817    /// ```text
47818    /// +---+---------------+
47819    /// | # | Operands      |
47820    /// +---+---------------+
47821    /// | 1 | Zmm, Zmm, Zmm |
47822    /// +---+---------------+
47823    /// ```
47824    #[inline]
47825    pub fn vfmaddsub213ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47826    where
47827        Assembler<'a>: Vfmaddsub213phMaskErEmitter<A, B, C>,
47828    {
47829        <Self as Vfmaddsub213phMaskErEmitter<A, B, C>>::vfmaddsub213ph_mask_er(self, op0, op1, op2);
47830    }
47831    /// `VFMADDSUB213PH_MASKZ`.
47832    ///
47833    /// Supported operand variants:
47834    ///
47835    /// ```text
47836    /// +---+---------------+
47837    /// | # | Operands      |
47838    /// +---+---------------+
47839    /// | 1 | Xmm, Xmm, Mem |
47840    /// | 2 | Xmm, Xmm, Xmm |
47841    /// | 3 | Ymm, Ymm, Mem |
47842    /// | 4 | Ymm, Ymm, Ymm |
47843    /// | 5 | Zmm, Zmm, Mem |
47844    /// | 6 | Zmm, Zmm, Zmm |
47845    /// +---+---------------+
47846    /// ```
47847    #[inline]
47848    pub fn vfmaddsub213ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47849    where
47850        Assembler<'a>: Vfmaddsub213phMaskzEmitter<A, B, C>,
47851    {
47852        <Self as Vfmaddsub213phMaskzEmitter<A, B, C>>::vfmaddsub213ph_maskz(self, op0, op1, op2);
47853    }
47854    /// `VFMADDSUB213PH_MASKZ_ER`.
47855    ///
47856    /// Supported operand variants:
47857    ///
47858    /// ```text
47859    /// +---+---------------+
47860    /// | # | Operands      |
47861    /// +---+---------------+
47862    /// | 1 | Zmm, Zmm, Zmm |
47863    /// +---+---------------+
47864    /// ```
47865    #[inline]
47866    pub fn vfmaddsub213ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47867    where
47868        Assembler<'a>: Vfmaddsub213phMaskzErEmitter<A, B, C>,
47869    {
47870        <Self as Vfmaddsub213phMaskzErEmitter<A, B, C>>::vfmaddsub213ph_maskz_er(
47871            self, op0, op1, op2,
47872        );
47873    }
47874    /// `VFMADDSUB231PH`.
47875    ///
47876    /// Supported operand variants:
47877    ///
47878    /// ```text
47879    /// +---+---------------+
47880    /// | # | Operands      |
47881    /// +---+---------------+
47882    /// | 1 | Xmm, Xmm, Mem |
47883    /// | 2 | Xmm, Xmm, Xmm |
47884    /// | 3 | Ymm, Ymm, Mem |
47885    /// | 4 | Ymm, Ymm, Ymm |
47886    /// | 5 | Zmm, Zmm, Mem |
47887    /// | 6 | Zmm, Zmm, Zmm |
47888    /// +---+---------------+
47889    /// ```
47890    #[inline]
47891    pub fn vfmaddsub231ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47892    where
47893        Assembler<'a>: Vfmaddsub231phEmitter<A, B, C>,
47894    {
47895        <Self as Vfmaddsub231phEmitter<A, B, C>>::vfmaddsub231ph(self, op0, op1, op2);
47896    }
47897    /// `VFMADDSUB231PH_ER`.
47898    ///
47899    /// Supported operand variants:
47900    ///
47901    /// ```text
47902    /// +---+---------------+
47903    /// | # | Operands      |
47904    /// +---+---------------+
47905    /// | 1 | Zmm, Zmm, Zmm |
47906    /// +---+---------------+
47907    /// ```
47908    #[inline]
47909    pub fn vfmaddsub231ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47910    where
47911        Assembler<'a>: Vfmaddsub231phErEmitter<A, B, C>,
47912    {
47913        <Self as Vfmaddsub231phErEmitter<A, B, C>>::vfmaddsub231ph_er(self, op0, op1, op2);
47914    }
47915    /// `VFMADDSUB231PH_MASK`.
47916    ///
47917    /// Supported operand variants:
47918    ///
47919    /// ```text
47920    /// +---+---------------+
47921    /// | # | Operands      |
47922    /// +---+---------------+
47923    /// | 1 | Xmm, Xmm, Mem |
47924    /// | 2 | Xmm, Xmm, Xmm |
47925    /// | 3 | Ymm, Ymm, Mem |
47926    /// | 4 | Ymm, Ymm, Ymm |
47927    /// | 5 | Zmm, Zmm, Mem |
47928    /// | 6 | Zmm, Zmm, Zmm |
47929    /// +---+---------------+
47930    /// ```
47931    #[inline]
47932    pub fn vfmaddsub231ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47933    where
47934        Assembler<'a>: Vfmaddsub231phMaskEmitter<A, B, C>,
47935    {
47936        <Self as Vfmaddsub231phMaskEmitter<A, B, C>>::vfmaddsub231ph_mask(self, op0, op1, op2);
47937    }
47938    /// `VFMADDSUB231PH_MASK_ER`.
47939    ///
47940    /// Supported operand variants:
47941    ///
47942    /// ```text
47943    /// +---+---------------+
47944    /// | # | Operands      |
47945    /// +---+---------------+
47946    /// | 1 | Zmm, Zmm, Zmm |
47947    /// +---+---------------+
47948    /// ```
47949    #[inline]
47950    pub fn vfmaddsub231ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47951    where
47952        Assembler<'a>: Vfmaddsub231phMaskErEmitter<A, B, C>,
47953    {
47954        <Self as Vfmaddsub231phMaskErEmitter<A, B, C>>::vfmaddsub231ph_mask_er(self, op0, op1, op2);
47955    }
47956    /// `VFMADDSUB231PH_MASKZ`.
47957    ///
47958    /// Supported operand variants:
47959    ///
47960    /// ```text
47961    /// +---+---------------+
47962    /// | # | Operands      |
47963    /// +---+---------------+
47964    /// | 1 | Xmm, Xmm, Mem |
47965    /// | 2 | Xmm, Xmm, Xmm |
47966    /// | 3 | Ymm, Ymm, Mem |
47967    /// | 4 | Ymm, Ymm, Ymm |
47968    /// | 5 | Zmm, Zmm, Mem |
47969    /// | 6 | Zmm, Zmm, Zmm |
47970    /// +---+---------------+
47971    /// ```
47972    #[inline]
47973    pub fn vfmaddsub231ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47974    where
47975        Assembler<'a>: Vfmaddsub231phMaskzEmitter<A, B, C>,
47976    {
47977        <Self as Vfmaddsub231phMaskzEmitter<A, B, C>>::vfmaddsub231ph_maskz(self, op0, op1, op2);
47978    }
47979    /// `VFMADDSUB231PH_MASKZ_ER`.
47980    ///
47981    /// Supported operand variants:
47982    ///
47983    /// ```text
47984    /// +---+---------------+
47985    /// | # | Operands      |
47986    /// +---+---------------+
47987    /// | 1 | Zmm, Zmm, Zmm |
47988    /// +---+---------------+
47989    /// ```
47990    #[inline]
47991    pub fn vfmaddsub231ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
47992    where
47993        Assembler<'a>: Vfmaddsub231phMaskzErEmitter<A, B, C>,
47994    {
47995        <Self as Vfmaddsub231phMaskzErEmitter<A, B, C>>::vfmaddsub231ph_maskz_er(
47996            self, op0, op1, op2,
47997        );
47998    }
47999    /// `VFMSUB132PH`.
48000    ///
48001    /// Supported operand variants:
48002    ///
48003    /// ```text
48004    /// +---+---------------+
48005    /// | # | Operands      |
48006    /// +---+---------------+
48007    /// | 1 | Xmm, Xmm, Mem |
48008    /// | 2 | Xmm, Xmm, Xmm |
48009    /// | 3 | Ymm, Ymm, Mem |
48010    /// | 4 | Ymm, Ymm, Ymm |
48011    /// | 5 | Zmm, Zmm, Mem |
48012    /// | 6 | Zmm, Zmm, Zmm |
48013    /// +---+---------------+
48014    /// ```
48015    #[inline]
48016    pub fn vfmsub132ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48017    where
48018        Assembler<'a>: Vfmsub132phEmitter<A, B, C>,
48019    {
48020        <Self as Vfmsub132phEmitter<A, B, C>>::vfmsub132ph(self, op0, op1, op2);
48021    }
48022    /// `VFMSUB132PH_ER`.
48023    ///
48024    /// Supported operand variants:
48025    ///
48026    /// ```text
48027    /// +---+---------------+
48028    /// | # | Operands      |
48029    /// +---+---------------+
48030    /// | 1 | Zmm, Zmm, Zmm |
48031    /// +---+---------------+
48032    /// ```
48033    #[inline]
48034    pub fn vfmsub132ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48035    where
48036        Assembler<'a>: Vfmsub132phErEmitter<A, B, C>,
48037    {
48038        <Self as Vfmsub132phErEmitter<A, B, C>>::vfmsub132ph_er(self, op0, op1, op2);
48039    }
48040    /// `VFMSUB132PH_MASK`.
48041    ///
48042    /// Supported operand variants:
48043    ///
48044    /// ```text
48045    /// +---+---------------+
48046    /// | # | Operands      |
48047    /// +---+---------------+
48048    /// | 1 | Xmm, Xmm, Mem |
48049    /// | 2 | Xmm, Xmm, Xmm |
48050    /// | 3 | Ymm, Ymm, Mem |
48051    /// | 4 | Ymm, Ymm, Ymm |
48052    /// | 5 | Zmm, Zmm, Mem |
48053    /// | 6 | Zmm, Zmm, Zmm |
48054    /// +---+---------------+
48055    /// ```
48056    #[inline]
48057    pub fn vfmsub132ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48058    where
48059        Assembler<'a>: Vfmsub132phMaskEmitter<A, B, C>,
48060    {
48061        <Self as Vfmsub132phMaskEmitter<A, B, C>>::vfmsub132ph_mask(self, op0, op1, op2);
48062    }
48063    /// `VFMSUB132PH_MASK_ER`.
48064    ///
48065    /// Supported operand variants:
48066    ///
48067    /// ```text
48068    /// +---+---------------+
48069    /// | # | Operands      |
48070    /// +---+---------------+
48071    /// | 1 | Zmm, Zmm, Zmm |
48072    /// +---+---------------+
48073    /// ```
48074    #[inline]
48075    pub fn vfmsub132ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48076    where
48077        Assembler<'a>: Vfmsub132phMaskErEmitter<A, B, C>,
48078    {
48079        <Self as Vfmsub132phMaskErEmitter<A, B, C>>::vfmsub132ph_mask_er(self, op0, op1, op2);
48080    }
48081    /// `VFMSUB132PH_MASKZ`.
48082    ///
48083    /// Supported operand variants:
48084    ///
48085    /// ```text
48086    /// +---+---------------+
48087    /// | # | Operands      |
48088    /// +---+---------------+
48089    /// | 1 | Xmm, Xmm, Mem |
48090    /// | 2 | Xmm, Xmm, Xmm |
48091    /// | 3 | Ymm, Ymm, Mem |
48092    /// | 4 | Ymm, Ymm, Ymm |
48093    /// | 5 | Zmm, Zmm, Mem |
48094    /// | 6 | Zmm, Zmm, Zmm |
48095    /// +---+---------------+
48096    /// ```
48097    #[inline]
48098    pub fn vfmsub132ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48099    where
48100        Assembler<'a>: Vfmsub132phMaskzEmitter<A, B, C>,
48101    {
48102        <Self as Vfmsub132phMaskzEmitter<A, B, C>>::vfmsub132ph_maskz(self, op0, op1, op2);
48103    }
48104    /// `VFMSUB132PH_MASKZ_ER`.
48105    ///
48106    /// Supported operand variants:
48107    ///
48108    /// ```text
48109    /// +---+---------------+
48110    /// | # | Operands      |
48111    /// +---+---------------+
48112    /// | 1 | Zmm, Zmm, Zmm |
48113    /// +---+---------------+
48114    /// ```
48115    #[inline]
48116    pub fn vfmsub132ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48117    where
48118        Assembler<'a>: Vfmsub132phMaskzErEmitter<A, B, C>,
48119    {
48120        <Self as Vfmsub132phMaskzErEmitter<A, B, C>>::vfmsub132ph_maskz_er(self, op0, op1, op2);
48121    }
48122    /// `VFMSUB132SH`.
48123    ///
48124    /// Supported operand variants:
48125    ///
48126    /// ```text
48127    /// +---+---------------+
48128    /// | # | Operands      |
48129    /// +---+---------------+
48130    /// | 1 | Xmm, Xmm, Mem |
48131    /// | 2 | Xmm, Xmm, Xmm |
48132    /// +---+---------------+
48133    /// ```
48134    #[inline]
48135    pub fn vfmsub132sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48136    where
48137        Assembler<'a>: Vfmsub132shEmitter<A, B, C>,
48138    {
48139        <Self as Vfmsub132shEmitter<A, B, C>>::vfmsub132sh(self, op0, op1, op2);
48140    }
48141    /// `VFMSUB132SH_ER`.
48142    ///
48143    /// Supported operand variants:
48144    ///
48145    /// ```text
48146    /// +---+---------------+
48147    /// | # | Operands      |
48148    /// +---+---------------+
48149    /// | 1 | Xmm, Xmm, Xmm |
48150    /// +---+---------------+
48151    /// ```
48152    #[inline]
48153    pub fn vfmsub132sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48154    where
48155        Assembler<'a>: Vfmsub132shErEmitter<A, B, C>,
48156    {
48157        <Self as Vfmsub132shErEmitter<A, B, C>>::vfmsub132sh_er(self, op0, op1, op2);
48158    }
48159    /// `VFMSUB132SH_MASK`.
48160    ///
48161    /// Supported operand variants:
48162    ///
48163    /// ```text
48164    /// +---+---------------+
48165    /// | # | Operands      |
48166    /// +---+---------------+
48167    /// | 1 | Xmm, Xmm, Mem |
48168    /// | 2 | Xmm, Xmm, Xmm |
48169    /// +---+---------------+
48170    /// ```
48171    #[inline]
48172    pub fn vfmsub132sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48173    where
48174        Assembler<'a>: Vfmsub132shMaskEmitter<A, B, C>,
48175    {
48176        <Self as Vfmsub132shMaskEmitter<A, B, C>>::vfmsub132sh_mask(self, op0, op1, op2);
48177    }
48178    /// `VFMSUB132SH_MASK_ER`.
48179    ///
48180    /// Supported operand variants:
48181    ///
48182    /// ```text
48183    /// +---+---------------+
48184    /// | # | Operands      |
48185    /// +---+---------------+
48186    /// | 1 | Xmm, Xmm, Xmm |
48187    /// +---+---------------+
48188    /// ```
48189    #[inline]
48190    pub fn vfmsub132sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48191    where
48192        Assembler<'a>: Vfmsub132shMaskErEmitter<A, B, C>,
48193    {
48194        <Self as Vfmsub132shMaskErEmitter<A, B, C>>::vfmsub132sh_mask_er(self, op0, op1, op2);
48195    }
48196    /// `VFMSUB132SH_MASKZ`.
48197    ///
48198    /// Supported operand variants:
48199    ///
48200    /// ```text
48201    /// +---+---------------+
48202    /// | # | Operands      |
48203    /// +---+---------------+
48204    /// | 1 | Xmm, Xmm, Mem |
48205    /// | 2 | Xmm, Xmm, Xmm |
48206    /// +---+---------------+
48207    /// ```
48208    #[inline]
48209    pub fn vfmsub132sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48210    where
48211        Assembler<'a>: Vfmsub132shMaskzEmitter<A, B, C>,
48212    {
48213        <Self as Vfmsub132shMaskzEmitter<A, B, C>>::vfmsub132sh_maskz(self, op0, op1, op2);
48214    }
48215    /// `VFMSUB132SH_MASKZ_ER`.
48216    ///
48217    /// Supported operand variants:
48218    ///
48219    /// ```text
48220    /// +---+---------------+
48221    /// | # | Operands      |
48222    /// +---+---------------+
48223    /// | 1 | Xmm, Xmm, Xmm |
48224    /// +---+---------------+
48225    /// ```
48226    #[inline]
48227    pub fn vfmsub132sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48228    where
48229        Assembler<'a>: Vfmsub132shMaskzErEmitter<A, B, C>,
48230    {
48231        <Self as Vfmsub132shMaskzErEmitter<A, B, C>>::vfmsub132sh_maskz_er(self, op0, op1, op2);
48232    }
48233    /// `VFMSUB213PH`.
48234    ///
48235    /// Supported operand variants:
48236    ///
48237    /// ```text
48238    /// +---+---------------+
48239    /// | # | Operands      |
48240    /// +---+---------------+
48241    /// | 1 | Xmm, Xmm, Mem |
48242    /// | 2 | Xmm, Xmm, Xmm |
48243    /// | 3 | Ymm, Ymm, Mem |
48244    /// | 4 | Ymm, Ymm, Ymm |
48245    /// | 5 | Zmm, Zmm, Mem |
48246    /// | 6 | Zmm, Zmm, Zmm |
48247    /// +---+---------------+
48248    /// ```
48249    #[inline]
48250    pub fn vfmsub213ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48251    where
48252        Assembler<'a>: Vfmsub213phEmitter<A, B, C>,
48253    {
48254        <Self as Vfmsub213phEmitter<A, B, C>>::vfmsub213ph(self, op0, op1, op2);
48255    }
48256    /// `VFMSUB213PH_ER`.
48257    ///
48258    /// Supported operand variants:
48259    ///
48260    /// ```text
48261    /// +---+---------------+
48262    /// | # | Operands      |
48263    /// +---+---------------+
48264    /// | 1 | Zmm, Zmm, Zmm |
48265    /// +---+---------------+
48266    /// ```
48267    #[inline]
48268    pub fn vfmsub213ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48269    where
48270        Assembler<'a>: Vfmsub213phErEmitter<A, B, C>,
48271    {
48272        <Self as Vfmsub213phErEmitter<A, B, C>>::vfmsub213ph_er(self, op0, op1, op2);
48273    }
48274    /// `VFMSUB213PH_MASK`.
48275    ///
48276    /// Supported operand variants:
48277    ///
48278    /// ```text
48279    /// +---+---------------+
48280    /// | # | Operands      |
48281    /// +---+---------------+
48282    /// | 1 | Xmm, Xmm, Mem |
48283    /// | 2 | Xmm, Xmm, Xmm |
48284    /// | 3 | Ymm, Ymm, Mem |
48285    /// | 4 | Ymm, Ymm, Ymm |
48286    /// | 5 | Zmm, Zmm, Mem |
48287    /// | 6 | Zmm, Zmm, Zmm |
48288    /// +---+---------------+
48289    /// ```
48290    #[inline]
48291    pub fn vfmsub213ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48292    where
48293        Assembler<'a>: Vfmsub213phMaskEmitter<A, B, C>,
48294    {
48295        <Self as Vfmsub213phMaskEmitter<A, B, C>>::vfmsub213ph_mask(self, op0, op1, op2);
48296    }
48297    /// `VFMSUB213PH_MASK_ER`.
48298    ///
48299    /// Supported operand variants:
48300    ///
48301    /// ```text
48302    /// +---+---------------+
48303    /// | # | Operands      |
48304    /// +---+---------------+
48305    /// | 1 | Zmm, Zmm, Zmm |
48306    /// +---+---------------+
48307    /// ```
48308    #[inline]
48309    pub fn vfmsub213ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48310    where
48311        Assembler<'a>: Vfmsub213phMaskErEmitter<A, B, C>,
48312    {
48313        <Self as Vfmsub213phMaskErEmitter<A, B, C>>::vfmsub213ph_mask_er(self, op0, op1, op2);
48314    }
48315    /// `VFMSUB213PH_MASKZ`.
48316    ///
48317    /// Supported operand variants:
48318    ///
48319    /// ```text
48320    /// +---+---------------+
48321    /// | # | Operands      |
48322    /// +---+---------------+
48323    /// | 1 | Xmm, Xmm, Mem |
48324    /// | 2 | Xmm, Xmm, Xmm |
48325    /// | 3 | Ymm, Ymm, Mem |
48326    /// | 4 | Ymm, Ymm, Ymm |
48327    /// | 5 | Zmm, Zmm, Mem |
48328    /// | 6 | Zmm, Zmm, Zmm |
48329    /// +---+---------------+
48330    /// ```
48331    #[inline]
48332    pub fn vfmsub213ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48333    where
48334        Assembler<'a>: Vfmsub213phMaskzEmitter<A, B, C>,
48335    {
48336        <Self as Vfmsub213phMaskzEmitter<A, B, C>>::vfmsub213ph_maskz(self, op0, op1, op2);
48337    }
48338    /// `VFMSUB213PH_MASKZ_ER`.
48339    ///
48340    /// Supported operand variants:
48341    ///
48342    /// ```text
48343    /// +---+---------------+
48344    /// | # | Operands      |
48345    /// +---+---------------+
48346    /// | 1 | Zmm, Zmm, Zmm |
48347    /// +---+---------------+
48348    /// ```
48349    #[inline]
48350    pub fn vfmsub213ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48351    where
48352        Assembler<'a>: Vfmsub213phMaskzErEmitter<A, B, C>,
48353    {
48354        <Self as Vfmsub213phMaskzErEmitter<A, B, C>>::vfmsub213ph_maskz_er(self, op0, op1, op2);
48355    }
48356    /// `VFMSUB213SH`.
48357    ///
48358    /// Supported operand variants:
48359    ///
48360    /// ```text
48361    /// +---+---------------+
48362    /// | # | Operands      |
48363    /// +---+---------------+
48364    /// | 1 | Xmm, Xmm, Mem |
48365    /// | 2 | Xmm, Xmm, Xmm |
48366    /// +---+---------------+
48367    /// ```
48368    #[inline]
48369    pub fn vfmsub213sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48370    where
48371        Assembler<'a>: Vfmsub213shEmitter<A, B, C>,
48372    {
48373        <Self as Vfmsub213shEmitter<A, B, C>>::vfmsub213sh(self, op0, op1, op2);
48374    }
48375    /// `VFMSUB213SH_ER`.
48376    ///
48377    /// Supported operand variants:
48378    ///
48379    /// ```text
48380    /// +---+---------------+
48381    /// | # | Operands      |
48382    /// +---+---------------+
48383    /// | 1 | Xmm, Xmm, Xmm |
48384    /// +---+---------------+
48385    /// ```
48386    #[inline]
48387    pub fn vfmsub213sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48388    where
48389        Assembler<'a>: Vfmsub213shErEmitter<A, B, C>,
48390    {
48391        <Self as Vfmsub213shErEmitter<A, B, C>>::vfmsub213sh_er(self, op0, op1, op2);
48392    }
48393    /// `VFMSUB213SH_MASK`.
48394    ///
48395    /// Supported operand variants:
48396    ///
48397    /// ```text
48398    /// +---+---------------+
48399    /// | # | Operands      |
48400    /// +---+---------------+
48401    /// | 1 | Xmm, Xmm, Mem |
48402    /// | 2 | Xmm, Xmm, Xmm |
48403    /// +---+---------------+
48404    /// ```
48405    #[inline]
48406    pub fn vfmsub213sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48407    where
48408        Assembler<'a>: Vfmsub213shMaskEmitter<A, B, C>,
48409    {
48410        <Self as Vfmsub213shMaskEmitter<A, B, C>>::vfmsub213sh_mask(self, op0, op1, op2);
48411    }
48412    /// `VFMSUB213SH_MASK_ER`.
48413    ///
48414    /// Supported operand variants:
48415    ///
48416    /// ```text
48417    /// +---+---------------+
48418    /// | # | Operands      |
48419    /// +---+---------------+
48420    /// | 1 | Xmm, Xmm, Xmm |
48421    /// +---+---------------+
48422    /// ```
48423    #[inline]
48424    pub fn vfmsub213sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48425    where
48426        Assembler<'a>: Vfmsub213shMaskErEmitter<A, B, C>,
48427    {
48428        <Self as Vfmsub213shMaskErEmitter<A, B, C>>::vfmsub213sh_mask_er(self, op0, op1, op2);
48429    }
48430    /// `VFMSUB213SH_MASKZ`.
48431    ///
48432    /// Supported operand variants:
48433    ///
48434    /// ```text
48435    /// +---+---------------+
48436    /// | # | Operands      |
48437    /// +---+---------------+
48438    /// | 1 | Xmm, Xmm, Mem |
48439    /// | 2 | Xmm, Xmm, Xmm |
48440    /// +---+---------------+
48441    /// ```
48442    #[inline]
48443    pub fn vfmsub213sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48444    where
48445        Assembler<'a>: Vfmsub213shMaskzEmitter<A, B, C>,
48446    {
48447        <Self as Vfmsub213shMaskzEmitter<A, B, C>>::vfmsub213sh_maskz(self, op0, op1, op2);
48448    }
48449    /// `VFMSUB213SH_MASKZ_ER`.
48450    ///
48451    /// Supported operand variants:
48452    ///
48453    /// ```text
48454    /// +---+---------------+
48455    /// | # | Operands      |
48456    /// +---+---------------+
48457    /// | 1 | Xmm, Xmm, Xmm |
48458    /// +---+---------------+
48459    /// ```
48460    #[inline]
48461    pub fn vfmsub213sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48462    where
48463        Assembler<'a>: Vfmsub213shMaskzErEmitter<A, B, C>,
48464    {
48465        <Self as Vfmsub213shMaskzErEmitter<A, B, C>>::vfmsub213sh_maskz_er(self, op0, op1, op2);
48466    }
48467    /// `VFMSUB231PH`.
48468    ///
48469    /// Supported operand variants:
48470    ///
48471    /// ```text
48472    /// +---+---------------+
48473    /// | # | Operands      |
48474    /// +---+---------------+
48475    /// | 1 | Xmm, Xmm, Mem |
48476    /// | 2 | Xmm, Xmm, Xmm |
48477    /// | 3 | Ymm, Ymm, Mem |
48478    /// | 4 | Ymm, Ymm, Ymm |
48479    /// | 5 | Zmm, Zmm, Mem |
48480    /// | 6 | Zmm, Zmm, Zmm |
48481    /// +---+---------------+
48482    /// ```
48483    #[inline]
48484    pub fn vfmsub231ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48485    where
48486        Assembler<'a>: Vfmsub231phEmitter<A, B, C>,
48487    {
48488        <Self as Vfmsub231phEmitter<A, B, C>>::vfmsub231ph(self, op0, op1, op2);
48489    }
48490    /// `VFMSUB231PH_ER`.
48491    ///
48492    /// Supported operand variants:
48493    ///
48494    /// ```text
48495    /// +---+---------------+
48496    /// | # | Operands      |
48497    /// +---+---------------+
48498    /// | 1 | Zmm, Zmm, Zmm |
48499    /// +---+---------------+
48500    /// ```
48501    #[inline]
48502    pub fn vfmsub231ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48503    where
48504        Assembler<'a>: Vfmsub231phErEmitter<A, B, C>,
48505    {
48506        <Self as Vfmsub231phErEmitter<A, B, C>>::vfmsub231ph_er(self, op0, op1, op2);
48507    }
48508    /// `VFMSUB231PH_MASK`.
48509    ///
48510    /// Supported operand variants:
48511    ///
48512    /// ```text
48513    /// +---+---------------+
48514    /// | # | Operands      |
48515    /// +---+---------------+
48516    /// | 1 | Xmm, Xmm, Mem |
48517    /// | 2 | Xmm, Xmm, Xmm |
48518    /// | 3 | Ymm, Ymm, Mem |
48519    /// | 4 | Ymm, Ymm, Ymm |
48520    /// | 5 | Zmm, Zmm, Mem |
48521    /// | 6 | Zmm, Zmm, Zmm |
48522    /// +---+---------------+
48523    /// ```
48524    #[inline]
48525    pub fn vfmsub231ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48526    where
48527        Assembler<'a>: Vfmsub231phMaskEmitter<A, B, C>,
48528    {
48529        <Self as Vfmsub231phMaskEmitter<A, B, C>>::vfmsub231ph_mask(self, op0, op1, op2);
48530    }
48531    /// `VFMSUB231PH_MASK_ER`.
48532    ///
48533    /// Supported operand variants:
48534    ///
48535    /// ```text
48536    /// +---+---------------+
48537    /// | # | Operands      |
48538    /// +---+---------------+
48539    /// | 1 | Zmm, Zmm, Zmm |
48540    /// +---+---------------+
48541    /// ```
48542    #[inline]
48543    pub fn vfmsub231ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48544    where
48545        Assembler<'a>: Vfmsub231phMaskErEmitter<A, B, C>,
48546    {
48547        <Self as Vfmsub231phMaskErEmitter<A, B, C>>::vfmsub231ph_mask_er(self, op0, op1, op2);
48548    }
48549    /// `VFMSUB231PH_MASKZ`.
48550    ///
48551    /// Supported operand variants:
48552    ///
48553    /// ```text
48554    /// +---+---------------+
48555    /// | # | Operands      |
48556    /// +---+---------------+
48557    /// | 1 | Xmm, Xmm, Mem |
48558    /// | 2 | Xmm, Xmm, Xmm |
48559    /// | 3 | Ymm, Ymm, Mem |
48560    /// | 4 | Ymm, Ymm, Ymm |
48561    /// | 5 | Zmm, Zmm, Mem |
48562    /// | 6 | Zmm, Zmm, Zmm |
48563    /// +---+---------------+
48564    /// ```
48565    #[inline]
48566    pub fn vfmsub231ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48567    where
48568        Assembler<'a>: Vfmsub231phMaskzEmitter<A, B, C>,
48569    {
48570        <Self as Vfmsub231phMaskzEmitter<A, B, C>>::vfmsub231ph_maskz(self, op0, op1, op2);
48571    }
48572    /// `VFMSUB231PH_MASKZ_ER`.
48573    ///
48574    /// Supported operand variants:
48575    ///
48576    /// ```text
48577    /// +---+---------------+
48578    /// | # | Operands      |
48579    /// +---+---------------+
48580    /// | 1 | Zmm, Zmm, Zmm |
48581    /// +---+---------------+
48582    /// ```
48583    #[inline]
48584    pub fn vfmsub231ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48585    where
48586        Assembler<'a>: Vfmsub231phMaskzErEmitter<A, B, C>,
48587    {
48588        <Self as Vfmsub231phMaskzErEmitter<A, B, C>>::vfmsub231ph_maskz_er(self, op0, op1, op2);
48589    }
48590    /// `VFMSUB231SH`.
48591    ///
48592    /// Supported operand variants:
48593    ///
48594    /// ```text
48595    /// +---+---------------+
48596    /// | # | Operands      |
48597    /// +---+---------------+
48598    /// | 1 | Xmm, Xmm, Mem |
48599    /// | 2 | Xmm, Xmm, Xmm |
48600    /// +---+---------------+
48601    /// ```
48602    #[inline]
48603    pub fn vfmsub231sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48604    where
48605        Assembler<'a>: Vfmsub231shEmitter<A, B, C>,
48606    {
48607        <Self as Vfmsub231shEmitter<A, B, C>>::vfmsub231sh(self, op0, op1, op2);
48608    }
48609    /// `VFMSUB231SH_ER`.
48610    ///
48611    /// Supported operand variants:
48612    ///
48613    /// ```text
48614    /// +---+---------------+
48615    /// | # | Operands      |
48616    /// +---+---------------+
48617    /// | 1 | Xmm, Xmm, Xmm |
48618    /// +---+---------------+
48619    /// ```
48620    #[inline]
48621    pub fn vfmsub231sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48622    where
48623        Assembler<'a>: Vfmsub231shErEmitter<A, B, C>,
48624    {
48625        <Self as Vfmsub231shErEmitter<A, B, C>>::vfmsub231sh_er(self, op0, op1, op2);
48626    }
48627    /// `VFMSUB231SH_MASK`.
48628    ///
48629    /// Supported operand variants:
48630    ///
48631    /// ```text
48632    /// +---+---------------+
48633    /// | # | Operands      |
48634    /// +---+---------------+
48635    /// | 1 | Xmm, Xmm, Mem |
48636    /// | 2 | Xmm, Xmm, Xmm |
48637    /// +---+---------------+
48638    /// ```
48639    #[inline]
48640    pub fn vfmsub231sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48641    where
48642        Assembler<'a>: Vfmsub231shMaskEmitter<A, B, C>,
48643    {
48644        <Self as Vfmsub231shMaskEmitter<A, B, C>>::vfmsub231sh_mask(self, op0, op1, op2);
48645    }
48646    /// `VFMSUB231SH_MASK_ER`.
48647    ///
48648    /// Supported operand variants:
48649    ///
48650    /// ```text
48651    /// +---+---------------+
48652    /// | # | Operands      |
48653    /// +---+---------------+
48654    /// | 1 | Xmm, Xmm, Xmm |
48655    /// +---+---------------+
48656    /// ```
48657    #[inline]
48658    pub fn vfmsub231sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48659    where
48660        Assembler<'a>: Vfmsub231shMaskErEmitter<A, B, C>,
48661    {
48662        <Self as Vfmsub231shMaskErEmitter<A, B, C>>::vfmsub231sh_mask_er(self, op0, op1, op2);
48663    }
48664    /// `VFMSUB231SH_MASKZ`.
48665    ///
48666    /// Supported operand variants:
48667    ///
48668    /// ```text
48669    /// +---+---------------+
48670    /// | # | Operands      |
48671    /// +---+---------------+
48672    /// | 1 | Xmm, Xmm, Mem |
48673    /// | 2 | Xmm, Xmm, Xmm |
48674    /// +---+---------------+
48675    /// ```
48676    #[inline]
48677    pub fn vfmsub231sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48678    where
48679        Assembler<'a>: Vfmsub231shMaskzEmitter<A, B, C>,
48680    {
48681        <Self as Vfmsub231shMaskzEmitter<A, B, C>>::vfmsub231sh_maskz(self, op0, op1, op2);
48682    }
48683    /// `VFMSUB231SH_MASKZ_ER`.
48684    ///
48685    /// Supported operand variants:
48686    ///
48687    /// ```text
48688    /// +---+---------------+
48689    /// | # | Operands      |
48690    /// +---+---------------+
48691    /// | 1 | Xmm, Xmm, Xmm |
48692    /// +---+---------------+
48693    /// ```
48694    #[inline]
48695    pub fn vfmsub231sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48696    where
48697        Assembler<'a>: Vfmsub231shMaskzErEmitter<A, B, C>,
48698    {
48699        <Self as Vfmsub231shMaskzErEmitter<A, B, C>>::vfmsub231sh_maskz_er(self, op0, op1, op2);
48700    }
48701    /// `VFMSUBADD132PH`.
48702    ///
48703    /// Supported operand variants:
48704    ///
48705    /// ```text
48706    /// +---+---------------+
48707    /// | # | Operands      |
48708    /// +---+---------------+
48709    /// | 1 | Xmm, Xmm, Mem |
48710    /// | 2 | Xmm, Xmm, Xmm |
48711    /// | 3 | Ymm, Ymm, Mem |
48712    /// | 4 | Ymm, Ymm, Ymm |
48713    /// | 5 | Zmm, Zmm, Mem |
48714    /// | 6 | Zmm, Zmm, Zmm |
48715    /// +---+---------------+
48716    /// ```
48717    #[inline]
48718    pub fn vfmsubadd132ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48719    where
48720        Assembler<'a>: Vfmsubadd132phEmitter<A, B, C>,
48721    {
48722        <Self as Vfmsubadd132phEmitter<A, B, C>>::vfmsubadd132ph(self, op0, op1, op2);
48723    }
48724    /// `VFMSUBADD132PH_ER`.
48725    ///
48726    /// Supported operand variants:
48727    ///
48728    /// ```text
48729    /// +---+---------------+
48730    /// | # | Operands      |
48731    /// +---+---------------+
48732    /// | 1 | Zmm, Zmm, Zmm |
48733    /// +---+---------------+
48734    /// ```
48735    #[inline]
48736    pub fn vfmsubadd132ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48737    where
48738        Assembler<'a>: Vfmsubadd132phErEmitter<A, B, C>,
48739    {
48740        <Self as Vfmsubadd132phErEmitter<A, B, C>>::vfmsubadd132ph_er(self, op0, op1, op2);
48741    }
48742    /// `VFMSUBADD132PH_MASK`.
48743    ///
48744    /// Supported operand variants:
48745    ///
48746    /// ```text
48747    /// +---+---------------+
48748    /// | # | Operands      |
48749    /// +---+---------------+
48750    /// | 1 | Xmm, Xmm, Mem |
48751    /// | 2 | Xmm, Xmm, Xmm |
48752    /// | 3 | Ymm, Ymm, Mem |
48753    /// | 4 | Ymm, Ymm, Ymm |
48754    /// | 5 | Zmm, Zmm, Mem |
48755    /// | 6 | Zmm, Zmm, Zmm |
48756    /// +---+---------------+
48757    /// ```
48758    #[inline]
48759    pub fn vfmsubadd132ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48760    where
48761        Assembler<'a>: Vfmsubadd132phMaskEmitter<A, B, C>,
48762    {
48763        <Self as Vfmsubadd132phMaskEmitter<A, B, C>>::vfmsubadd132ph_mask(self, op0, op1, op2);
48764    }
48765    /// `VFMSUBADD132PH_MASK_ER`.
48766    ///
48767    /// Supported operand variants:
48768    ///
48769    /// ```text
48770    /// +---+---------------+
48771    /// | # | Operands      |
48772    /// +---+---------------+
48773    /// | 1 | Zmm, Zmm, Zmm |
48774    /// +---+---------------+
48775    /// ```
48776    #[inline]
48777    pub fn vfmsubadd132ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48778    where
48779        Assembler<'a>: Vfmsubadd132phMaskErEmitter<A, B, C>,
48780    {
48781        <Self as Vfmsubadd132phMaskErEmitter<A, B, C>>::vfmsubadd132ph_mask_er(self, op0, op1, op2);
48782    }
48783    /// `VFMSUBADD132PH_MASKZ`.
48784    ///
48785    /// Supported operand variants:
48786    ///
48787    /// ```text
48788    /// +---+---------------+
48789    /// | # | Operands      |
48790    /// +---+---------------+
48791    /// | 1 | Xmm, Xmm, Mem |
48792    /// | 2 | Xmm, Xmm, Xmm |
48793    /// | 3 | Ymm, Ymm, Mem |
48794    /// | 4 | Ymm, Ymm, Ymm |
48795    /// | 5 | Zmm, Zmm, Mem |
48796    /// | 6 | Zmm, Zmm, Zmm |
48797    /// +---+---------------+
48798    /// ```
48799    #[inline]
48800    pub fn vfmsubadd132ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48801    where
48802        Assembler<'a>: Vfmsubadd132phMaskzEmitter<A, B, C>,
48803    {
48804        <Self as Vfmsubadd132phMaskzEmitter<A, B, C>>::vfmsubadd132ph_maskz(self, op0, op1, op2);
48805    }
48806    /// `VFMSUBADD132PH_MASKZ_ER`.
48807    ///
48808    /// Supported operand variants:
48809    ///
48810    /// ```text
48811    /// +---+---------------+
48812    /// | # | Operands      |
48813    /// +---+---------------+
48814    /// | 1 | Zmm, Zmm, Zmm |
48815    /// +---+---------------+
48816    /// ```
48817    #[inline]
48818    pub fn vfmsubadd132ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48819    where
48820        Assembler<'a>: Vfmsubadd132phMaskzErEmitter<A, B, C>,
48821    {
48822        <Self as Vfmsubadd132phMaskzErEmitter<A, B, C>>::vfmsubadd132ph_maskz_er(
48823            self, op0, op1, op2,
48824        );
48825    }
48826    /// `VFMSUBADD213PH`.
48827    ///
48828    /// Supported operand variants:
48829    ///
48830    /// ```text
48831    /// +---+---------------+
48832    /// | # | Operands      |
48833    /// +---+---------------+
48834    /// | 1 | Xmm, Xmm, Mem |
48835    /// | 2 | Xmm, Xmm, Xmm |
48836    /// | 3 | Ymm, Ymm, Mem |
48837    /// | 4 | Ymm, Ymm, Ymm |
48838    /// | 5 | Zmm, Zmm, Mem |
48839    /// | 6 | Zmm, Zmm, Zmm |
48840    /// +---+---------------+
48841    /// ```
48842    #[inline]
48843    pub fn vfmsubadd213ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48844    where
48845        Assembler<'a>: Vfmsubadd213phEmitter<A, B, C>,
48846    {
48847        <Self as Vfmsubadd213phEmitter<A, B, C>>::vfmsubadd213ph(self, op0, op1, op2);
48848    }
48849    /// `VFMSUBADD213PH_ER`.
48850    ///
48851    /// Supported operand variants:
48852    ///
48853    /// ```text
48854    /// +---+---------------+
48855    /// | # | Operands      |
48856    /// +---+---------------+
48857    /// | 1 | Zmm, Zmm, Zmm |
48858    /// +---+---------------+
48859    /// ```
48860    #[inline]
48861    pub fn vfmsubadd213ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48862    where
48863        Assembler<'a>: Vfmsubadd213phErEmitter<A, B, C>,
48864    {
48865        <Self as Vfmsubadd213phErEmitter<A, B, C>>::vfmsubadd213ph_er(self, op0, op1, op2);
48866    }
48867    /// `VFMSUBADD213PH_MASK`.
48868    ///
48869    /// Supported operand variants:
48870    ///
48871    /// ```text
48872    /// +---+---------------+
48873    /// | # | Operands      |
48874    /// +---+---------------+
48875    /// | 1 | Xmm, Xmm, Mem |
48876    /// | 2 | Xmm, Xmm, Xmm |
48877    /// | 3 | Ymm, Ymm, Mem |
48878    /// | 4 | Ymm, Ymm, Ymm |
48879    /// | 5 | Zmm, Zmm, Mem |
48880    /// | 6 | Zmm, Zmm, Zmm |
48881    /// +---+---------------+
48882    /// ```
48883    #[inline]
48884    pub fn vfmsubadd213ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48885    where
48886        Assembler<'a>: Vfmsubadd213phMaskEmitter<A, B, C>,
48887    {
48888        <Self as Vfmsubadd213phMaskEmitter<A, B, C>>::vfmsubadd213ph_mask(self, op0, op1, op2);
48889    }
48890    /// `VFMSUBADD213PH_MASK_ER`.
48891    ///
48892    /// Supported operand variants:
48893    ///
48894    /// ```text
48895    /// +---+---------------+
48896    /// | # | Operands      |
48897    /// +---+---------------+
48898    /// | 1 | Zmm, Zmm, Zmm |
48899    /// +---+---------------+
48900    /// ```
48901    #[inline]
48902    pub fn vfmsubadd213ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48903    where
48904        Assembler<'a>: Vfmsubadd213phMaskErEmitter<A, B, C>,
48905    {
48906        <Self as Vfmsubadd213phMaskErEmitter<A, B, C>>::vfmsubadd213ph_mask_er(self, op0, op1, op2);
48907    }
48908    /// `VFMSUBADD213PH_MASKZ`.
48909    ///
48910    /// Supported operand variants:
48911    ///
48912    /// ```text
48913    /// +---+---------------+
48914    /// | # | Operands      |
48915    /// +---+---------------+
48916    /// | 1 | Xmm, Xmm, Mem |
48917    /// | 2 | Xmm, Xmm, Xmm |
48918    /// | 3 | Ymm, Ymm, Mem |
48919    /// | 4 | Ymm, Ymm, Ymm |
48920    /// | 5 | Zmm, Zmm, Mem |
48921    /// | 6 | Zmm, Zmm, Zmm |
48922    /// +---+---------------+
48923    /// ```
48924    #[inline]
48925    pub fn vfmsubadd213ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48926    where
48927        Assembler<'a>: Vfmsubadd213phMaskzEmitter<A, B, C>,
48928    {
48929        <Self as Vfmsubadd213phMaskzEmitter<A, B, C>>::vfmsubadd213ph_maskz(self, op0, op1, op2);
48930    }
48931    /// `VFMSUBADD213PH_MASKZ_ER`.
48932    ///
48933    /// Supported operand variants:
48934    ///
48935    /// ```text
48936    /// +---+---------------+
48937    /// | # | Operands      |
48938    /// +---+---------------+
48939    /// | 1 | Zmm, Zmm, Zmm |
48940    /// +---+---------------+
48941    /// ```
48942    #[inline]
48943    pub fn vfmsubadd213ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48944    where
48945        Assembler<'a>: Vfmsubadd213phMaskzErEmitter<A, B, C>,
48946    {
48947        <Self as Vfmsubadd213phMaskzErEmitter<A, B, C>>::vfmsubadd213ph_maskz_er(
48948            self, op0, op1, op2,
48949        );
48950    }
48951    /// `VFMSUBADD231PH`.
48952    ///
48953    /// Supported operand variants:
48954    ///
48955    /// ```text
48956    /// +---+---------------+
48957    /// | # | Operands      |
48958    /// +---+---------------+
48959    /// | 1 | Xmm, Xmm, Mem |
48960    /// | 2 | Xmm, Xmm, Xmm |
48961    /// | 3 | Ymm, Ymm, Mem |
48962    /// | 4 | Ymm, Ymm, Ymm |
48963    /// | 5 | Zmm, Zmm, Mem |
48964    /// | 6 | Zmm, Zmm, Zmm |
48965    /// +---+---------------+
48966    /// ```
48967    #[inline]
48968    pub fn vfmsubadd231ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48969    where
48970        Assembler<'a>: Vfmsubadd231phEmitter<A, B, C>,
48971    {
48972        <Self as Vfmsubadd231phEmitter<A, B, C>>::vfmsubadd231ph(self, op0, op1, op2);
48973    }
48974    /// `VFMSUBADD231PH_ER`.
48975    ///
48976    /// Supported operand variants:
48977    ///
48978    /// ```text
48979    /// +---+---------------+
48980    /// | # | Operands      |
48981    /// +---+---------------+
48982    /// | 1 | Zmm, Zmm, Zmm |
48983    /// +---+---------------+
48984    /// ```
48985    #[inline]
48986    pub fn vfmsubadd231ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
48987    where
48988        Assembler<'a>: Vfmsubadd231phErEmitter<A, B, C>,
48989    {
48990        <Self as Vfmsubadd231phErEmitter<A, B, C>>::vfmsubadd231ph_er(self, op0, op1, op2);
48991    }
48992    /// `VFMSUBADD231PH_MASK`.
48993    ///
48994    /// Supported operand variants:
48995    ///
48996    /// ```text
48997    /// +---+---------------+
48998    /// | # | Operands      |
48999    /// +---+---------------+
49000    /// | 1 | Xmm, Xmm, Mem |
49001    /// | 2 | Xmm, Xmm, Xmm |
49002    /// | 3 | Ymm, Ymm, Mem |
49003    /// | 4 | Ymm, Ymm, Ymm |
49004    /// | 5 | Zmm, Zmm, Mem |
49005    /// | 6 | Zmm, Zmm, Zmm |
49006    /// +---+---------------+
49007    /// ```
49008    #[inline]
49009    pub fn vfmsubadd231ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49010    where
49011        Assembler<'a>: Vfmsubadd231phMaskEmitter<A, B, C>,
49012    {
49013        <Self as Vfmsubadd231phMaskEmitter<A, B, C>>::vfmsubadd231ph_mask(self, op0, op1, op2);
49014    }
49015    /// `VFMSUBADD231PH_MASK_ER`.
49016    ///
49017    /// Supported operand variants:
49018    ///
49019    /// ```text
49020    /// +---+---------------+
49021    /// | # | Operands      |
49022    /// +---+---------------+
49023    /// | 1 | Zmm, Zmm, Zmm |
49024    /// +---+---------------+
49025    /// ```
49026    #[inline]
49027    pub fn vfmsubadd231ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49028    where
49029        Assembler<'a>: Vfmsubadd231phMaskErEmitter<A, B, C>,
49030    {
49031        <Self as Vfmsubadd231phMaskErEmitter<A, B, C>>::vfmsubadd231ph_mask_er(self, op0, op1, op2);
49032    }
49033    /// `VFMSUBADD231PH_MASKZ`.
49034    ///
49035    /// Supported operand variants:
49036    ///
49037    /// ```text
49038    /// +---+---------------+
49039    /// | # | Operands      |
49040    /// +---+---------------+
49041    /// | 1 | Xmm, Xmm, Mem |
49042    /// | 2 | Xmm, Xmm, Xmm |
49043    /// | 3 | Ymm, Ymm, Mem |
49044    /// | 4 | Ymm, Ymm, Ymm |
49045    /// | 5 | Zmm, Zmm, Mem |
49046    /// | 6 | Zmm, Zmm, Zmm |
49047    /// +---+---------------+
49048    /// ```
49049    #[inline]
49050    pub fn vfmsubadd231ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49051    where
49052        Assembler<'a>: Vfmsubadd231phMaskzEmitter<A, B, C>,
49053    {
49054        <Self as Vfmsubadd231phMaskzEmitter<A, B, C>>::vfmsubadd231ph_maskz(self, op0, op1, op2);
49055    }
49056    /// `VFMSUBADD231PH_MASKZ_ER`.
49057    ///
49058    /// Supported operand variants:
49059    ///
49060    /// ```text
49061    /// +---+---------------+
49062    /// | # | Operands      |
49063    /// +---+---------------+
49064    /// | 1 | Zmm, Zmm, Zmm |
49065    /// +---+---------------+
49066    /// ```
49067    #[inline]
49068    pub fn vfmsubadd231ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49069    where
49070        Assembler<'a>: Vfmsubadd231phMaskzErEmitter<A, B, C>,
49071    {
49072        <Self as Vfmsubadd231phMaskzErEmitter<A, B, C>>::vfmsubadd231ph_maskz_er(
49073            self, op0, op1, op2,
49074        );
49075    }
49076    /// `VFMULCPH`.
49077    ///
49078    /// Supported operand variants:
49079    ///
49080    /// ```text
49081    /// +---+---------------+
49082    /// | # | Operands      |
49083    /// +---+---------------+
49084    /// | 1 | Xmm, Xmm, Mem |
49085    /// | 2 | Xmm, Xmm, Xmm |
49086    /// | 3 | Ymm, Ymm, Mem |
49087    /// | 4 | Ymm, Ymm, Ymm |
49088    /// | 5 | Zmm, Zmm, Mem |
49089    /// | 6 | Zmm, Zmm, Zmm |
49090    /// +---+---------------+
49091    /// ```
49092    #[inline]
49093    pub fn vfmulcph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49094    where
49095        Assembler<'a>: VfmulcphEmitter<A, B, C>,
49096    {
49097        <Self as VfmulcphEmitter<A, B, C>>::vfmulcph(self, op0, op1, op2);
49098    }
49099    /// `VFMULCPH_ER`.
49100    ///
49101    /// Supported operand variants:
49102    ///
49103    /// ```text
49104    /// +---+---------------+
49105    /// | # | Operands      |
49106    /// +---+---------------+
49107    /// | 1 | Zmm, Zmm, Zmm |
49108    /// +---+---------------+
49109    /// ```
49110    #[inline]
49111    pub fn vfmulcph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49112    where
49113        Assembler<'a>: VfmulcphErEmitter<A, B, C>,
49114    {
49115        <Self as VfmulcphErEmitter<A, B, C>>::vfmulcph_er(self, op0, op1, op2);
49116    }
49117    /// `VFMULCPH_MASK`.
49118    ///
49119    /// Supported operand variants:
49120    ///
49121    /// ```text
49122    /// +---+---------------+
49123    /// | # | Operands      |
49124    /// +---+---------------+
49125    /// | 1 | Xmm, Xmm, Mem |
49126    /// | 2 | Xmm, Xmm, Xmm |
49127    /// | 3 | Ymm, Ymm, Mem |
49128    /// | 4 | Ymm, Ymm, Ymm |
49129    /// | 5 | Zmm, Zmm, Mem |
49130    /// | 6 | Zmm, Zmm, Zmm |
49131    /// +---+---------------+
49132    /// ```
49133    #[inline]
49134    pub fn vfmulcph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49135    where
49136        Assembler<'a>: VfmulcphMaskEmitter<A, B, C>,
49137    {
49138        <Self as VfmulcphMaskEmitter<A, B, C>>::vfmulcph_mask(self, op0, op1, op2);
49139    }
49140    /// `VFMULCPH_MASK_ER`.
49141    ///
49142    /// Supported operand variants:
49143    ///
49144    /// ```text
49145    /// +---+---------------+
49146    /// | # | Operands      |
49147    /// +---+---------------+
49148    /// | 1 | Zmm, Zmm, Zmm |
49149    /// +---+---------------+
49150    /// ```
49151    #[inline]
49152    pub fn vfmulcph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49153    where
49154        Assembler<'a>: VfmulcphMaskErEmitter<A, B, C>,
49155    {
49156        <Self as VfmulcphMaskErEmitter<A, B, C>>::vfmulcph_mask_er(self, op0, op1, op2);
49157    }
49158    /// `VFMULCPH_MASKZ`.
49159    ///
49160    /// Supported operand variants:
49161    ///
49162    /// ```text
49163    /// +---+---------------+
49164    /// | # | Operands      |
49165    /// +---+---------------+
49166    /// | 1 | Xmm, Xmm, Mem |
49167    /// | 2 | Xmm, Xmm, Xmm |
49168    /// | 3 | Ymm, Ymm, Mem |
49169    /// | 4 | Ymm, Ymm, Ymm |
49170    /// | 5 | Zmm, Zmm, Mem |
49171    /// | 6 | Zmm, Zmm, Zmm |
49172    /// +---+---------------+
49173    /// ```
49174    #[inline]
49175    pub fn vfmulcph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49176    where
49177        Assembler<'a>: VfmulcphMaskzEmitter<A, B, C>,
49178    {
49179        <Self as VfmulcphMaskzEmitter<A, B, C>>::vfmulcph_maskz(self, op0, op1, op2);
49180    }
49181    /// `VFMULCPH_MASKZ_ER`.
49182    ///
49183    /// Supported operand variants:
49184    ///
49185    /// ```text
49186    /// +---+---------------+
49187    /// | # | Operands      |
49188    /// +---+---------------+
49189    /// | 1 | Zmm, Zmm, Zmm |
49190    /// +---+---------------+
49191    /// ```
49192    #[inline]
49193    pub fn vfmulcph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49194    where
49195        Assembler<'a>: VfmulcphMaskzErEmitter<A, B, C>,
49196    {
49197        <Self as VfmulcphMaskzErEmitter<A, B, C>>::vfmulcph_maskz_er(self, op0, op1, op2);
49198    }
49199    /// `VFMULCSH`.
49200    ///
49201    /// Supported operand variants:
49202    ///
49203    /// ```text
49204    /// +---+---------------+
49205    /// | # | Operands      |
49206    /// +---+---------------+
49207    /// | 1 | Xmm, Xmm, Mem |
49208    /// | 2 | Xmm, Xmm, Xmm |
49209    /// +---+---------------+
49210    /// ```
49211    #[inline]
49212    pub fn vfmulcsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49213    where
49214        Assembler<'a>: VfmulcshEmitter<A, B, C>,
49215    {
49216        <Self as VfmulcshEmitter<A, B, C>>::vfmulcsh(self, op0, op1, op2);
49217    }
49218    /// `VFMULCSH_ER`.
49219    ///
49220    /// Supported operand variants:
49221    ///
49222    /// ```text
49223    /// +---+---------------+
49224    /// | # | Operands      |
49225    /// +---+---------------+
49226    /// | 1 | Xmm, Xmm, Xmm |
49227    /// +---+---------------+
49228    /// ```
49229    #[inline]
49230    pub fn vfmulcsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49231    where
49232        Assembler<'a>: VfmulcshErEmitter<A, B, C>,
49233    {
49234        <Self as VfmulcshErEmitter<A, B, C>>::vfmulcsh_er(self, op0, op1, op2);
49235    }
49236    /// `VFMULCSH_MASK`.
49237    ///
49238    /// Supported operand variants:
49239    ///
49240    /// ```text
49241    /// +---+---------------+
49242    /// | # | Operands      |
49243    /// +---+---------------+
49244    /// | 1 | Xmm, Xmm, Mem |
49245    /// | 2 | Xmm, Xmm, Xmm |
49246    /// +---+---------------+
49247    /// ```
49248    #[inline]
49249    pub fn vfmulcsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49250    where
49251        Assembler<'a>: VfmulcshMaskEmitter<A, B, C>,
49252    {
49253        <Self as VfmulcshMaskEmitter<A, B, C>>::vfmulcsh_mask(self, op0, op1, op2);
49254    }
49255    /// `VFMULCSH_MASK_ER`.
49256    ///
49257    /// Supported operand variants:
49258    ///
49259    /// ```text
49260    /// +---+---------------+
49261    /// | # | Operands      |
49262    /// +---+---------------+
49263    /// | 1 | Xmm, Xmm, Xmm |
49264    /// +---+---------------+
49265    /// ```
49266    #[inline]
49267    pub fn vfmulcsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49268    where
49269        Assembler<'a>: VfmulcshMaskErEmitter<A, B, C>,
49270    {
49271        <Self as VfmulcshMaskErEmitter<A, B, C>>::vfmulcsh_mask_er(self, op0, op1, op2);
49272    }
49273    /// `VFMULCSH_MASKZ`.
49274    ///
49275    /// Supported operand variants:
49276    ///
49277    /// ```text
49278    /// +---+---------------+
49279    /// | # | Operands      |
49280    /// +---+---------------+
49281    /// | 1 | Xmm, Xmm, Mem |
49282    /// | 2 | Xmm, Xmm, Xmm |
49283    /// +---+---------------+
49284    /// ```
49285    #[inline]
49286    pub fn vfmulcsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49287    where
49288        Assembler<'a>: VfmulcshMaskzEmitter<A, B, C>,
49289    {
49290        <Self as VfmulcshMaskzEmitter<A, B, C>>::vfmulcsh_maskz(self, op0, op1, op2);
49291    }
49292    /// `VFMULCSH_MASKZ_ER`.
49293    ///
49294    /// Supported operand variants:
49295    ///
49296    /// ```text
49297    /// +---+---------------+
49298    /// | # | Operands      |
49299    /// +---+---------------+
49300    /// | 1 | Xmm, Xmm, Xmm |
49301    /// +---+---------------+
49302    /// ```
49303    #[inline]
49304    pub fn vfmulcsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49305    where
49306        Assembler<'a>: VfmulcshMaskzErEmitter<A, B, C>,
49307    {
49308        <Self as VfmulcshMaskzErEmitter<A, B, C>>::vfmulcsh_maskz_er(self, op0, op1, op2);
49309    }
49310    /// `VFNMADD132PH`.
49311    ///
49312    /// Supported operand variants:
49313    ///
49314    /// ```text
49315    /// +---+---------------+
49316    /// | # | Operands      |
49317    /// +---+---------------+
49318    /// | 1 | Xmm, Xmm, Mem |
49319    /// | 2 | Xmm, Xmm, Xmm |
49320    /// | 3 | Ymm, Ymm, Mem |
49321    /// | 4 | Ymm, Ymm, Ymm |
49322    /// | 5 | Zmm, Zmm, Mem |
49323    /// | 6 | Zmm, Zmm, Zmm |
49324    /// +---+---------------+
49325    /// ```
49326    #[inline]
49327    pub fn vfnmadd132ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49328    where
49329        Assembler<'a>: Vfnmadd132phEmitter<A, B, C>,
49330    {
49331        <Self as Vfnmadd132phEmitter<A, B, C>>::vfnmadd132ph(self, op0, op1, op2);
49332    }
49333    /// `VFNMADD132PH_ER`.
49334    ///
49335    /// Supported operand variants:
49336    ///
49337    /// ```text
49338    /// +---+---------------+
49339    /// | # | Operands      |
49340    /// +---+---------------+
49341    /// | 1 | Zmm, Zmm, Zmm |
49342    /// +---+---------------+
49343    /// ```
49344    #[inline]
49345    pub fn vfnmadd132ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49346    where
49347        Assembler<'a>: Vfnmadd132phErEmitter<A, B, C>,
49348    {
49349        <Self as Vfnmadd132phErEmitter<A, B, C>>::vfnmadd132ph_er(self, op0, op1, op2);
49350    }
49351    /// `VFNMADD132PH_MASK`.
49352    ///
49353    /// Supported operand variants:
49354    ///
49355    /// ```text
49356    /// +---+---------------+
49357    /// | # | Operands      |
49358    /// +---+---------------+
49359    /// | 1 | Xmm, Xmm, Mem |
49360    /// | 2 | Xmm, Xmm, Xmm |
49361    /// | 3 | Ymm, Ymm, Mem |
49362    /// | 4 | Ymm, Ymm, Ymm |
49363    /// | 5 | Zmm, Zmm, Mem |
49364    /// | 6 | Zmm, Zmm, Zmm |
49365    /// +---+---------------+
49366    /// ```
49367    #[inline]
49368    pub fn vfnmadd132ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49369    where
49370        Assembler<'a>: Vfnmadd132phMaskEmitter<A, B, C>,
49371    {
49372        <Self as Vfnmadd132phMaskEmitter<A, B, C>>::vfnmadd132ph_mask(self, op0, op1, op2);
49373    }
49374    /// `VFNMADD132PH_MASK_ER`.
49375    ///
49376    /// Supported operand variants:
49377    ///
49378    /// ```text
49379    /// +---+---------------+
49380    /// | # | Operands      |
49381    /// +---+---------------+
49382    /// | 1 | Zmm, Zmm, Zmm |
49383    /// +---+---------------+
49384    /// ```
49385    #[inline]
49386    pub fn vfnmadd132ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49387    where
49388        Assembler<'a>: Vfnmadd132phMaskErEmitter<A, B, C>,
49389    {
49390        <Self as Vfnmadd132phMaskErEmitter<A, B, C>>::vfnmadd132ph_mask_er(self, op0, op1, op2);
49391    }
49392    /// `VFNMADD132PH_MASKZ`.
49393    ///
49394    /// Supported operand variants:
49395    ///
49396    /// ```text
49397    /// +---+---------------+
49398    /// | # | Operands      |
49399    /// +---+---------------+
49400    /// | 1 | Xmm, Xmm, Mem |
49401    /// | 2 | Xmm, Xmm, Xmm |
49402    /// | 3 | Ymm, Ymm, Mem |
49403    /// | 4 | Ymm, Ymm, Ymm |
49404    /// | 5 | Zmm, Zmm, Mem |
49405    /// | 6 | Zmm, Zmm, Zmm |
49406    /// +---+---------------+
49407    /// ```
49408    #[inline]
49409    pub fn vfnmadd132ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49410    where
49411        Assembler<'a>: Vfnmadd132phMaskzEmitter<A, B, C>,
49412    {
49413        <Self as Vfnmadd132phMaskzEmitter<A, B, C>>::vfnmadd132ph_maskz(self, op0, op1, op2);
49414    }
49415    /// `VFNMADD132PH_MASKZ_ER`.
49416    ///
49417    /// Supported operand variants:
49418    ///
49419    /// ```text
49420    /// +---+---------------+
49421    /// | # | Operands      |
49422    /// +---+---------------+
49423    /// | 1 | Zmm, Zmm, Zmm |
49424    /// +---+---------------+
49425    /// ```
49426    #[inline]
49427    pub fn vfnmadd132ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49428    where
49429        Assembler<'a>: Vfnmadd132phMaskzErEmitter<A, B, C>,
49430    {
49431        <Self as Vfnmadd132phMaskzErEmitter<A, B, C>>::vfnmadd132ph_maskz_er(self, op0, op1, op2);
49432    }
49433    /// `VFNMADD132SH`.
49434    ///
49435    /// Supported operand variants:
49436    ///
49437    /// ```text
49438    /// +---+---------------+
49439    /// | # | Operands      |
49440    /// +---+---------------+
49441    /// | 1 | Xmm, Xmm, Mem |
49442    /// | 2 | Xmm, Xmm, Xmm |
49443    /// +---+---------------+
49444    /// ```
49445    #[inline]
49446    pub fn vfnmadd132sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49447    where
49448        Assembler<'a>: Vfnmadd132shEmitter<A, B, C>,
49449    {
49450        <Self as Vfnmadd132shEmitter<A, B, C>>::vfnmadd132sh(self, op0, op1, op2);
49451    }
49452    /// `VFNMADD132SH_ER`.
49453    ///
49454    /// Supported operand variants:
49455    ///
49456    /// ```text
49457    /// +---+---------------+
49458    /// | # | Operands      |
49459    /// +---+---------------+
49460    /// | 1 | Xmm, Xmm, Xmm |
49461    /// +---+---------------+
49462    /// ```
49463    #[inline]
49464    pub fn vfnmadd132sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49465    where
49466        Assembler<'a>: Vfnmadd132shErEmitter<A, B, C>,
49467    {
49468        <Self as Vfnmadd132shErEmitter<A, B, C>>::vfnmadd132sh_er(self, op0, op1, op2);
49469    }
49470    /// `VFNMADD132SH_MASK`.
49471    ///
49472    /// Supported operand variants:
49473    ///
49474    /// ```text
49475    /// +---+---------------+
49476    /// | # | Operands      |
49477    /// +---+---------------+
49478    /// | 1 | Xmm, Xmm, Mem |
49479    /// | 2 | Xmm, Xmm, Xmm |
49480    /// +---+---------------+
49481    /// ```
49482    #[inline]
49483    pub fn vfnmadd132sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49484    where
49485        Assembler<'a>: Vfnmadd132shMaskEmitter<A, B, C>,
49486    {
49487        <Self as Vfnmadd132shMaskEmitter<A, B, C>>::vfnmadd132sh_mask(self, op0, op1, op2);
49488    }
49489    /// `VFNMADD132SH_MASK_ER`.
49490    ///
49491    /// Supported operand variants:
49492    ///
49493    /// ```text
49494    /// +---+---------------+
49495    /// | # | Operands      |
49496    /// +---+---------------+
49497    /// | 1 | Xmm, Xmm, Xmm |
49498    /// +---+---------------+
49499    /// ```
49500    #[inline]
49501    pub fn vfnmadd132sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49502    where
49503        Assembler<'a>: Vfnmadd132shMaskErEmitter<A, B, C>,
49504    {
49505        <Self as Vfnmadd132shMaskErEmitter<A, B, C>>::vfnmadd132sh_mask_er(self, op0, op1, op2);
49506    }
49507    /// `VFNMADD132SH_MASKZ`.
49508    ///
49509    /// Supported operand variants:
49510    ///
49511    /// ```text
49512    /// +---+---------------+
49513    /// | # | Operands      |
49514    /// +---+---------------+
49515    /// | 1 | Xmm, Xmm, Mem |
49516    /// | 2 | Xmm, Xmm, Xmm |
49517    /// +---+---------------+
49518    /// ```
49519    #[inline]
49520    pub fn vfnmadd132sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49521    where
49522        Assembler<'a>: Vfnmadd132shMaskzEmitter<A, B, C>,
49523    {
49524        <Self as Vfnmadd132shMaskzEmitter<A, B, C>>::vfnmadd132sh_maskz(self, op0, op1, op2);
49525    }
49526    /// `VFNMADD132SH_MASKZ_ER`.
49527    ///
49528    /// Supported operand variants:
49529    ///
49530    /// ```text
49531    /// +---+---------------+
49532    /// | # | Operands      |
49533    /// +---+---------------+
49534    /// | 1 | Xmm, Xmm, Xmm |
49535    /// +---+---------------+
49536    /// ```
49537    #[inline]
49538    pub fn vfnmadd132sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49539    where
49540        Assembler<'a>: Vfnmadd132shMaskzErEmitter<A, B, C>,
49541    {
49542        <Self as Vfnmadd132shMaskzErEmitter<A, B, C>>::vfnmadd132sh_maskz_er(self, op0, op1, op2);
49543    }
49544    /// `VFNMADD213PH`.
49545    ///
49546    /// Supported operand variants:
49547    ///
49548    /// ```text
49549    /// +---+---------------+
49550    /// | # | Operands      |
49551    /// +---+---------------+
49552    /// | 1 | Xmm, Xmm, Mem |
49553    /// | 2 | Xmm, Xmm, Xmm |
49554    /// | 3 | Ymm, Ymm, Mem |
49555    /// | 4 | Ymm, Ymm, Ymm |
49556    /// | 5 | Zmm, Zmm, Mem |
49557    /// | 6 | Zmm, Zmm, Zmm |
49558    /// +---+---------------+
49559    /// ```
49560    #[inline]
49561    pub fn vfnmadd213ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49562    where
49563        Assembler<'a>: Vfnmadd213phEmitter<A, B, C>,
49564    {
49565        <Self as Vfnmadd213phEmitter<A, B, C>>::vfnmadd213ph(self, op0, op1, op2);
49566    }
49567    /// `VFNMADD213PH_ER`.
49568    ///
49569    /// Supported operand variants:
49570    ///
49571    /// ```text
49572    /// +---+---------------+
49573    /// | # | Operands      |
49574    /// +---+---------------+
49575    /// | 1 | Zmm, Zmm, Zmm |
49576    /// +---+---------------+
49577    /// ```
49578    #[inline]
49579    pub fn vfnmadd213ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49580    where
49581        Assembler<'a>: Vfnmadd213phErEmitter<A, B, C>,
49582    {
49583        <Self as Vfnmadd213phErEmitter<A, B, C>>::vfnmadd213ph_er(self, op0, op1, op2);
49584    }
49585    /// `VFNMADD213PH_MASK`.
49586    ///
49587    /// Supported operand variants:
49588    ///
49589    /// ```text
49590    /// +---+---------------+
49591    /// | # | Operands      |
49592    /// +---+---------------+
49593    /// | 1 | Xmm, Xmm, Mem |
49594    /// | 2 | Xmm, Xmm, Xmm |
49595    /// | 3 | Ymm, Ymm, Mem |
49596    /// | 4 | Ymm, Ymm, Ymm |
49597    /// | 5 | Zmm, Zmm, Mem |
49598    /// | 6 | Zmm, Zmm, Zmm |
49599    /// +---+---------------+
49600    /// ```
49601    #[inline]
49602    pub fn vfnmadd213ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49603    where
49604        Assembler<'a>: Vfnmadd213phMaskEmitter<A, B, C>,
49605    {
49606        <Self as Vfnmadd213phMaskEmitter<A, B, C>>::vfnmadd213ph_mask(self, op0, op1, op2);
49607    }
49608    /// `VFNMADD213PH_MASK_ER`.
49609    ///
49610    /// Supported operand variants:
49611    ///
49612    /// ```text
49613    /// +---+---------------+
49614    /// | # | Operands      |
49615    /// +---+---------------+
49616    /// | 1 | Zmm, Zmm, Zmm |
49617    /// +---+---------------+
49618    /// ```
49619    #[inline]
49620    pub fn vfnmadd213ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49621    where
49622        Assembler<'a>: Vfnmadd213phMaskErEmitter<A, B, C>,
49623    {
49624        <Self as Vfnmadd213phMaskErEmitter<A, B, C>>::vfnmadd213ph_mask_er(self, op0, op1, op2);
49625    }
49626    /// `VFNMADD213PH_MASKZ`.
49627    ///
49628    /// Supported operand variants:
49629    ///
49630    /// ```text
49631    /// +---+---------------+
49632    /// | # | Operands      |
49633    /// +---+---------------+
49634    /// | 1 | Xmm, Xmm, Mem |
49635    /// | 2 | Xmm, Xmm, Xmm |
49636    /// | 3 | Ymm, Ymm, Mem |
49637    /// | 4 | Ymm, Ymm, Ymm |
49638    /// | 5 | Zmm, Zmm, Mem |
49639    /// | 6 | Zmm, Zmm, Zmm |
49640    /// +---+---------------+
49641    /// ```
49642    #[inline]
49643    pub fn vfnmadd213ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49644    where
49645        Assembler<'a>: Vfnmadd213phMaskzEmitter<A, B, C>,
49646    {
49647        <Self as Vfnmadd213phMaskzEmitter<A, B, C>>::vfnmadd213ph_maskz(self, op0, op1, op2);
49648    }
49649    /// `VFNMADD213PH_MASKZ_ER`.
49650    ///
49651    /// Supported operand variants:
49652    ///
49653    /// ```text
49654    /// +---+---------------+
49655    /// | # | Operands      |
49656    /// +---+---------------+
49657    /// | 1 | Zmm, Zmm, Zmm |
49658    /// +---+---------------+
49659    /// ```
49660    #[inline]
49661    pub fn vfnmadd213ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49662    where
49663        Assembler<'a>: Vfnmadd213phMaskzErEmitter<A, B, C>,
49664    {
49665        <Self as Vfnmadd213phMaskzErEmitter<A, B, C>>::vfnmadd213ph_maskz_er(self, op0, op1, op2);
49666    }
49667    /// `VFNMADD213SH`.
49668    ///
49669    /// Supported operand variants:
49670    ///
49671    /// ```text
49672    /// +---+---------------+
49673    /// | # | Operands      |
49674    /// +---+---------------+
49675    /// | 1 | Xmm, Xmm, Mem |
49676    /// | 2 | Xmm, Xmm, Xmm |
49677    /// +---+---------------+
49678    /// ```
49679    #[inline]
49680    pub fn vfnmadd213sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49681    where
49682        Assembler<'a>: Vfnmadd213shEmitter<A, B, C>,
49683    {
49684        <Self as Vfnmadd213shEmitter<A, B, C>>::vfnmadd213sh(self, op0, op1, op2);
49685    }
49686    /// `VFNMADD213SH_ER`.
49687    ///
49688    /// Supported operand variants:
49689    ///
49690    /// ```text
49691    /// +---+---------------+
49692    /// | # | Operands      |
49693    /// +---+---------------+
49694    /// | 1 | Xmm, Xmm, Xmm |
49695    /// +---+---------------+
49696    /// ```
49697    #[inline]
49698    pub fn vfnmadd213sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49699    where
49700        Assembler<'a>: Vfnmadd213shErEmitter<A, B, C>,
49701    {
49702        <Self as Vfnmadd213shErEmitter<A, B, C>>::vfnmadd213sh_er(self, op0, op1, op2);
49703    }
49704    /// `VFNMADD213SH_MASK`.
49705    ///
49706    /// Supported operand variants:
49707    ///
49708    /// ```text
49709    /// +---+---------------+
49710    /// | # | Operands      |
49711    /// +---+---------------+
49712    /// | 1 | Xmm, Xmm, Mem |
49713    /// | 2 | Xmm, Xmm, Xmm |
49714    /// +---+---------------+
49715    /// ```
49716    #[inline]
49717    pub fn vfnmadd213sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49718    where
49719        Assembler<'a>: Vfnmadd213shMaskEmitter<A, B, C>,
49720    {
49721        <Self as Vfnmadd213shMaskEmitter<A, B, C>>::vfnmadd213sh_mask(self, op0, op1, op2);
49722    }
49723    /// `VFNMADD213SH_MASK_ER`.
49724    ///
49725    /// Supported operand variants:
49726    ///
49727    /// ```text
49728    /// +---+---------------+
49729    /// | # | Operands      |
49730    /// +---+---------------+
49731    /// | 1 | Xmm, Xmm, Xmm |
49732    /// +---+---------------+
49733    /// ```
49734    #[inline]
49735    pub fn vfnmadd213sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49736    where
49737        Assembler<'a>: Vfnmadd213shMaskErEmitter<A, B, C>,
49738    {
49739        <Self as Vfnmadd213shMaskErEmitter<A, B, C>>::vfnmadd213sh_mask_er(self, op0, op1, op2);
49740    }
49741    /// `VFNMADD213SH_MASKZ`.
49742    ///
49743    /// Supported operand variants:
49744    ///
49745    /// ```text
49746    /// +---+---------------+
49747    /// | # | Operands      |
49748    /// +---+---------------+
49749    /// | 1 | Xmm, Xmm, Mem |
49750    /// | 2 | Xmm, Xmm, Xmm |
49751    /// +---+---------------+
49752    /// ```
49753    #[inline]
49754    pub fn vfnmadd213sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49755    where
49756        Assembler<'a>: Vfnmadd213shMaskzEmitter<A, B, C>,
49757    {
49758        <Self as Vfnmadd213shMaskzEmitter<A, B, C>>::vfnmadd213sh_maskz(self, op0, op1, op2);
49759    }
49760    /// `VFNMADD213SH_MASKZ_ER`.
49761    ///
49762    /// Supported operand variants:
49763    ///
49764    /// ```text
49765    /// +---+---------------+
49766    /// | # | Operands      |
49767    /// +---+---------------+
49768    /// | 1 | Xmm, Xmm, Xmm |
49769    /// +---+---------------+
49770    /// ```
49771    #[inline]
49772    pub fn vfnmadd213sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49773    where
49774        Assembler<'a>: Vfnmadd213shMaskzErEmitter<A, B, C>,
49775    {
49776        <Self as Vfnmadd213shMaskzErEmitter<A, B, C>>::vfnmadd213sh_maskz_er(self, op0, op1, op2);
49777    }
49778    /// `VFNMADD231PH`.
49779    ///
49780    /// Supported operand variants:
49781    ///
49782    /// ```text
49783    /// +---+---------------+
49784    /// | # | Operands      |
49785    /// +---+---------------+
49786    /// | 1 | Xmm, Xmm, Mem |
49787    /// | 2 | Xmm, Xmm, Xmm |
49788    /// | 3 | Ymm, Ymm, Mem |
49789    /// | 4 | Ymm, Ymm, Ymm |
49790    /// | 5 | Zmm, Zmm, Mem |
49791    /// | 6 | Zmm, Zmm, Zmm |
49792    /// +---+---------------+
49793    /// ```
49794    #[inline]
49795    pub fn vfnmadd231ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49796    where
49797        Assembler<'a>: Vfnmadd231phEmitter<A, B, C>,
49798    {
49799        <Self as Vfnmadd231phEmitter<A, B, C>>::vfnmadd231ph(self, op0, op1, op2);
49800    }
49801    /// `VFNMADD231PH_ER`.
49802    ///
49803    /// Supported operand variants:
49804    ///
49805    /// ```text
49806    /// +---+---------------+
49807    /// | # | Operands      |
49808    /// +---+---------------+
49809    /// | 1 | Zmm, Zmm, Zmm |
49810    /// +---+---------------+
49811    /// ```
49812    #[inline]
49813    pub fn vfnmadd231ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49814    where
49815        Assembler<'a>: Vfnmadd231phErEmitter<A, B, C>,
49816    {
49817        <Self as Vfnmadd231phErEmitter<A, B, C>>::vfnmadd231ph_er(self, op0, op1, op2);
49818    }
49819    /// `VFNMADD231PH_MASK`.
49820    ///
49821    /// Supported operand variants:
49822    ///
49823    /// ```text
49824    /// +---+---------------+
49825    /// | # | Operands      |
49826    /// +---+---------------+
49827    /// | 1 | Xmm, Xmm, Mem |
49828    /// | 2 | Xmm, Xmm, Xmm |
49829    /// | 3 | Ymm, Ymm, Mem |
49830    /// | 4 | Ymm, Ymm, Ymm |
49831    /// | 5 | Zmm, Zmm, Mem |
49832    /// | 6 | Zmm, Zmm, Zmm |
49833    /// +---+---------------+
49834    /// ```
49835    #[inline]
49836    pub fn vfnmadd231ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49837    where
49838        Assembler<'a>: Vfnmadd231phMaskEmitter<A, B, C>,
49839    {
49840        <Self as Vfnmadd231phMaskEmitter<A, B, C>>::vfnmadd231ph_mask(self, op0, op1, op2);
49841    }
49842    /// `VFNMADD231PH_MASK_ER`.
49843    ///
49844    /// Supported operand variants:
49845    ///
49846    /// ```text
49847    /// +---+---------------+
49848    /// | # | Operands      |
49849    /// +---+---------------+
49850    /// | 1 | Zmm, Zmm, Zmm |
49851    /// +---+---------------+
49852    /// ```
49853    #[inline]
49854    pub fn vfnmadd231ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49855    where
49856        Assembler<'a>: Vfnmadd231phMaskErEmitter<A, B, C>,
49857    {
49858        <Self as Vfnmadd231phMaskErEmitter<A, B, C>>::vfnmadd231ph_mask_er(self, op0, op1, op2);
49859    }
49860    /// `VFNMADD231PH_MASKZ`.
49861    ///
49862    /// Supported operand variants:
49863    ///
49864    /// ```text
49865    /// +---+---------------+
49866    /// | # | Operands      |
49867    /// +---+---------------+
49868    /// | 1 | Xmm, Xmm, Mem |
49869    /// | 2 | Xmm, Xmm, Xmm |
49870    /// | 3 | Ymm, Ymm, Mem |
49871    /// | 4 | Ymm, Ymm, Ymm |
49872    /// | 5 | Zmm, Zmm, Mem |
49873    /// | 6 | Zmm, Zmm, Zmm |
49874    /// +---+---------------+
49875    /// ```
49876    #[inline]
49877    pub fn vfnmadd231ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49878    where
49879        Assembler<'a>: Vfnmadd231phMaskzEmitter<A, B, C>,
49880    {
49881        <Self as Vfnmadd231phMaskzEmitter<A, B, C>>::vfnmadd231ph_maskz(self, op0, op1, op2);
49882    }
49883    /// `VFNMADD231PH_MASKZ_ER`.
49884    ///
49885    /// Supported operand variants:
49886    ///
49887    /// ```text
49888    /// +---+---------------+
49889    /// | # | Operands      |
49890    /// +---+---------------+
49891    /// | 1 | Zmm, Zmm, Zmm |
49892    /// +---+---------------+
49893    /// ```
49894    #[inline]
49895    pub fn vfnmadd231ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49896    where
49897        Assembler<'a>: Vfnmadd231phMaskzErEmitter<A, B, C>,
49898    {
49899        <Self as Vfnmadd231phMaskzErEmitter<A, B, C>>::vfnmadd231ph_maskz_er(self, op0, op1, op2);
49900    }
49901    /// `VFNMADD231SH`.
49902    ///
49903    /// Supported operand variants:
49904    ///
49905    /// ```text
49906    /// +---+---------------+
49907    /// | # | Operands      |
49908    /// +---+---------------+
49909    /// | 1 | Xmm, Xmm, Mem |
49910    /// | 2 | Xmm, Xmm, Xmm |
49911    /// +---+---------------+
49912    /// ```
49913    #[inline]
49914    pub fn vfnmadd231sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49915    where
49916        Assembler<'a>: Vfnmadd231shEmitter<A, B, C>,
49917    {
49918        <Self as Vfnmadd231shEmitter<A, B, C>>::vfnmadd231sh(self, op0, op1, op2);
49919    }
49920    /// `VFNMADD231SH_ER`.
49921    ///
49922    /// Supported operand variants:
49923    ///
49924    /// ```text
49925    /// +---+---------------+
49926    /// | # | Operands      |
49927    /// +---+---------------+
49928    /// | 1 | Xmm, Xmm, Xmm |
49929    /// +---+---------------+
49930    /// ```
49931    #[inline]
49932    pub fn vfnmadd231sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49933    where
49934        Assembler<'a>: Vfnmadd231shErEmitter<A, B, C>,
49935    {
49936        <Self as Vfnmadd231shErEmitter<A, B, C>>::vfnmadd231sh_er(self, op0, op1, op2);
49937    }
49938    /// `VFNMADD231SH_MASK`.
49939    ///
49940    /// Supported operand variants:
49941    ///
49942    /// ```text
49943    /// +---+---------------+
49944    /// | # | Operands      |
49945    /// +---+---------------+
49946    /// | 1 | Xmm, Xmm, Mem |
49947    /// | 2 | Xmm, Xmm, Xmm |
49948    /// +---+---------------+
49949    /// ```
49950    #[inline]
49951    pub fn vfnmadd231sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49952    where
49953        Assembler<'a>: Vfnmadd231shMaskEmitter<A, B, C>,
49954    {
49955        <Self as Vfnmadd231shMaskEmitter<A, B, C>>::vfnmadd231sh_mask(self, op0, op1, op2);
49956    }
49957    /// `VFNMADD231SH_MASK_ER`.
49958    ///
49959    /// Supported operand variants:
49960    ///
49961    /// ```text
49962    /// +---+---------------+
49963    /// | # | Operands      |
49964    /// +---+---------------+
49965    /// | 1 | Xmm, Xmm, Xmm |
49966    /// +---+---------------+
49967    /// ```
49968    #[inline]
49969    pub fn vfnmadd231sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49970    where
49971        Assembler<'a>: Vfnmadd231shMaskErEmitter<A, B, C>,
49972    {
49973        <Self as Vfnmadd231shMaskErEmitter<A, B, C>>::vfnmadd231sh_mask_er(self, op0, op1, op2);
49974    }
49975    /// `VFNMADD231SH_MASKZ`.
49976    ///
49977    /// Supported operand variants:
49978    ///
49979    /// ```text
49980    /// +---+---------------+
49981    /// | # | Operands      |
49982    /// +---+---------------+
49983    /// | 1 | Xmm, Xmm, Mem |
49984    /// | 2 | Xmm, Xmm, Xmm |
49985    /// +---+---------------+
49986    /// ```
49987    #[inline]
49988    pub fn vfnmadd231sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
49989    where
49990        Assembler<'a>: Vfnmadd231shMaskzEmitter<A, B, C>,
49991    {
49992        <Self as Vfnmadd231shMaskzEmitter<A, B, C>>::vfnmadd231sh_maskz(self, op0, op1, op2);
49993    }
49994    /// `VFNMADD231SH_MASKZ_ER`.
49995    ///
49996    /// Supported operand variants:
49997    ///
49998    /// ```text
49999    /// +---+---------------+
50000    /// | # | Operands      |
50001    /// +---+---------------+
50002    /// | 1 | Xmm, Xmm, Xmm |
50003    /// +---+---------------+
50004    /// ```
50005    #[inline]
50006    pub fn vfnmadd231sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50007    where
50008        Assembler<'a>: Vfnmadd231shMaskzErEmitter<A, B, C>,
50009    {
50010        <Self as Vfnmadd231shMaskzErEmitter<A, B, C>>::vfnmadd231sh_maskz_er(self, op0, op1, op2);
50011    }
50012    /// `VFNMSUB132PH`.
50013    ///
50014    /// Supported operand variants:
50015    ///
50016    /// ```text
50017    /// +---+---------------+
50018    /// | # | Operands      |
50019    /// +---+---------------+
50020    /// | 1 | Xmm, Xmm, Mem |
50021    /// | 2 | Xmm, Xmm, Xmm |
50022    /// | 3 | Ymm, Ymm, Mem |
50023    /// | 4 | Ymm, Ymm, Ymm |
50024    /// | 5 | Zmm, Zmm, Mem |
50025    /// | 6 | Zmm, Zmm, Zmm |
50026    /// +---+---------------+
50027    /// ```
50028    #[inline]
50029    pub fn vfnmsub132ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50030    where
50031        Assembler<'a>: Vfnmsub132phEmitter<A, B, C>,
50032    {
50033        <Self as Vfnmsub132phEmitter<A, B, C>>::vfnmsub132ph(self, op0, op1, op2);
50034    }
50035    /// `VFNMSUB132PH_ER`.
50036    ///
50037    /// Supported operand variants:
50038    ///
50039    /// ```text
50040    /// +---+---------------+
50041    /// | # | Operands      |
50042    /// +---+---------------+
50043    /// | 1 | Zmm, Zmm, Zmm |
50044    /// +---+---------------+
50045    /// ```
50046    #[inline]
50047    pub fn vfnmsub132ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50048    where
50049        Assembler<'a>: Vfnmsub132phErEmitter<A, B, C>,
50050    {
50051        <Self as Vfnmsub132phErEmitter<A, B, C>>::vfnmsub132ph_er(self, op0, op1, op2);
50052    }
50053    /// `VFNMSUB132PH_MASK`.
50054    ///
50055    /// Supported operand variants:
50056    ///
50057    /// ```text
50058    /// +---+---------------+
50059    /// | # | Operands      |
50060    /// +---+---------------+
50061    /// | 1 | Xmm, Xmm, Mem |
50062    /// | 2 | Xmm, Xmm, Xmm |
50063    /// | 3 | Ymm, Ymm, Mem |
50064    /// | 4 | Ymm, Ymm, Ymm |
50065    /// | 5 | Zmm, Zmm, Mem |
50066    /// | 6 | Zmm, Zmm, Zmm |
50067    /// +---+---------------+
50068    /// ```
50069    #[inline]
50070    pub fn vfnmsub132ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50071    where
50072        Assembler<'a>: Vfnmsub132phMaskEmitter<A, B, C>,
50073    {
50074        <Self as Vfnmsub132phMaskEmitter<A, B, C>>::vfnmsub132ph_mask(self, op0, op1, op2);
50075    }
50076    /// `VFNMSUB132PH_MASK_ER`.
50077    ///
50078    /// Supported operand variants:
50079    ///
50080    /// ```text
50081    /// +---+---------------+
50082    /// | # | Operands      |
50083    /// +---+---------------+
50084    /// | 1 | Zmm, Zmm, Zmm |
50085    /// +---+---------------+
50086    /// ```
50087    #[inline]
50088    pub fn vfnmsub132ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50089    where
50090        Assembler<'a>: Vfnmsub132phMaskErEmitter<A, B, C>,
50091    {
50092        <Self as Vfnmsub132phMaskErEmitter<A, B, C>>::vfnmsub132ph_mask_er(self, op0, op1, op2);
50093    }
50094    /// `VFNMSUB132PH_MASKZ`.
50095    ///
50096    /// Supported operand variants:
50097    ///
50098    /// ```text
50099    /// +---+---------------+
50100    /// | # | Operands      |
50101    /// +---+---------------+
50102    /// | 1 | Xmm, Xmm, Mem |
50103    /// | 2 | Xmm, Xmm, Xmm |
50104    /// | 3 | Ymm, Ymm, Mem |
50105    /// | 4 | Ymm, Ymm, Ymm |
50106    /// | 5 | Zmm, Zmm, Mem |
50107    /// | 6 | Zmm, Zmm, Zmm |
50108    /// +---+---------------+
50109    /// ```
50110    #[inline]
50111    pub fn vfnmsub132ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50112    where
50113        Assembler<'a>: Vfnmsub132phMaskzEmitter<A, B, C>,
50114    {
50115        <Self as Vfnmsub132phMaskzEmitter<A, B, C>>::vfnmsub132ph_maskz(self, op0, op1, op2);
50116    }
50117    /// `VFNMSUB132PH_MASKZ_ER`.
50118    ///
50119    /// Supported operand variants:
50120    ///
50121    /// ```text
50122    /// +---+---------------+
50123    /// | # | Operands      |
50124    /// +---+---------------+
50125    /// | 1 | Zmm, Zmm, Zmm |
50126    /// +---+---------------+
50127    /// ```
50128    #[inline]
50129    pub fn vfnmsub132ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50130    where
50131        Assembler<'a>: Vfnmsub132phMaskzErEmitter<A, B, C>,
50132    {
50133        <Self as Vfnmsub132phMaskzErEmitter<A, B, C>>::vfnmsub132ph_maskz_er(self, op0, op1, op2);
50134    }
50135    /// `VFNMSUB132SH`.
50136    ///
50137    /// Supported operand variants:
50138    ///
50139    /// ```text
50140    /// +---+---------------+
50141    /// | # | Operands      |
50142    /// +---+---------------+
50143    /// | 1 | Xmm, Xmm, Mem |
50144    /// | 2 | Xmm, Xmm, Xmm |
50145    /// +---+---------------+
50146    /// ```
50147    #[inline]
50148    pub fn vfnmsub132sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50149    where
50150        Assembler<'a>: Vfnmsub132shEmitter<A, B, C>,
50151    {
50152        <Self as Vfnmsub132shEmitter<A, B, C>>::vfnmsub132sh(self, op0, op1, op2);
50153    }
50154    /// `VFNMSUB132SH_ER`.
50155    ///
50156    /// Supported operand variants:
50157    ///
50158    /// ```text
50159    /// +---+---------------+
50160    /// | # | Operands      |
50161    /// +---+---------------+
50162    /// | 1 | Xmm, Xmm, Xmm |
50163    /// +---+---------------+
50164    /// ```
50165    #[inline]
50166    pub fn vfnmsub132sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50167    where
50168        Assembler<'a>: Vfnmsub132shErEmitter<A, B, C>,
50169    {
50170        <Self as Vfnmsub132shErEmitter<A, B, C>>::vfnmsub132sh_er(self, op0, op1, op2);
50171    }
50172    /// `VFNMSUB132SH_MASK`.
50173    ///
50174    /// Supported operand variants:
50175    ///
50176    /// ```text
50177    /// +---+---------------+
50178    /// | # | Operands      |
50179    /// +---+---------------+
50180    /// | 1 | Xmm, Xmm, Mem |
50181    /// | 2 | Xmm, Xmm, Xmm |
50182    /// +---+---------------+
50183    /// ```
50184    #[inline]
50185    pub fn vfnmsub132sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50186    where
50187        Assembler<'a>: Vfnmsub132shMaskEmitter<A, B, C>,
50188    {
50189        <Self as Vfnmsub132shMaskEmitter<A, B, C>>::vfnmsub132sh_mask(self, op0, op1, op2);
50190    }
50191    /// `VFNMSUB132SH_MASK_ER`.
50192    ///
50193    /// Supported operand variants:
50194    ///
50195    /// ```text
50196    /// +---+---------------+
50197    /// | # | Operands      |
50198    /// +---+---------------+
50199    /// | 1 | Xmm, Xmm, Xmm |
50200    /// +---+---------------+
50201    /// ```
50202    #[inline]
50203    pub fn vfnmsub132sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50204    where
50205        Assembler<'a>: Vfnmsub132shMaskErEmitter<A, B, C>,
50206    {
50207        <Self as Vfnmsub132shMaskErEmitter<A, B, C>>::vfnmsub132sh_mask_er(self, op0, op1, op2);
50208    }
50209    /// `VFNMSUB132SH_MASKZ`.
50210    ///
50211    /// Supported operand variants:
50212    ///
50213    /// ```text
50214    /// +---+---------------+
50215    /// | # | Operands      |
50216    /// +---+---------------+
50217    /// | 1 | Xmm, Xmm, Mem |
50218    /// | 2 | Xmm, Xmm, Xmm |
50219    /// +---+---------------+
50220    /// ```
50221    #[inline]
50222    pub fn vfnmsub132sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50223    where
50224        Assembler<'a>: Vfnmsub132shMaskzEmitter<A, B, C>,
50225    {
50226        <Self as Vfnmsub132shMaskzEmitter<A, B, C>>::vfnmsub132sh_maskz(self, op0, op1, op2);
50227    }
50228    /// `VFNMSUB132SH_MASKZ_ER`.
50229    ///
50230    /// Supported operand variants:
50231    ///
50232    /// ```text
50233    /// +---+---------------+
50234    /// | # | Operands      |
50235    /// +---+---------------+
50236    /// | 1 | Xmm, Xmm, Xmm |
50237    /// +---+---------------+
50238    /// ```
50239    #[inline]
50240    pub fn vfnmsub132sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50241    where
50242        Assembler<'a>: Vfnmsub132shMaskzErEmitter<A, B, C>,
50243    {
50244        <Self as Vfnmsub132shMaskzErEmitter<A, B, C>>::vfnmsub132sh_maskz_er(self, op0, op1, op2);
50245    }
50246    /// `VFNMSUB213PH`.
50247    ///
50248    /// Supported operand variants:
50249    ///
50250    /// ```text
50251    /// +---+---------------+
50252    /// | # | Operands      |
50253    /// +---+---------------+
50254    /// | 1 | Xmm, Xmm, Mem |
50255    /// | 2 | Xmm, Xmm, Xmm |
50256    /// | 3 | Ymm, Ymm, Mem |
50257    /// | 4 | Ymm, Ymm, Ymm |
50258    /// | 5 | Zmm, Zmm, Mem |
50259    /// | 6 | Zmm, Zmm, Zmm |
50260    /// +---+---------------+
50261    /// ```
50262    #[inline]
50263    pub fn vfnmsub213ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50264    where
50265        Assembler<'a>: Vfnmsub213phEmitter<A, B, C>,
50266    {
50267        <Self as Vfnmsub213phEmitter<A, B, C>>::vfnmsub213ph(self, op0, op1, op2);
50268    }
50269    /// `VFNMSUB213PH_ER`.
50270    ///
50271    /// Supported operand variants:
50272    ///
50273    /// ```text
50274    /// +---+---------------+
50275    /// | # | Operands      |
50276    /// +---+---------------+
50277    /// | 1 | Zmm, Zmm, Zmm |
50278    /// +---+---------------+
50279    /// ```
50280    #[inline]
50281    pub fn vfnmsub213ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50282    where
50283        Assembler<'a>: Vfnmsub213phErEmitter<A, B, C>,
50284    {
50285        <Self as Vfnmsub213phErEmitter<A, B, C>>::vfnmsub213ph_er(self, op0, op1, op2);
50286    }
50287    /// `VFNMSUB213PH_MASK`.
50288    ///
50289    /// Supported operand variants:
50290    ///
50291    /// ```text
50292    /// +---+---------------+
50293    /// | # | Operands      |
50294    /// +---+---------------+
50295    /// | 1 | Xmm, Xmm, Mem |
50296    /// | 2 | Xmm, Xmm, Xmm |
50297    /// | 3 | Ymm, Ymm, Mem |
50298    /// | 4 | Ymm, Ymm, Ymm |
50299    /// | 5 | Zmm, Zmm, Mem |
50300    /// | 6 | Zmm, Zmm, Zmm |
50301    /// +---+---------------+
50302    /// ```
50303    #[inline]
50304    pub fn vfnmsub213ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50305    where
50306        Assembler<'a>: Vfnmsub213phMaskEmitter<A, B, C>,
50307    {
50308        <Self as Vfnmsub213phMaskEmitter<A, B, C>>::vfnmsub213ph_mask(self, op0, op1, op2);
50309    }
50310    /// `VFNMSUB213PH_MASK_ER`.
50311    ///
50312    /// Supported operand variants:
50313    ///
50314    /// ```text
50315    /// +---+---------------+
50316    /// | # | Operands      |
50317    /// +---+---------------+
50318    /// | 1 | Zmm, Zmm, Zmm |
50319    /// +---+---------------+
50320    /// ```
50321    #[inline]
50322    pub fn vfnmsub213ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50323    where
50324        Assembler<'a>: Vfnmsub213phMaskErEmitter<A, B, C>,
50325    {
50326        <Self as Vfnmsub213phMaskErEmitter<A, B, C>>::vfnmsub213ph_mask_er(self, op0, op1, op2);
50327    }
50328    /// `VFNMSUB213PH_MASKZ`.
50329    ///
50330    /// Supported operand variants:
50331    ///
50332    /// ```text
50333    /// +---+---------------+
50334    /// | # | Operands      |
50335    /// +---+---------------+
50336    /// | 1 | Xmm, Xmm, Mem |
50337    /// | 2 | Xmm, Xmm, Xmm |
50338    /// | 3 | Ymm, Ymm, Mem |
50339    /// | 4 | Ymm, Ymm, Ymm |
50340    /// | 5 | Zmm, Zmm, Mem |
50341    /// | 6 | Zmm, Zmm, Zmm |
50342    /// +---+---------------+
50343    /// ```
50344    #[inline]
50345    pub fn vfnmsub213ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50346    where
50347        Assembler<'a>: Vfnmsub213phMaskzEmitter<A, B, C>,
50348    {
50349        <Self as Vfnmsub213phMaskzEmitter<A, B, C>>::vfnmsub213ph_maskz(self, op0, op1, op2);
50350    }
50351    /// `VFNMSUB213PH_MASKZ_ER`.
50352    ///
50353    /// Supported operand variants:
50354    ///
50355    /// ```text
50356    /// +---+---------------+
50357    /// | # | Operands      |
50358    /// +---+---------------+
50359    /// | 1 | Zmm, Zmm, Zmm |
50360    /// +---+---------------+
50361    /// ```
50362    #[inline]
50363    pub fn vfnmsub213ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50364    where
50365        Assembler<'a>: Vfnmsub213phMaskzErEmitter<A, B, C>,
50366    {
50367        <Self as Vfnmsub213phMaskzErEmitter<A, B, C>>::vfnmsub213ph_maskz_er(self, op0, op1, op2);
50368    }
50369    /// `VFNMSUB213SH`.
50370    ///
50371    /// Supported operand variants:
50372    ///
50373    /// ```text
50374    /// +---+---------------+
50375    /// | # | Operands      |
50376    /// +---+---------------+
50377    /// | 1 | Xmm, Xmm, Mem |
50378    /// | 2 | Xmm, Xmm, Xmm |
50379    /// +---+---------------+
50380    /// ```
50381    #[inline]
50382    pub fn vfnmsub213sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50383    where
50384        Assembler<'a>: Vfnmsub213shEmitter<A, B, C>,
50385    {
50386        <Self as Vfnmsub213shEmitter<A, B, C>>::vfnmsub213sh(self, op0, op1, op2);
50387    }
50388    /// `VFNMSUB213SH_ER`.
50389    ///
50390    /// Supported operand variants:
50391    ///
50392    /// ```text
50393    /// +---+---------------+
50394    /// | # | Operands      |
50395    /// +---+---------------+
50396    /// | 1 | Xmm, Xmm, Xmm |
50397    /// +---+---------------+
50398    /// ```
50399    #[inline]
50400    pub fn vfnmsub213sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50401    where
50402        Assembler<'a>: Vfnmsub213shErEmitter<A, B, C>,
50403    {
50404        <Self as Vfnmsub213shErEmitter<A, B, C>>::vfnmsub213sh_er(self, op0, op1, op2);
50405    }
50406    /// `VFNMSUB213SH_MASK`.
50407    ///
50408    /// Supported operand variants:
50409    ///
50410    /// ```text
50411    /// +---+---------------+
50412    /// | # | Operands      |
50413    /// +---+---------------+
50414    /// | 1 | Xmm, Xmm, Mem |
50415    /// | 2 | Xmm, Xmm, Xmm |
50416    /// +---+---------------+
50417    /// ```
50418    #[inline]
50419    pub fn vfnmsub213sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50420    where
50421        Assembler<'a>: Vfnmsub213shMaskEmitter<A, B, C>,
50422    {
50423        <Self as Vfnmsub213shMaskEmitter<A, B, C>>::vfnmsub213sh_mask(self, op0, op1, op2);
50424    }
50425    /// `VFNMSUB213SH_MASK_ER`.
50426    ///
50427    /// Supported operand variants:
50428    ///
50429    /// ```text
50430    /// +---+---------------+
50431    /// | # | Operands      |
50432    /// +---+---------------+
50433    /// | 1 | Xmm, Xmm, Xmm |
50434    /// +---+---------------+
50435    /// ```
50436    #[inline]
50437    pub fn vfnmsub213sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50438    where
50439        Assembler<'a>: Vfnmsub213shMaskErEmitter<A, B, C>,
50440    {
50441        <Self as Vfnmsub213shMaskErEmitter<A, B, C>>::vfnmsub213sh_mask_er(self, op0, op1, op2);
50442    }
50443    /// `VFNMSUB213SH_MASKZ`.
50444    ///
50445    /// Supported operand variants:
50446    ///
50447    /// ```text
50448    /// +---+---------------+
50449    /// | # | Operands      |
50450    /// +---+---------------+
50451    /// | 1 | Xmm, Xmm, Mem |
50452    /// | 2 | Xmm, Xmm, Xmm |
50453    /// +---+---------------+
50454    /// ```
50455    #[inline]
50456    pub fn vfnmsub213sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50457    where
50458        Assembler<'a>: Vfnmsub213shMaskzEmitter<A, B, C>,
50459    {
50460        <Self as Vfnmsub213shMaskzEmitter<A, B, C>>::vfnmsub213sh_maskz(self, op0, op1, op2);
50461    }
50462    /// `VFNMSUB213SH_MASKZ_ER`.
50463    ///
50464    /// Supported operand variants:
50465    ///
50466    /// ```text
50467    /// +---+---------------+
50468    /// | # | Operands      |
50469    /// +---+---------------+
50470    /// | 1 | Xmm, Xmm, Xmm |
50471    /// +---+---------------+
50472    /// ```
50473    #[inline]
50474    pub fn vfnmsub213sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50475    where
50476        Assembler<'a>: Vfnmsub213shMaskzErEmitter<A, B, C>,
50477    {
50478        <Self as Vfnmsub213shMaskzErEmitter<A, B, C>>::vfnmsub213sh_maskz_er(self, op0, op1, op2);
50479    }
50480    /// `VFNMSUB231PH`.
50481    ///
50482    /// Supported operand variants:
50483    ///
50484    /// ```text
50485    /// +---+---------------+
50486    /// | # | Operands      |
50487    /// +---+---------------+
50488    /// | 1 | Xmm, Xmm, Mem |
50489    /// | 2 | Xmm, Xmm, Xmm |
50490    /// | 3 | Ymm, Ymm, Mem |
50491    /// | 4 | Ymm, Ymm, Ymm |
50492    /// | 5 | Zmm, Zmm, Mem |
50493    /// | 6 | Zmm, Zmm, Zmm |
50494    /// +---+---------------+
50495    /// ```
50496    #[inline]
50497    pub fn vfnmsub231ph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50498    where
50499        Assembler<'a>: Vfnmsub231phEmitter<A, B, C>,
50500    {
50501        <Self as Vfnmsub231phEmitter<A, B, C>>::vfnmsub231ph(self, op0, op1, op2);
50502    }
50503    /// `VFNMSUB231PH_ER`.
50504    ///
50505    /// Supported operand variants:
50506    ///
50507    /// ```text
50508    /// +---+---------------+
50509    /// | # | Operands      |
50510    /// +---+---------------+
50511    /// | 1 | Zmm, Zmm, Zmm |
50512    /// +---+---------------+
50513    /// ```
50514    #[inline]
50515    pub fn vfnmsub231ph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50516    where
50517        Assembler<'a>: Vfnmsub231phErEmitter<A, B, C>,
50518    {
50519        <Self as Vfnmsub231phErEmitter<A, B, C>>::vfnmsub231ph_er(self, op0, op1, op2);
50520    }
50521    /// `VFNMSUB231PH_MASK`.
50522    ///
50523    /// Supported operand variants:
50524    ///
50525    /// ```text
50526    /// +---+---------------+
50527    /// | # | Operands      |
50528    /// +---+---------------+
50529    /// | 1 | Xmm, Xmm, Mem |
50530    /// | 2 | Xmm, Xmm, Xmm |
50531    /// | 3 | Ymm, Ymm, Mem |
50532    /// | 4 | Ymm, Ymm, Ymm |
50533    /// | 5 | Zmm, Zmm, Mem |
50534    /// | 6 | Zmm, Zmm, Zmm |
50535    /// +---+---------------+
50536    /// ```
50537    #[inline]
50538    pub fn vfnmsub231ph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50539    where
50540        Assembler<'a>: Vfnmsub231phMaskEmitter<A, B, C>,
50541    {
50542        <Self as Vfnmsub231phMaskEmitter<A, B, C>>::vfnmsub231ph_mask(self, op0, op1, op2);
50543    }
50544    /// `VFNMSUB231PH_MASK_ER`.
50545    ///
50546    /// Supported operand variants:
50547    ///
50548    /// ```text
50549    /// +---+---------------+
50550    /// | # | Operands      |
50551    /// +---+---------------+
50552    /// | 1 | Zmm, Zmm, Zmm |
50553    /// +---+---------------+
50554    /// ```
50555    #[inline]
50556    pub fn vfnmsub231ph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50557    where
50558        Assembler<'a>: Vfnmsub231phMaskErEmitter<A, B, C>,
50559    {
50560        <Self as Vfnmsub231phMaskErEmitter<A, B, C>>::vfnmsub231ph_mask_er(self, op0, op1, op2);
50561    }
50562    /// `VFNMSUB231PH_MASKZ`.
50563    ///
50564    /// Supported operand variants:
50565    ///
50566    /// ```text
50567    /// +---+---------------+
50568    /// | # | Operands      |
50569    /// +---+---------------+
50570    /// | 1 | Xmm, Xmm, Mem |
50571    /// | 2 | Xmm, Xmm, Xmm |
50572    /// | 3 | Ymm, Ymm, Mem |
50573    /// | 4 | Ymm, Ymm, Ymm |
50574    /// | 5 | Zmm, Zmm, Mem |
50575    /// | 6 | Zmm, Zmm, Zmm |
50576    /// +---+---------------+
50577    /// ```
50578    #[inline]
50579    pub fn vfnmsub231ph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50580    where
50581        Assembler<'a>: Vfnmsub231phMaskzEmitter<A, B, C>,
50582    {
50583        <Self as Vfnmsub231phMaskzEmitter<A, B, C>>::vfnmsub231ph_maskz(self, op0, op1, op2);
50584    }
50585    /// `VFNMSUB231PH_MASKZ_ER`.
50586    ///
50587    /// Supported operand variants:
50588    ///
50589    /// ```text
50590    /// +---+---------------+
50591    /// | # | Operands      |
50592    /// +---+---------------+
50593    /// | 1 | Zmm, Zmm, Zmm |
50594    /// +---+---------------+
50595    /// ```
50596    #[inline]
50597    pub fn vfnmsub231ph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50598    where
50599        Assembler<'a>: Vfnmsub231phMaskzErEmitter<A, B, C>,
50600    {
50601        <Self as Vfnmsub231phMaskzErEmitter<A, B, C>>::vfnmsub231ph_maskz_er(self, op0, op1, op2);
50602    }
50603    /// `VFNMSUB231SH`.
50604    ///
50605    /// Supported operand variants:
50606    ///
50607    /// ```text
50608    /// +---+---------------+
50609    /// | # | Operands      |
50610    /// +---+---------------+
50611    /// | 1 | Xmm, Xmm, Mem |
50612    /// | 2 | Xmm, Xmm, Xmm |
50613    /// +---+---------------+
50614    /// ```
50615    #[inline]
50616    pub fn vfnmsub231sh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50617    where
50618        Assembler<'a>: Vfnmsub231shEmitter<A, B, C>,
50619    {
50620        <Self as Vfnmsub231shEmitter<A, B, C>>::vfnmsub231sh(self, op0, op1, op2);
50621    }
50622    /// `VFNMSUB231SH_ER`.
50623    ///
50624    /// Supported operand variants:
50625    ///
50626    /// ```text
50627    /// +---+---------------+
50628    /// | # | Operands      |
50629    /// +---+---------------+
50630    /// | 1 | Xmm, Xmm, Xmm |
50631    /// +---+---------------+
50632    /// ```
50633    #[inline]
50634    pub fn vfnmsub231sh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50635    where
50636        Assembler<'a>: Vfnmsub231shErEmitter<A, B, C>,
50637    {
50638        <Self as Vfnmsub231shErEmitter<A, B, C>>::vfnmsub231sh_er(self, op0, op1, op2);
50639    }
50640    /// `VFNMSUB231SH_MASK`.
50641    ///
50642    /// Supported operand variants:
50643    ///
50644    /// ```text
50645    /// +---+---------------+
50646    /// | # | Operands      |
50647    /// +---+---------------+
50648    /// | 1 | Xmm, Xmm, Mem |
50649    /// | 2 | Xmm, Xmm, Xmm |
50650    /// +---+---------------+
50651    /// ```
50652    #[inline]
50653    pub fn vfnmsub231sh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50654    where
50655        Assembler<'a>: Vfnmsub231shMaskEmitter<A, B, C>,
50656    {
50657        <Self as Vfnmsub231shMaskEmitter<A, B, C>>::vfnmsub231sh_mask(self, op0, op1, op2);
50658    }
50659    /// `VFNMSUB231SH_MASK_ER`.
50660    ///
50661    /// Supported operand variants:
50662    ///
50663    /// ```text
50664    /// +---+---------------+
50665    /// | # | Operands      |
50666    /// +---+---------------+
50667    /// | 1 | Xmm, Xmm, Xmm |
50668    /// +---+---------------+
50669    /// ```
50670    #[inline]
50671    pub fn vfnmsub231sh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50672    where
50673        Assembler<'a>: Vfnmsub231shMaskErEmitter<A, B, C>,
50674    {
50675        <Self as Vfnmsub231shMaskErEmitter<A, B, C>>::vfnmsub231sh_mask_er(self, op0, op1, op2);
50676    }
50677    /// `VFNMSUB231SH_MASKZ`.
50678    ///
50679    /// Supported operand variants:
50680    ///
50681    /// ```text
50682    /// +---+---------------+
50683    /// | # | Operands      |
50684    /// +---+---------------+
50685    /// | 1 | Xmm, Xmm, Mem |
50686    /// | 2 | Xmm, Xmm, Xmm |
50687    /// +---+---------------+
50688    /// ```
50689    #[inline]
50690    pub fn vfnmsub231sh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50691    where
50692        Assembler<'a>: Vfnmsub231shMaskzEmitter<A, B, C>,
50693    {
50694        <Self as Vfnmsub231shMaskzEmitter<A, B, C>>::vfnmsub231sh_maskz(self, op0, op1, op2);
50695    }
50696    /// `VFNMSUB231SH_MASKZ_ER`.
50697    ///
50698    /// Supported operand variants:
50699    ///
50700    /// ```text
50701    /// +---+---------------+
50702    /// | # | Operands      |
50703    /// +---+---------------+
50704    /// | 1 | Xmm, Xmm, Xmm |
50705    /// +---+---------------+
50706    /// ```
50707    #[inline]
50708    pub fn vfnmsub231sh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50709    where
50710        Assembler<'a>: Vfnmsub231shMaskzErEmitter<A, B, C>,
50711    {
50712        <Self as Vfnmsub231shMaskzErEmitter<A, B, C>>::vfnmsub231sh_maskz_er(self, op0, op1, op2);
50713    }
50714    /// `VFPCLASSPH`.
50715    ///
50716    /// Supported operand variants:
50717    ///
50718    /// ```text
50719    /// +---+----------------+
50720    /// | # | Operands       |
50721    /// +---+----------------+
50722    /// | 1 | KReg, Mem, Imm |
50723    /// | 2 | KReg, Xmm, Imm |
50724    /// | 3 | KReg, Ymm, Imm |
50725    /// | 4 | KReg, Zmm, Imm |
50726    /// +---+----------------+
50727    /// ```
50728    #[inline]
50729    pub fn vfpclassph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50730    where
50731        Assembler<'a>: VfpclassphEmitter<A, B, C>,
50732    {
50733        <Self as VfpclassphEmitter<A, B, C>>::vfpclassph(self, op0, op1, op2);
50734    }
50735    /// `VFPCLASSPH_MASK`.
50736    ///
50737    /// Supported operand variants:
50738    ///
50739    /// ```text
50740    /// +---+----------------+
50741    /// | # | Operands       |
50742    /// +---+----------------+
50743    /// | 1 | KReg, Mem, Imm |
50744    /// | 2 | KReg, Xmm, Imm |
50745    /// | 3 | KReg, Ymm, Imm |
50746    /// | 4 | KReg, Zmm, Imm |
50747    /// +---+----------------+
50748    /// ```
50749    #[inline]
50750    pub fn vfpclassph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50751    where
50752        Assembler<'a>: VfpclassphMaskEmitter<A, B, C>,
50753    {
50754        <Self as VfpclassphMaskEmitter<A, B, C>>::vfpclassph_mask(self, op0, op1, op2);
50755    }
50756    /// `VFPCLASSSH`.
50757    ///
50758    /// Supported operand variants:
50759    ///
50760    /// ```text
50761    /// +---+----------------+
50762    /// | # | Operands       |
50763    /// +---+----------------+
50764    /// | 1 | KReg, Mem, Imm |
50765    /// | 2 | KReg, Xmm, Imm |
50766    /// +---+----------------+
50767    /// ```
50768    #[inline]
50769    pub fn vfpclasssh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50770    where
50771        Assembler<'a>: VfpclassshEmitter<A, B, C>,
50772    {
50773        <Self as VfpclassshEmitter<A, B, C>>::vfpclasssh(self, op0, op1, op2);
50774    }
50775    /// `VFPCLASSSH_MASK`.
50776    ///
50777    /// Supported operand variants:
50778    ///
50779    /// ```text
50780    /// +---+----------------+
50781    /// | # | Operands       |
50782    /// +---+----------------+
50783    /// | 1 | KReg, Mem, Imm |
50784    /// | 2 | KReg, Xmm, Imm |
50785    /// +---+----------------+
50786    /// ```
50787    #[inline]
50788    pub fn vfpclasssh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50789    where
50790        Assembler<'a>: VfpclassshMaskEmitter<A, B, C>,
50791    {
50792        <Self as VfpclassshMaskEmitter<A, B, C>>::vfpclasssh_mask(self, op0, op1, op2);
50793    }
50794    /// `VGETEXPPH`.
50795    ///
50796    /// Supported operand variants:
50797    ///
50798    /// ```text
50799    /// +---+----------+
50800    /// | # | Operands |
50801    /// +---+----------+
50802    /// | 1 | Xmm, Mem |
50803    /// | 2 | Xmm, Xmm |
50804    /// | 3 | Ymm, Mem |
50805    /// | 4 | Ymm, Ymm |
50806    /// | 5 | Zmm, Mem |
50807    /// | 6 | Zmm, Zmm |
50808    /// +---+----------+
50809    /// ```
50810    #[inline]
50811    pub fn vgetexpph<A, B>(&mut self, op0: A, op1: B)
50812    where
50813        Assembler<'a>: VgetexpphEmitter<A, B>,
50814    {
50815        <Self as VgetexpphEmitter<A, B>>::vgetexpph(self, op0, op1);
50816    }
50817    /// `VGETEXPPH_MASK`.
50818    ///
50819    /// Supported operand variants:
50820    ///
50821    /// ```text
50822    /// +---+----------+
50823    /// | # | Operands |
50824    /// +---+----------+
50825    /// | 1 | Xmm, Mem |
50826    /// | 2 | Xmm, Xmm |
50827    /// | 3 | Ymm, Mem |
50828    /// | 4 | Ymm, Ymm |
50829    /// | 5 | Zmm, Mem |
50830    /// | 6 | Zmm, Zmm |
50831    /// +---+----------+
50832    /// ```
50833    #[inline]
50834    pub fn vgetexpph_mask<A, B>(&mut self, op0: A, op1: B)
50835    where
50836        Assembler<'a>: VgetexpphMaskEmitter<A, B>,
50837    {
50838        <Self as VgetexpphMaskEmitter<A, B>>::vgetexpph_mask(self, op0, op1);
50839    }
50840    /// `VGETEXPPH_MASK_SAE`.
50841    ///
50842    /// Supported operand variants:
50843    ///
50844    /// ```text
50845    /// +---+----------+
50846    /// | # | Operands |
50847    /// +---+----------+
50848    /// | 1 | Zmm, Zmm |
50849    /// +---+----------+
50850    /// ```
50851    #[inline]
50852    pub fn vgetexpph_mask_sae<A, B>(&mut self, op0: A, op1: B)
50853    where
50854        Assembler<'a>: VgetexpphMaskSaeEmitter<A, B>,
50855    {
50856        <Self as VgetexpphMaskSaeEmitter<A, B>>::vgetexpph_mask_sae(self, op0, op1);
50857    }
50858    /// `VGETEXPPH_MASKZ`.
50859    ///
50860    /// Supported operand variants:
50861    ///
50862    /// ```text
50863    /// +---+----------+
50864    /// | # | Operands |
50865    /// +---+----------+
50866    /// | 1 | Xmm, Mem |
50867    /// | 2 | Xmm, Xmm |
50868    /// | 3 | Ymm, Mem |
50869    /// | 4 | Ymm, Ymm |
50870    /// | 5 | Zmm, Mem |
50871    /// | 6 | Zmm, Zmm |
50872    /// +---+----------+
50873    /// ```
50874    #[inline]
50875    pub fn vgetexpph_maskz<A, B>(&mut self, op0: A, op1: B)
50876    where
50877        Assembler<'a>: VgetexpphMaskzEmitter<A, B>,
50878    {
50879        <Self as VgetexpphMaskzEmitter<A, B>>::vgetexpph_maskz(self, op0, op1);
50880    }
50881    /// `VGETEXPPH_MASKZ_SAE`.
50882    ///
50883    /// Supported operand variants:
50884    ///
50885    /// ```text
50886    /// +---+----------+
50887    /// | # | Operands |
50888    /// +---+----------+
50889    /// | 1 | Zmm, Zmm |
50890    /// +---+----------+
50891    /// ```
50892    #[inline]
50893    pub fn vgetexpph_maskz_sae<A, B>(&mut self, op0: A, op1: B)
50894    where
50895        Assembler<'a>: VgetexpphMaskzSaeEmitter<A, B>,
50896    {
50897        <Self as VgetexpphMaskzSaeEmitter<A, B>>::vgetexpph_maskz_sae(self, op0, op1);
50898    }
50899    /// `VGETEXPPH_SAE`.
50900    ///
50901    /// Supported operand variants:
50902    ///
50903    /// ```text
50904    /// +---+----------+
50905    /// | # | Operands |
50906    /// +---+----------+
50907    /// | 1 | Zmm, Zmm |
50908    /// +---+----------+
50909    /// ```
50910    #[inline]
50911    pub fn vgetexpph_sae<A, B>(&mut self, op0: A, op1: B)
50912    where
50913        Assembler<'a>: VgetexpphSaeEmitter<A, B>,
50914    {
50915        <Self as VgetexpphSaeEmitter<A, B>>::vgetexpph_sae(self, op0, op1);
50916    }
50917    /// `VGETEXPSH`.
50918    ///
50919    /// Supported operand variants:
50920    ///
50921    /// ```text
50922    /// +---+---------------+
50923    /// | # | Operands      |
50924    /// +---+---------------+
50925    /// | 1 | Xmm, Xmm, Mem |
50926    /// | 2 | Xmm, Xmm, Xmm |
50927    /// +---+---------------+
50928    /// ```
50929    #[inline]
50930    pub fn vgetexpsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50931    where
50932        Assembler<'a>: VgetexpshEmitter<A, B, C>,
50933    {
50934        <Self as VgetexpshEmitter<A, B, C>>::vgetexpsh(self, op0, op1, op2);
50935    }
50936    /// `VGETEXPSH_MASK`.
50937    ///
50938    /// Supported operand variants:
50939    ///
50940    /// ```text
50941    /// +---+---------------+
50942    /// | # | Operands      |
50943    /// +---+---------------+
50944    /// | 1 | Xmm, Xmm, Mem |
50945    /// | 2 | Xmm, Xmm, Xmm |
50946    /// +---+---------------+
50947    /// ```
50948    #[inline]
50949    pub fn vgetexpsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50950    where
50951        Assembler<'a>: VgetexpshMaskEmitter<A, B, C>,
50952    {
50953        <Self as VgetexpshMaskEmitter<A, B, C>>::vgetexpsh_mask(self, op0, op1, op2);
50954    }
50955    /// `VGETEXPSH_MASK_SAE`.
50956    ///
50957    /// Supported operand variants:
50958    ///
50959    /// ```text
50960    /// +---+---------------+
50961    /// | # | Operands      |
50962    /// +---+---------------+
50963    /// | 1 | Xmm, Xmm, Xmm |
50964    /// +---+---------------+
50965    /// ```
50966    #[inline]
50967    pub fn vgetexpsh_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50968    where
50969        Assembler<'a>: VgetexpshMaskSaeEmitter<A, B, C>,
50970    {
50971        <Self as VgetexpshMaskSaeEmitter<A, B, C>>::vgetexpsh_mask_sae(self, op0, op1, op2);
50972    }
50973    /// `VGETEXPSH_MASKZ`.
50974    ///
50975    /// Supported operand variants:
50976    ///
50977    /// ```text
50978    /// +---+---------------+
50979    /// | # | Operands      |
50980    /// +---+---------------+
50981    /// | 1 | Xmm, Xmm, Mem |
50982    /// | 2 | Xmm, Xmm, Xmm |
50983    /// +---+---------------+
50984    /// ```
50985    #[inline]
50986    pub fn vgetexpsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
50987    where
50988        Assembler<'a>: VgetexpshMaskzEmitter<A, B, C>,
50989    {
50990        <Self as VgetexpshMaskzEmitter<A, B, C>>::vgetexpsh_maskz(self, op0, op1, op2);
50991    }
50992    /// `VGETEXPSH_MASKZ_SAE`.
50993    ///
50994    /// Supported operand variants:
50995    ///
50996    /// ```text
50997    /// +---+---------------+
50998    /// | # | Operands      |
50999    /// +---+---------------+
51000    /// | 1 | Xmm, Xmm, Xmm |
51001    /// +---+---------------+
51002    /// ```
51003    #[inline]
51004    pub fn vgetexpsh_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51005    where
51006        Assembler<'a>: VgetexpshMaskzSaeEmitter<A, B, C>,
51007    {
51008        <Self as VgetexpshMaskzSaeEmitter<A, B, C>>::vgetexpsh_maskz_sae(self, op0, op1, op2);
51009    }
51010    /// `VGETEXPSH_SAE`.
51011    ///
51012    /// Supported operand variants:
51013    ///
51014    /// ```text
51015    /// +---+---------------+
51016    /// | # | Operands      |
51017    /// +---+---------------+
51018    /// | 1 | Xmm, Xmm, Xmm |
51019    /// +---+---------------+
51020    /// ```
51021    #[inline]
51022    pub fn vgetexpsh_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51023    where
51024        Assembler<'a>: VgetexpshSaeEmitter<A, B, C>,
51025    {
51026        <Self as VgetexpshSaeEmitter<A, B, C>>::vgetexpsh_sae(self, op0, op1, op2);
51027    }
51028    /// `VGETMANTPH`.
51029    ///
51030    /// Supported operand variants:
51031    ///
51032    /// ```text
51033    /// +---+---------------+
51034    /// | # | Operands      |
51035    /// +---+---------------+
51036    /// | 1 | Xmm, Mem, Imm |
51037    /// | 2 | Xmm, Xmm, Imm |
51038    /// | 3 | Ymm, Mem, Imm |
51039    /// | 4 | Ymm, Ymm, Imm |
51040    /// | 5 | Zmm, Mem, Imm |
51041    /// | 6 | Zmm, Zmm, Imm |
51042    /// +---+---------------+
51043    /// ```
51044    #[inline]
51045    pub fn vgetmantph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51046    where
51047        Assembler<'a>: VgetmantphEmitter<A, B, C>,
51048    {
51049        <Self as VgetmantphEmitter<A, B, C>>::vgetmantph(self, op0, op1, op2);
51050    }
51051    /// `VGETMANTPH_MASK`.
51052    ///
51053    /// Supported operand variants:
51054    ///
51055    /// ```text
51056    /// +---+---------------+
51057    /// | # | Operands      |
51058    /// +---+---------------+
51059    /// | 1 | Xmm, Mem, Imm |
51060    /// | 2 | Xmm, Xmm, Imm |
51061    /// | 3 | Ymm, Mem, Imm |
51062    /// | 4 | Ymm, Ymm, Imm |
51063    /// | 5 | Zmm, Mem, Imm |
51064    /// | 6 | Zmm, Zmm, Imm |
51065    /// +---+---------------+
51066    /// ```
51067    #[inline]
51068    pub fn vgetmantph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51069    where
51070        Assembler<'a>: VgetmantphMaskEmitter<A, B, C>,
51071    {
51072        <Self as VgetmantphMaskEmitter<A, B, C>>::vgetmantph_mask(self, op0, op1, op2);
51073    }
51074    /// `VGETMANTPH_MASK_SAE`.
51075    ///
51076    /// Supported operand variants:
51077    ///
51078    /// ```text
51079    /// +---+---------------+
51080    /// | # | Operands      |
51081    /// +---+---------------+
51082    /// | 1 | Zmm, Zmm, Imm |
51083    /// +---+---------------+
51084    /// ```
51085    #[inline]
51086    pub fn vgetmantph_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51087    where
51088        Assembler<'a>: VgetmantphMaskSaeEmitter<A, B, C>,
51089    {
51090        <Self as VgetmantphMaskSaeEmitter<A, B, C>>::vgetmantph_mask_sae(self, op0, op1, op2);
51091    }
51092    /// `VGETMANTPH_MASKZ`.
51093    ///
51094    /// Supported operand variants:
51095    ///
51096    /// ```text
51097    /// +---+---------------+
51098    /// | # | Operands      |
51099    /// +---+---------------+
51100    /// | 1 | Xmm, Mem, Imm |
51101    /// | 2 | Xmm, Xmm, Imm |
51102    /// | 3 | Ymm, Mem, Imm |
51103    /// | 4 | Ymm, Ymm, Imm |
51104    /// | 5 | Zmm, Mem, Imm |
51105    /// | 6 | Zmm, Zmm, Imm |
51106    /// +---+---------------+
51107    /// ```
51108    #[inline]
51109    pub fn vgetmantph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51110    where
51111        Assembler<'a>: VgetmantphMaskzEmitter<A, B, C>,
51112    {
51113        <Self as VgetmantphMaskzEmitter<A, B, C>>::vgetmantph_maskz(self, op0, op1, op2);
51114    }
51115    /// `VGETMANTPH_MASKZ_SAE`.
51116    ///
51117    /// Supported operand variants:
51118    ///
51119    /// ```text
51120    /// +---+---------------+
51121    /// | # | Operands      |
51122    /// +---+---------------+
51123    /// | 1 | Zmm, Zmm, Imm |
51124    /// +---+---------------+
51125    /// ```
51126    #[inline]
51127    pub fn vgetmantph_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51128    where
51129        Assembler<'a>: VgetmantphMaskzSaeEmitter<A, B, C>,
51130    {
51131        <Self as VgetmantphMaskzSaeEmitter<A, B, C>>::vgetmantph_maskz_sae(self, op0, op1, op2);
51132    }
51133    /// `VGETMANTPH_SAE`.
51134    ///
51135    /// Supported operand variants:
51136    ///
51137    /// ```text
51138    /// +---+---------------+
51139    /// | # | Operands      |
51140    /// +---+---------------+
51141    /// | 1 | Zmm, Zmm, Imm |
51142    /// +---+---------------+
51143    /// ```
51144    #[inline]
51145    pub fn vgetmantph_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51146    where
51147        Assembler<'a>: VgetmantphSaeEmitter<A, B, C>,
51148    {
51149        <Self as VgetmantphSaeEmitter<A, B, C>>::vgetmantph_sae(self, op0, op1, op2);
51150    }
51151    /// `VGETMANTSH`.
51152    ///
51153    /// Supported operand variants:
51154    ///
51155    /// ```text
51156    /// +---+--------------------+
51157    /// | # | Operands           |
51158    /// +---+--------------------+
51159    /// | 1 | Xmm, Xmm, Mem, Imm |
51160    /// | 2 | Xmm, Xmm, Xmm, Imm |
51161    /// +---+--------------------+
51162    /// ```
51163    #[inline]
51164    pub fn vgetmantsh<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51165    where
51166        Assembler<'a>: VgetmantshEmitter<A, B, C, D>,
51167    {
51168        <Self as VgetmantshEmitter<A, B, C, D>>::vgetmantsh(self, op0, op1, op2, op3);
51169    }
51170    /// `VGETMANTSH_MASK`.
51171    ///
51172    /// Supported operand variants:
51173    ///
51174    /// ```text
51175    /// +---+--------------------+
51176    /// | # | Operands           |
51177    /// +---+--------------------+
51178    /// | 1 | Xmm, Xmm, Mem, Imm |
51179    /// | 2 | Xmm, Xmm, Xmm, Imm |
51180    /// +---+--------------------+
51181    /// ```
51182    #[inline]
51183    pub fn vgetmantsh_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51184    where
51185        Assembler<'a>: VgetmantshMaskEmitter<A, B, C, D>,
51186    {
51187        <Self as VgetmantshMaskEmitter<A, B, C, D>>::vgetmantsh_mask(self, op0, op1, op2, op3);
51188    }
51189    /// `VGETMANTSH_MASK_SAE`.
51190    ///
51191    /// Supported operand variants:
51192    ///
51193    /// ```text
51194    /// +---+--------------------+
51195    /// | # | Operands           |
51196    /// +---+--------------------+
51197    /// | 1 | Xmm, Xmm, Xmm, Imm |
51198    /// +---+--------------------+
51199    /// ```
51200    #[inline]
51201    pub fn vgetmantsh_mask_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51202    where
51203        Assembler<'a>: VgetmantshMaskSaeEmitter<A, B, C, D>,
51204    {
51205        <Self as VgetmantshMaskSaeEmitter<A, B, C, D>>::vgetmantsh_mask_sae(
51206            self, op0, op1, op2, op3,
51207        );
51208    }
51209    /// `VGETMANTSH_MASKZ`.
51210    ///
51211    /// Supported operand variants:
51212    ///
51213    /// ```text
51214    /// +---+--------------------+
51215    /// | # | Operands           |
51216    /// +---+--------------------+
51217    /// | 1 | Xmm, Xmm, Mem, Imm |
51218    /// | 2 | Xmm, Xmm, Xmm, Imm |
51219    /// +---+--------------------+
51220    /// ```
51221    #[inline]
51222    pub fn vgetmantsh_maskz<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51223    where
51224        Assembler<'a>: VgetmantshMaskzEmitter<A, B, C, D>,
51225    {
51226        <Self as VgetmantshMaskzEmitter<A, B, C, D>>::vgetmantsh_maskz(self, op0, op1, op2, op3);
51227    }
51228    /// `VGETMANTSH_MASKZ_SAE`.
51229    ///
51230    /// Supported operand variants:
51231    ///
51232    /// ```text
51233    /// +---+--------------------+
51234    /// | # | Operands           |
51235    /// +---+--------------------+
51236    /// | 1 | Xmm, Xmm, Xmm, Imm |
51237    /// +---+--------------------+
51238    /// ```
51239    #[inline]
51240    pub fn vgetmantsh_maskz_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51241    where
51242        Assembler<'a>: VgetmantshMaskzSaeEmitter<A, B, C, D>,
51243    {
51244        <Self as VgetmantshMaskzSaeEmitter<A, B, C, D>>::vgetmantsh_maskz_sae(
51245            self, op0, op1, op2, op3,
51246        );
51247    }
51248    /// `VGETMANTSH_SAE`.
51249    ///
51250    /// Supported operand variants:
51251    ///
51252    /// ```text
51253    /// +---+--------------------+
51254    /// | # | Operands           |
51255    /// +---+--------------------+
51256    /// | 1 | Xmm, Xmm, Xmm, Imm |
51257    /// +---+--------------------+
51258    /// ```
51259    #[inline]
51260    pub fn vgetmantsh_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51261    where
51262        Assembler<'a>: VgetmantshSaeEmitter<A, B, C, D>,
51263    {
51264        <Self as VgetmantshSaeEmitter<A, B, C, D>>::vgetmantsh_sae(self, op0, op1, op2, op3);
51265    }
51266    /// `VGF2P8AFFINEINVQB`.
51267    ///
51268    /// Supported operand variants:
51269    ///
51270    /// ```text
51271    /// +---+--------------------+
51272    /// | # | Operands           |
51273    /// +---+--------------------+
51274    /// | 1 | Xmm, Xmm, Mem, Imm |
51275    /// | 2 | Xmm, Xmm, Xmm, Imm |
51276    /// | 3 | Ymm, Ymm, Mem, Imm |
51277    /// | 4 | Ymm, Ymm, Ymm, Imm |
51278    /// | 5 | Zmm, Zmm, Mem, Imm |
51279    /// | 6 | Zmm, Zmm, Zmm, Imm |
51280    /// +---+--------------------+
51281    /// ```
51282    #[inline]
51283    pub fn vgf2p8affineinvqb<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51284    where
51285        Assembler<'a>: Vgf2p8affineinvqbEmitter<A, B, C, D>,
51286    {
51287        <Self as Vgf2p8affineinvqbEmitter<A, B, C, D>>::vgf2p8affineinvqb(self, op0, op1, op2, op3);
51288    }
51289    /// `VGF2P8AFFINEINVQB_MASK`.
51290    ///
51291    /// Supported operand variants:
51292    ///
51293    /// ```text
51294    /// +---+--------------------+
51295    /// | # | Operands           |
51296    /// +---+--------------------+
51297    /// | 1 | Xmm, Xmm, Mem, Imm |
51298    /// | 2 | Xmm, Xmm, Xmm, Imm |
51299    /// | 3 | Ymm, Ymm, Mem, Imm |
51300    /// | 4 | Ymm, Ymm, Ymm, Imm |
51301    /// | 5 | Zmm, Zmm, Mem, Imm |
51302    /// | 6 | Zmm, Zmm, Zmm, Imm |
51303    /// +---+--------------------+
51304    /// ```
51305    #[inline]
51306    pub fn vgf2p8affineinvqb_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51307    where
51308        Assembler<'a>: Vgf2p8affineinvqbMaskEmitter<A, B, C, D>,
51309    {
51310        <Self as Vgf2p8affineinvqbMaskEmitter<A, B, C, D>>::vgf2p8affineinvqb_mask(
51311            self, op0, op1, op2, op3,
51312        );
51313    }
51314    /// `VGF2P8AFFINEINVQB_MASKZ`.
51315    ///
51316    /// Supported operand variants:
51317    ///
51318    /// ```text
51319    /// +---+--------------------+
51320    /// | # | Operands           |
51321    /// +---+--------------------+
51322    /// | 1 | Xmm, Xmm, Mem, Imm |
51323    /// | 2 | Xmm, Xmm, Xmm, Imm |
51324    /// | 3 | Ymm, Ymm, Mem, Imm |
51325    /// | 4 | Ymm, Ymm, Ymm, Imm |
51326    /// | 5 | Zmm, Zmm, Mem, Imm |
51327    /// | 6 | Zmm, Zmm, Zmm, Imm |
51328    /// +---+--------------------+
51329    /// ```
51330    #[inline]
51331    pub fn vgf2p8affineinvqb_maskz<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51332    where
51333        Assembler<'a>: Vgf2p8affineinvqbMaskzEmitter<A, B, C, D>,
51334    {
51335        <Self as Vgf2p8affineinvqbMaskzEmitter<A, B, C, D>>::vgf2p8affineinvqb_maskz(
51336            self, op0, op1, op2, op3,
51337        );
51338    }
51339    /// `VGF2P8AFFINEQB`.
51340    ///
51341    /// Supported operand variants:
51342    ///
51343    /// ```text
51344    /// +---+--------------------+
51345    /// | # | Operands           |
51346    /// +---+--------------------+
51347    /// | 1 | Xmm, Xmm, Mem, Imm |
51348    /// | 2 | Xmm, Xmm, Xmm, Imm |
51349    /// | 3 | Ymm, Ymm, Mem, Imm |
51350    /// | 4 | Ymm, Ymm, Ymm, Imm |
51351    /// | 5 | Zmm, Zmm, Mem, Imm |
51352    /// | 6 | Zmm, Zmm, Zmm, Imm |
51353    /// +---+--------------------+
51354    /// ```
51355    #[inline]
51356    pub fn vgf2p8affineqb<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51357    where
51358        Assembler<'a>: Vgf2p8affineqbEmitter<A, B, C, D>,
51359    {
51360        <Self as Vgf2p8affineqbEmitter<A, B, C, D>>::vgf2p8affineqb(self, op0, op1, op2, op3);
51361    }
51362    /// `VGF2P8AFFINEQB_MASK`.
51363    ///
51364    /// Supported operand variants:
51365    ///
51366    /// ```text
51367    /// +---+--------------------+
51368    /// | # | Operands           |
51369    /// +---+--------------------+
51370    /// | 1 | Xmm, Xmm, Mem, Imm |
51371    /// | 2 | Xmm, Xmm, Xmm, Imm |
51372    /// | 3 | Ymm, Ymm, Mem, Imm |
51373    /// | 4 | Ymm, Ymm, Ymm, Imm |
51374    /// | 5 | Zmm, Zmm, Mem, Imm |
51375    /// | 6 | Zmm, Zmm, Zmm, Imm |
51376    /// +---+--------------------+
51377    /// ```
51378    #[inline]
51379    pub fn vgf2p8affineqb_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51380    where
51381        Assembler<'a>: Vgf2p8affineqbMaskEmitter<A, B, C, D>,
51382    {
51383        <Self as Vgf2p8affineqbMaskEmitter<A, B, C, D>>::vgf2p8affineqb_mask(
51384            self, op0, op1, op2, op3,
51385        );
51386    }
51387    /// `VGF2P8AFFINEQB_MASKZ`.
51388    ///
51389    /// Supported operand variants:
51390    ///
51391    /// ```text
51392    /// +---+--------------------+
51393    /// | # | Operands           |
51394    /// +---+--------------------+
51395    /// | 1 | Xmm, Xmm, Mem, Imm |
51396    /// | 2 | Xmm, Xmm, Xmm, Imm |
51397    /// | 3 | Ymm, Ymm, Mem, Imm |
51398    /// | 4 | Ymm, Ymm, Ymm, Imm |
51399    /// | 5 | Zmm, Zmm, Mem, Imm |
51400    /// | 6 | Zmm, Zmm, Zmm, Imm |
51401    /// +---+--------------------+
51402    /// ```
51403    #[inline]
51404    pub fn vgf2p8affineqb_maskz<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
51405    where
51406        Assembler<'a>: Vgf2p8affineqbMaskzEmitter<A, B, C, D>,
51407    {
51408        <Self as Vgf2p8affineqbMaskzEmitter<A, B, C, D>>::vgf2p8affineqb_maskz(
51409            self, op0, op1, op2, op3,
51410        );
51411    }
51412    /// `VGF2P8MULB`.
51413    ///
51414    /// Supported operand variants:
51415    ///
51416    /// ```text
51417    /// +---+---------------+
51418    /// | # | Operands      |
51419    /// +---+---------------+
51420    /// | 1 | Xmm, Xmm, Mem |
51421    /// | 2 | Xmm, Xmm, Xmm |
51422    /// | 3 | Ymm, Ymm, Mem |
51423    /// | 4 | Ymm, Ymm, Ymm |
51424    /// | 5 | Zmm, Zmm, Mem |
51425    /// | 6 | Zmm, Zmm, Zmm |
51426    /// +---+---------------+
51427    /// ```
51428    #[inline]
51429    pub fn vgf2p8mulb<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51430    where
51431        Assembler<'a>: Vgf2p8mulbEmitter<A, B, C>,
51432    {
51433        <Self as Vgf2p8mulbEmitter<A, B, C>>::vgf2p8mulb(self, op0, op1, op2);
51434    }
51435    /// `VGF2P8MULB_MASK`.
51436    ///
51437    /// Supported operand variants:
51438    ///
51439    /// ```text
51440    /// +---+---------------+
51441    /// | # | Operands      |
51442    /// +---+---------------+
51443    /// | 1 | Xmm, Xmm, Mem |
51444    /// | 2 | Xmm, Xmm, Xmm |
51445    /// | 3 | Ymm, Ymm, Mem |
51446    /// | 4 | Ymm, Ymm, Ymm |
51447    /// | 5 | Zmm, Zmm, Mem |
51448    /// | 6 | Zmm, Zmm, Zmm |
51449    /// +---+---------------+
51450    /// ```
51451    #[inline]
51452    pub fn vgf2p8mulb_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51453    where
51454        Assembler<'a>: Vgf2p8mulbMaskEmitter<A, B, C>,
51455    {
51456        <Self as Vgf2p8mulbMaskEmitter<A, B, C>>::vgf2p8mulb_mask(self, op0, op1, op2);
51457    }
51458    /// `VGF2P8MULB_MASKZ`.
51459    ///
51460    /// Supported operand variants:
51461    ///
51462    /// ```text
51463    /// +---+---------------+
51464    /// | # | Operands      |
51465    /// +---+---------------+
51466    /// | 1 | Xmm, Xmm, Mem |
51467    /// | 2 | Xmm, Xmm, Xmm |
51468    /// | 3 | Ymm, Ymm, Mem |
51469    /// | 4 | Ymm, Ymm, Ymm |
51470    /// | 5 | Zmm, Zmm, Mem |
51471    /// | 6 | Zmm, Zmm, Zmm |
51472    /// +---+---------------+
51473    /// ```
51474    #[inline]
51475    pub fn vgf2p8mulb_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51476    where
51477        Assembler<'a>: Vgf2p8mulbMaskzEmitter<A, B, C>,
51478    {
51479        <Self as Vgf2p8mulbMaskzEmitter<A, B, C>>::vgf2p8mulb_maskz(self, op0, op1, op2);
51480    }
51481    /// `VMAXPH`.
51482    ///
51483    /// Supported operand variants:
51484    ///
51485    /// ```text
51486    /// +---+---------------+
51487    /// | # | Operands      |
51488    /// +---+---------------+
51489    /// | 1 | Xmm, Xmm, Mem |
51490    /// | 2 | Xmm, Xmm, Xmm |
51491    /// | 3 | Ymm, Ymm, Mem |
51492    /// | 4 | Ymm, Ymm, Ymm |
51493    /// | 5 | Zmm, Zmm, Mem |
51494    /// | 6 | Zmm, Zmm, Zmm |
51495    /// +---+---------------+
51496    /// ```
51497    #[inline]
51498    pub fn vmaxph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51499    where
51500        Assembler<'a>: VmaxphEmitter<A, B, C>,
51501    {
51502        <Self as VmaxphEmitter<A, B, C>>::vmaxph(self, op0, op1, op2);
51503    }
51504    /// `VMAXPH_MASK`.
51505    ///
51506    /// Supported operand variants:
51507    ///
51508    /// ```text
51509    /// +---+---------------+
51510    /// | # | Operands      |
51511    /// +---+---------------+
51512    /// | 1 | Xmm, Xmm, Mem |
51513    /// | 2 | Xmm, Xmm, Xmm |
51514    /// | 3 | Ymm, Ymm, Mem |
51515    /// | 4 | Ymm, Ymm, Ymm |
51516    /// | 5 | Zmm, Zmm, Mem |
51517    /// | 6 | Zmm, Zmm, Zmm |
51518    /// +---+---------------+
51519    /// ```
51520    #[inline]
51521    pub fn vmaxph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51522    where
51523        Assembler<'a>: VmaxphMaskEmitter<A, B, C>,
51524    {
51525        <Self as VmaxphMaskEmitter<A, B, C>>::vmaxph_mask(self, op0, op1, op2);
51526    }
51527    /// `VMAXPH_MASK_SAE`.
51528    ///
51529    /// Supported operand variants:
51530    ///
51531    /// ```text
51532    /// +---+---------------+
51533    /// | # | Operands      |
51534    /// +---+---------------+
51535    /// | 1 | Zmm, Zmm, Zmm |
51536    /// +---+---------------+
51537    /// ```
51538    #[inline]
51539    pub fn vmaxph_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51540    where
51541        Assembler<'a>: VmaxphMaskSaeEmitter<A, B, C>,
51542    {
51543        <Self as VmaxphMaskSaeEmitter<A, B, C>>::vmaxph_mask_sae(self, op0, op1, op2);
51544    }
51545    /// `VMAXPH_MASKZ`.
51546    ///
51547    /// Supported operand variants:
51548    ///
51549    /// ```text
51550    /// +---+---------------+
51551    /// | # | Operands      |
51552    /// +---+---------------+
51553    /// | 1 | Xmm, Xmm, Mem |
51554    /// | 2 | Xmm, Xmm, Xmm |
51555    /// | 3 | Ymm, Ymm, Mem |
51556    /// | 4 | Ymm, Ymm, Ymm |
51557    /// | 5 | Zmm, Zmm, Mem |
51558    /// | 6 | Zmm, Zmm, Zmm |
51559    /// +---+---------------+
51560    /// ```
51561    #[inline]
51562    pub fn vmaxph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51563    where
51564        Assembler<'a>: VmaxphMaskzEmitter<A, B, C>,
51565    {
51566        <Self as VmaxphMaskzEmitter<A, B, C>>::vmaxph_maskz(self, op0, op1, op2);
51567    }
51568    /// `VMAXPH_MASKZ_SAE`.
51569    ///
51570    /// Supported operand variants:
51571    ///
51572    /// ```text
51573    /// +---+---------------+
51574    /// | # | Operands      |
51575    /// +---+---------------+
51576    /// | 1 | Zmm, Zmm, Zmm |
51577    /// +---+---------------+
51578    /// ```
51579    #[inline]
51580    pub fn vmaxph_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51581    where
51582        Assembler<'a>: VmaxphMaskzSaeEmitter<A, B, C>,
51583    {
51584        <Self as VmaxphMaskzSaeEmitter<A, B, C>>::vmaxph_maskz_sae(self, op0, op1, op2);
51585    }
51586    /// `VMAXPH_SAE`.
51587    ///
51588    /// Supported operand variants:
51589    ///
51590    /// ```text
51591    /// +---+---------------+
51592    /// | # | Operands      |
51593    /// +---+---------------+
51594    /// | 1 | Zmm, Zmm, Zmm |
51595    /// +---+---------------+
51596    /// ```
51597    #[inline]
51598    pub fn vmaxph_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51599    where
51600        Assembler<'a>: VmaxphSaeEmitter<A, B, C>,
51601    {
51602        <Self as VmaxphSaeEmitter<A, B, C>>::vmaxph_sae(self, op0, op1, op2);
51603    }
51604    /// `VMAXSH`.
51605    ///
51606    /// Supported operand variants:
51607    ///
51608    /// ```text
51609    /// +---+---------------+
51610    /// | # | Operands      |
51611    /// +---+---------------+
51612    /// | 1 | Xmm, Xmm, Mem |
51613    /// | 2 | Xmm, Xmm, Xmm |
51614    /// +---+---------------+
51615    /// ```
51616    #[inline]
51617    pub fn vmaxsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51618    where
51619        Assembler<'a>: VmaxshEmitter<A, B, C>,
51620    {
51621        <Self as VmaxshEmitter<A, B, C>>::vmaxsh(self, op0, op1, op2);
51622    }
51623    /// `VMAXSH_MASK`.
51624    ///
51625    /// Supported operand variants:
51626    ///
51627    /// ```text
51628    /// +---+---------------+
51629    /// | # | Operands      |
51630    /// +---+---------------+
51631    /// | 1 | Xmm, Xmm, Mem |
51632    /// | 2 | Xmm, Xmm, Xmm |
51633    /// +---+---------------+
51634    /// ```
51635    #[inline]
51636    pub fn vmaxsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51637    where
51638        Assembler<'a>: VmaxshMaskEmitter<A, B, C>,
51639    {
51640        <Self as VmaxshMaskEmitter<A, B, C>>::vmaxsh_mask(self, op0, op1, op2);
51641    }
51642    /// `VMAXSH_MASK_SAE`.
51643    ///
51644    /// Supported operand variants:
51645    ///
51646    /// ```text
51647    /// +---+---------------+
51648    /// | # | Operands      |
51649    /// +---+---------------+
51650    /// | 1 | Xmm, Xmm, Xmm |
51651    /// +---+---------------+
51652    /// ```
51653    #[inline]
51654    pub fn vmaxsh_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51655    where
51656        Assembler<'a>: VmaxshMaskSaeEmitter<A, B, C>,
51657    {
51658        <Self as VmaxshMaskSaeEmitter<A, B, C>>::vmaxsh_mask_sae(self, op0, op1, op2);
51659    }
51660    /// `VMAXSH_MASKZ`.
51661    ///
51662    /// Supported operand variants:
51663    ///
51664    /// ```text
51665    /// +---+---------------+
51666    /// | # | Operands      |
51667    /// +---+---------------+
51668    /// | 1 | Xmm, Xmm, Mem |
51669    /// | 2 | Xmm, Xmm, Xmm |
51670    /// +---+---------------+
51671    /// ```
51672    #[inline]
51673    pub fn vmaxsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51674    where
51675        Assembler<'a>: VmaxshMaskzEmitter<A, B, C>,
51676    {
51677        <Self as VmaxshMaskzEmitter<A, B, C>>::vmaxsh_maskz(self, op0, op1, op2);
51678    }
51679    /// `VMAXSH_MASKZ_SAE`.
51680    ///
51681    /// Supported operand variants:
51682    ///
51683    /// ```text
51684    /// +---+---------------+
51685    /// | # | Operands      |
51686    /// +---+---------------+
51687    /// | 1 | Xmm, Xmm, Xmm |
51688    /// +---+---------------+
51689    /// ```
51690    #[inline]
51691    pub fn vmaxsh_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51692    where
51693        Assembler<'a>: VmaxshMaskzSaeEmitter<A, B, C>,
51694    {
51695        <Self as VmaxshMaskzSaeEmitter<A, B, C>>::vmaxsh_maskz_sae(self, op0, op1, op2);
51696    }
51697    /// `VMAXSH_SAE`.
51698    ///
51699    /// Supported operand variants:
51700    ///
51701    /// ```text
51702    /// +---+---------------+
51703    /// | # | Operands      |
51704    /// +---+---------------+
51705    /// | 1 | Xmm, Xmm, Xmm |
51706    /// +---+---------------+
51707    /// ```
51708    #[inline]
51709    pub fn vmaxsh_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51710    where
51711        Assembler<'a>: VmaxshSaeEmitter<A, B, C>,
51712    {
51713        <Self as VmaxshSaeEmitter<A, B, C>>::vmaxsh_sae(self, op0, op1, op2);
51714    }
51715    /// `VMINPH`.
51716    ///
51717    /// Supported operand variants:
51718    ///
51719    /// ```text
51720    /// +---+---------------+
51721    /// | # | Operands      |
51722    /// +---+---------------+
51723    /// | 1 | Xmm, Xmm, Mem |
51724    /// | 2 | Xmm, Xmm, Xmm |
51725    /// | 3 | Ymm, Ymm, Mem |
51726    /// | 4 | Ymm, Ymm, Ymm |
51727    /// | 5 | Zmm, Zmm, Mem |
51728    /// | 6 | Zmm, Zmm, Zmm |
51729    /// +---+---------------+
51730    /// ```
51731    #[inline]
51732    pub fn vminph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51733    where
51734        Assembler<'a>: VminphEmitter<A, B, C>,
51735    {
51736        <Self as VminphEmitter<A, B, C>>::vminph(self, op0, op1, op2);
51737    }
51738    /// `VMINPH_MASK`.
51739    ///
51740    /// Supported operand variants:
51741    ///
51742    /// ```text
51743    /// +---+---------------+
51744    /// | # | Operands      |
51745    /// +---+---------------+
51746    /// | 1 | Xmm, Xmm, Mem |
51747    /// | 2 | Xmm, Xmm, Xmm |
51748    /// | 3 | Ymm, Ymm, Mem |
51749    /// | 4 | Ymm, Ymm, Ymm |
51750    /// | 5 | Zmm, Zmm, Mem |
51751    /// | 6 | Zmm, Zmm, Zmm |
51752    /// +---+---------------+
51753    /// ```
51754    #[inline]
51755    pub fn vminph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51756    where
51757        Assembler<'a>: VminphMaskEmitter<A, B, C>,
51758    {
51759        <Self as VminphMaskEmitter<A, B, C>>::vminph_mask(self, op0, op1, op2);
51760    }
51761    /// `VMINPH_MASK_SAE`.
51762    ///
51763    /// Supported operand variants:
51764    ///
51765    /// ```text
51766    /// +---+---------------+
51767    /// | # | Operands      |
51768    /// +---+---------------+
51769    /// | 1 | Zmm, Zmm, Zmm |
51770    /// +---+---------------+
51771    /// ```
51772    #[inline]
51773    pub fn vminph_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51774    where
51775        Assembler<'a>: VminphMaskSaeEmitter<A, B, C>,
51776    {
51777        <Self as VminphMaskSaeEmitter<A, B, C>>::vminph_mask_sae(self, op0, op1, op2);
51778    }
51779    /// `VMINPH_MASKZ`.
51780    ///
51781    /// Supported operand variants:
51782    ///
51783    /// ```text
51784    /// +---+---------------+
51785    /// | # | Operands      |
51786    /// +---+---------------+
51787    /// | 1 | Xmm, Xmm, Mem |
51788    /// | 2 | Xmm, Xmm, Xmm |
51789    /// | 3 | Ymm, Ymm, Mem |
51790    /// | 4 | Ymm, Ymm, Ymm |
51791    /// | 5 | Zmm, Zmm, Mem |
51792    /// | 6 | Zmm, Zmm, Zmm |
51793    /// +---+---------------+
51794    /// ```
51795    #[inline]
51796    pub fn vminph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51797    where
51798        Assembler<'a>: VminphMaskzEmitter<A, B, C>,
51799    {
51800        <Self as VminphMaskzEmitter<A, B, C>>::vminph_maskz(self, op0, op1, op2);
51801    }
51802    /// `VMINPH_MASKZ_SAE`.
51803    ///
51804    /// Supported operand variants:
51805    ///
51806    /// ```text
51807    /// +---+---------------+
51808    /// | # | Operands      |
51809    /// +---+---------------+
51810    /// | 1 | Zmm, Zmm, Zmm |
51811    /// +---+---------------+
51812    /// ```
51813    #[inline]
51814    pub fn vminph_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51815    where
51816        Assembler<'a>: VminphMaskzSaeEmitter<A, B, C>,
51817    {
51818        <Self as VminphMaskzSaeEmitter<A, B, C>>::vminph_maskz_sae(self, op0, op1, op2);
51819    }
51820    /// `VMINPH_SAE`.
51821    ///
51822    /// Supported operand variants:
51823    ///
51824    /// ```text
51825    /// +---+---------------+
51826    /// | # | Operands      |
51827    /// +---+---------------+
51828    /// | 1 | Zmm, Zmm, Zmm |
51829    /// +---+---------------+
51830    /// ```
51831    #[inline]
51832    pub fn vminph_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51833    where
51834        Assembler<'a>: VminphSaeEmitter<A, B, C>,
51835    {
51836        <Self as VminphSaeEmitter<A, B, C>>::vminph_sae(self, op0, op1, op2);
51837    }
51838    /// `VMINSH`.
51839    ///
51840    /// Supported operand variants:
51841    ///
51842    /// ```text
51843    /// +---+---------------+
51844    /// | # | Operands      |
51845    /// +---+---------------+
51846    /// | 1 | Xmm, Xmm, Mem |
51847    /// | 2 | Xmm, Xmm, Xmm |
51848    /// +---+---------------+
51849    /// ```
51850    #[inline]
51851    pub fn vminsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51852    where
51853        Assembler<'a>: VminshEmitter<A, B, C>,
51854    {
51855        <Self as VminshEmitter<A, B, C>>::vminsh(self, op0, op1, op2);
51856    }
51857    /// `VMINSH_MASK`.
51858    ///
51859    /// Supported operand variants:
51860    ///
51861    /// ```text
51862    /// +---+---------------+
51863    /// | # | Operands      |
51864    /// +---+---------------+
51865    /// | 1 | Xmm, Xmm, Mem |
51866    /// | 2 | Xmm, Xmm, Xmm |
51867    /// +---+---------------+
51868    /// ```
51869    #[inline]
51870    pub fn vminsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51871    where
51872        Assembler<'a>: VminshMaskEmitter<A, B, C>,
51873    {
51874        <Self as VminshMaskEmitter<A, B, C>>::vminsh_mask(self, op0, op1, op2);
51875    }
51876    /// `VMINSH_MASK_SAE`.
51877    ///
51878    /// Supported operand variants:
51879    ///
51880    /// ```text
51881    /// +---+---------------+
51882    /// | # | Operands      |
51883    /// +---+---------------+
51884    /// | 1 | Xmm, Xmm, Xmm |
51885    /// +---+---------------+
51886    /// ```
51887    #[inline]
51888    pub fn vminsh_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51889    where
51890        Assembler<'a>: VminshMaskSaeEmitter<A, B, C>,
51891    {
51892        <Self as VminshMaskSaeEmitter<A, B, C>>::vminsh_mask_sae(self, op0, op1, op2);
51893    }
51894    /// `VMINSH_MASKZ`.
51895    ///
51896    /// Supported operand variants:
51897    ///
51898    /// ```text
51899    /// +---+---------------+
51900    /// | # | Operands      |
51901    /// +---+---------------+
51902    /// | 1 | Xmm, Xmm, Mem |
51903    /// | 2 | Xmm, Xmm, Xmm |
51904    /// +---+---------------+
51905    /// ```
51906    #[inline]
51907    pub fn vminsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51908    where
51909        Assembler<'a>: VminshMaskzEmitter<A, B, C>,
51910    {
51911        <Self as VminshMaskzEmitter<A, B, C>>::vminsh_maskz(self, op0, op1, op2);
51912    }
51913    /// `VMINSH_MASKZ_SAE`.
51914    ///
51915    /// Supported operand variants:
51916    ///
51917    /// ```text
51918    /// +---+---------------+
51919    /// | # | Operands      |
51920    /// +---+---------------+
51921    /// | 1 | Xmm, Xmm, Xmm |
51922    /// +---+---------------+
51923    /// ```
51924    #[inline]
51925    pub fn vminsh_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51926    where
51927        Assembler<'a>: VminshMaskzSaeEmitter<A, B, C>,
51928    {
51929        <Self as VminshMaskzSaeEmitter<A, B, C>>::vminsh_maskz_sae(self, op0, op1, op2);
51930    }
51931    /// `VMINSH_SAE`.
51932    ///
51933    /// Supported operand variants:
51934    ///
51935    /// ```text
51936    /// +---+---------------+
51937    /// | # | Operands      |
51938    /// +---+---------------+
51939    /// | 1 | Xmm, Xmm, Xmm |
51940    /// +---+---------------+
51941    /// ```
51942    #[inline]
51943    pub fn vminsh_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51944    where
51945        Assembler<'a>: VminshSaeEmitter<A, B, C>,
51946    {
51947        <Self as VminshSaeEmitter<A, B, C>>::vminsh_sae(self, op0, op1, op2);
51948    }
51949    /// `VMOVSH`.
51950    ///
51951    /// Supported operand variants:
51952    ///
51953    /// ```text
51954    /// +---+----------+
51955    /// | # | Operands |
51956    /// +---+----------+
51957    /// | 1 | Mem, Xmm |
51958    /// | 2 | Xmm, Mem |
51959    /// +---+----------+
51960    /// ```
51961    #[inline]
51962    pub fn vmovsh_2<A, B>(&mut self, op0: A, op1: B)
51963    where
51964        Assembler<'a>: VmovshEmitter_2<A, B>,
51965    {
51966        <Self as VmovshEmitter_2<A, B>>::vmovsh_2(self, op0, op1);
51967    }
51968    /// `VMOVSH`.
51969    ///
51970    /// Supported operand variants:
51971    ///
51972    /// ```text
51973    /// +---+---------------+
51974    /// | # | Operands      |
51975    /// +---+---------------+
51976    /// | 1 | Xmm, Xmm, Xmm |
51977    /// +---+---------------+
51978    /// ```
51979    #[inline]
51980    pub fn vmovsh_3<A, B, C>(&mut self, op0: A, op1: B, op2: C)
51981    where
51982        Assembler<'a>: VmovshEmitter_3<A, B, C>,
51983    {
51984        <Self as VmovshEmitter_3<A, B, C>>::vmovsh_3(self, op0, op1, op2);
51985    }
51986    /// `VMOVSH_MASK`.
51987    ///
51988    /// Supported operand variants:
51989    ///
51990    /// ```text
51991    /// +---+----------+
51992    /// | # | Operands |
51993    /// +---+----------+
51994    /// | 1 | Mem, Xmm |
51995    /// | 2 | Xmm, Mem |
51996    /// +---+----------+
51997    /// ```
51998    #[inline]
51999    pub fn vmovsh_mask_2<A, B>(&mut self, op0: A, op1: B)
52000    where
52001        Assembler<'a>: VmovshMaskEmitter_2<A, B>,
52002    {
52003        <Self as VmovshMaskEmitter_2<A, B>>::vmovsh_mask_2(self, op0, op1);
52004    }
52005    /// `VMOVSH_MASK`.
52006    ///
52007    /// Supported operand variants:
52008    ///
52009    /// ```text
52010    /// +---+---------------+
52011    /// | # | Operands      |
52012    /// +---+---------------+
52013    /// | 1 | Xmm, Xmm, Xmm |
52014    /// +---+---------------+
52015    /// ```
52016    #[inline]
52017    pub fn vmovsh_mask_3<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52018    where
52019        Assembler<'a>: VmovshMaskEmitter_3<A, B, C>,
52020    {
52021        <Self as VmovshMaskEmitter_3<A, B, C>>::vmovsh_mask_3(self, op0, op1, op2);
52022    }
52023    /// `VMOVSH_MASKZ`.
52024    ///
52025    /// Supported operand variants:
52026    ///
52027    /// ```text
52028    /// +---+----------+
52029    /// | # | Operands |
52030    /// +---+----------+
52031    /// | 1 | Xmm, Mem |
52032    /// +---+----------+
52033    /// ```
52034    #[inline]
52035    pub fn vmovsh_maskz_2<A, B>(&mut self, op0: A, op1: B)
52036    where
52037        Assembler<'a>: VmovshMaskzEmitter_2<A, B>,
52038    {
52039        <Self as VmovshMaskzEmitter_2<A, B>>::vmovsh_maskz_2(self, op0, op1);
52040    }
52041    /// `VMOVSH_MASKZ`.
52042    ///
52043    /// Supported operand variants:
52044    ///
52045    /// ```text
52046    /// +---+---------------+
52047    /// | # | Operands      |
52048    /// +---+---------------+
52049    /// | 1 | Xmm, Xmm, Xmm |
52050    /// +---+---------------+
52051    /// ```
52052    #[inline]
52053    pub fn vmovsh_maskz_3<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52054    where
52055        Assembler<'a>: VmovshMaskzEmitter_3<A, B, C>,
52056    {
52057        <Self as VmovshMaskzEmitter_3<A, B, C>>::vmovsh_maskz_3(self, op0, op1, op2);
52058    }
52059    /// `VMOVW_G2X`.
52060    ///
52061    /// Supported operand variants:
52062    ///
52063    /// ```text
52064    /// +---+----------+
52065    /// | # | Operands |
52066    /// +---+----------+
52067    /// | 1 | Xmm, Gpd |
52068    /// | 2 | Xmm, Mem |
52069    /// +---+----------+
52070    /// ```
52071    #[inline]
52072    pub fn vmovw_g2x<A, B>(&mut self, op0: A, op1: B)
52073    where
52074        Assembler<'a>: VmovwG2xEmitter<A, B>,
52075    {
52076        <Self as VmovwG2xEmitter<A, B>>::vmovw_g2x(self, op0, op1);
52077    }
52078    /// `VMOVW_X2G`.
52079    ///
52080    /// Supported operand variants:
52081    ///
52082    /// ```text
52083    /// +---+----------+
52084    /// | # | Operands |
52085    /// +---+----------+
52086    /// | 1 | Gpd, Xmm |
52087    /// | 2 | Mem, Xmm |
52088    /// +---+----------+
52089    /// ```
52090    #[inline]
52091    pub fn vmovw_x2g<A, B>(&mut self, op0: A, op1: B)
52092    where
52093        Assembler<'a>: VmovwX2gEmitter<A, B>,
52094    {
52095        <Self as VmovwX2gEmitter<A, B>>::vmovw_x2g(self, op0, op1);
52096    }
52097    /// `VMULPH`.
52098    ///
52099    /// Supported operand variants:
52100    ///
52101    /// ```text
52102    /// +---+---------------+
52103    /// | # | Operands      |
52104    /// +---+---------------+
52105    /// | 1 | Xmm, Xmm, Mem |
52106    /// | 2 | Xmm, Xmm, Xmm |
52107    /// | 3 | Ymm, Ymm, Mem |
52108    /// | 4 | Ymm, Ymm, Ymm |
52109    /// | 5 | Zmm, Zmm, Mem |
52110    /// | 6 | Zmm, Zmm, Zmm |
52111    /// +---+---------------+
52112    /// ```
52113    #[inline]
52114    pub fn vmulph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52115    where
52116        Assembler<'a>: VmulphEmitter<A, B, C>,
52117    {
52118        <Self as VmulphEmitter<A, B, C>>::vmulph(self, op0, op1, op2);
52119    }
52120    /// `VMULPH_ER`.
52121    ///
52122    /// Supported operand variants:
52123    ///
52124    /// ```text
52125    /// +---+---------------+
52126    /// | # | Operands      |
52127    /// +---+---------------+
52128    /// | 1 | Zmm, Zmm, Zmm |
52129    /// +---+---------------+
52130    /// ```
52131    #[inline]
52132    pub fn vmulph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52133    where
52134        Assembler<'a>: VmulphErEmitter<A, B, C>,
52135    {
52136        <Self as VmulphErEmitter<A, B, C>>::vmulph_er(self, op0, op1, op2);
52137    }
52138    /// `VMULPH_MASK`.
52139    ///
52140    /// Supported operand variants:
52141    ///
52142    /// ```text
52143    /// +---+---------------+
52144    /// | # | Operands      |
52145    /// +---+---------------+
52146    /// | 1 | Xmm, Xmm, Mem |
52147    /// | 2 | Xmm, Xmm, Xmm |
52148    /// | 3 | Ymm, Ymm, Mem |
52149    /// | 4 | Ymm, Ymm, Ymm |
52150    /// | 5 | Zmm, Zmm, Mem |
52151    /// | 6 | Zmm, Zmm, Zmm |
52152    /// +---+---------------+
52153    /// ```
52154    #[inline]
52155    pub fn vmulph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52156    where
52157        Assembler<'a>: VmulphMaskEmitter<A, B, C>,
52158    {
52159        <Self as VmulphMaskEmitter<A, B, C>>::vmulph_mask(self, op0, op1, op2);
52160    }
52161    /// `VMULPH_MASK_ER`.
52162    ///
52163    /// Supported operand variants:
52164    ///
52165    /// ```text
52166    /// +---+---------------+
52167    /// | # | Operands      |
52168    /// +---+---------------+
52169    /// | 1 | Zmm, Zmm, Zmm |
52170    /// +---+---------------+
52171    /// ```
52172    #[inline]
52173    pub fn vmulph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52174    where
52175        Assembler<'a>: VmulphMaskErEmitter<A, B, C>,
52176    {
52177        <Self as VmulphMaskErEmitter<A, B, C>>::vmulph_mask_er(self, op0, op1, op2);
52178    }
52179    /// `VMULPH_MASKZ`.
52180    ///
52181    /// Supported operand variants:
52182    ///
52183    /// ```text
52184    /// +---+---------------+
52185    /// | # | Operands      |
52186    /// +---+---------------+
52187    /// | 1 | Xmm, Xmm, Mem |
52188    /// | 2 | Xmm, Xmm, Xmm |
52189    /// | 3 | Ymm, Ymm, Mem |
52190    /// | 4 | Ymm, Ymm, Ymm |
52191    /// | 5 | Zmm, Zmm, Mem |
52192    /// | 6 | Zmm, Zmm, Zmm |
52193    /// +---+---------------+
52194    /// ```
52195    #[inline]
52196    pub fn vmulph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52197    where
52198        Assembler<'a>: VmulphMaskzEmitter<A, B, C>,
52199    {
52200        <Self as VmulphMaskzEmitter<A, B, C>>::vmulph_maskz(self, op0, op1, op2);
52201    }
52202    /// `VMULPH_MASKZ_ER`.
52203    ///
52204    /// Supported operand variants:
52205    ///
52206    /// ```text
52207    /// +---+---------------+
52208    /// | # | Operands      |
52209    /// +---+---------------+
52210    /// | 1 | Zmm, Zmm, Zmm |
52211    /// +---+---------------+
52212    /// ```
52213    #[inline]
52214    pub fn vmulph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52215    where
52216        Assembler<'a>: VmulphMaskzErEmitter<A, B, C>,
52217    {
52218        <Self as VmulphMaskzErEmitter<A, B, C>>::vmulph_maskz_er(self, op0, op1, op2);
52219    }
52220    /// `VMULSH`.
52221    ///
52222    /// Supported operand variants:
52223    ///
52224    /// ```text
52225    /// +---+---------------+
52226    /// | # | Operands      |
52227    /// +---+---------------+
52228    /// | 1 | Xmm, Xmm, Mem |
52229    /// | 2 | Xmm, Xmm, Xmm |
52230    /// +---+---------------+
52231    /// ```
52232    #[inline]
52233    pub fn vmulsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52234    where
52235        Assembler<'a>: VmulshEmitter<A, B, C>,
52236    {
52237        <Self as VmulshEmitter<A, B, C>>::vmulsh(self, op0, op1, op2);
52238    }
52239    /// `VMULSH_ER`.
52240    ///
52241    /// Supported operand variants:
52242    ///
52243    /// ```text
52244    /// +---+---------------+
52245    /// | # | Operands      |
52246    /// +---+---------------+
52247    /// | 1 | Xmm, Xmm, Xmm |
52248    /// +---+---------------+
52249    /// ```
52250    #[inline]
52251    pub fn vmulsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52252    where
52253        Assembler<'a>: VmulshErEmitter<A, B, C>,
52254    {
52255        <Self as VmulshErEmitter<A, B, C>>::vmulsh_er(self, op0, op1, op2);
52256    }
52257    /// `VMULSH_MASK`.
52258    ///
52259    /// Supported operand variants:
52260    ///
52261    /// ```text
52262    /// +---+---------------+
52263    /// | # | Operands      |
52264    /// +---+---------------+
52265    /// | 1 | Xmm, Xmm, Mem |
52266    /// | 2 | Xmm, Xmm, Xmm |
52267    /// +---+---------------+
52268    /// ```
52269    #[inline]
52270    pub fn vmulsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52271    where
52272        Assembler<'a>: VmulshMaskEmitter<A, B, C>,
52273    {
52274        <Self as VmulshMaskEmitter<A, B, C>>::vmulsh_mask(self, op0, op1, op2);
52275    }
52276    /// `VMULSH_MASK_ER`.
52277    ///
52278    /// Supported operand variants:
52279    ///
52280    /// ```text
52281    /// +---+---------------+
52282    /// | # | Operands      |
52283    /// +---+---------------+
52284    /// | 1 | Xmm, Xmm, Xmm |
52285    /// +---+---------------+
52286    /// ```
52287    #[inline]
52288    pub fn vmulsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52289    where
52290        Assembler<'a>: VmulshMaskErEmitter<A, B, C>,
52291    {
52292        <Self as VmulshMaskErEmitter<A, B, C>>::vmulsh_mask_er(self, op0, op1, op2);
52293    }
52294    /// `VMULSH_MASKZ`.
52295    ///
52296    /// Supported operand variants:
52297    ///
52298    /// ```text
52299    /// +---+---------------+
52300    /// | # | Operands      |
52301    /// +---+---------------+
52302    /// | 1 | Xmm, Xmm, Mem |
52303    /// | 2 | Xmm, Xmm, Xmm |
52304    /// +---+---------------+
52305    /// ```
52306    #[inline]
52307    pub fn vmulsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52308    where
52309        Assembler<'a>: VmulshMaskzEmitter<A, B, C>,
52310    {
52311        <Self as VmulshMaskzEmitter<A, B, C>>::vmulsh_maskz(self, op0, op1, op2);
52312    }
52313    /// `VMULSH_MASKZ_ER`.
52314    ///
52315    /// Supported operand variants:
52316    ///
52317    /// ```text
52318    /// +---+---------------+
52319    /// | # | Operands      |
52320    /// +---+---------------+
52321    /// | 1 | Xmm, Xmm, Xmm |
52322    /// +---+---------------+
52323    /// ```
52324    #[inline]
52325    pub fn vmulsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52326    where
52327        Assembler<'a>: VmulshMaskzErEmitter<A, B, C>,
52328    {
52329        <Self as VmulshMaskzErEmitter<A, B, C>>::vmulsh_maskz_er(self, op0, op1, op2);
52330    }
52331    /// `VPCLMULQDQ`.
52332    ///
52333    /// Supported operand variants:
52334    ///
52335    /// ```text
52336    /// +---+--------------------+
52337    /// | # | Operands           |
52338    /// +---+--------------------+
52339    /// | 1 | Xmm, Xmm, Mem, Imm |
52340    /// | 2 | Xmm, Xmm, Xmm, Imm |
52341    /// | 3 | Ymm, Ymm, Mem, Imm |
52342    /// | 4 | Ymm, Ymm, Ymm, Imm |
52343    /// | 5 | Zmm, Zmm, Mem, Imm |
52344    /// | 6 | Zmm, Zmm, Zmm, Imm |
52345    /// +---+--------------------+
52346    /// ```
52347    #[inline]
52348    pub fn vpclmulqdq<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52349    where
52350        Assembler<'a>: VpclmulqdqEmitter<A, B, C, D>,
52351    {
52352        <Self as VpclmulqdqEmitter<A, B, C, D>>::vpclmulqdq(self, op0, op1, op2, op3);
52353    }
52354    /// `VPDPBSSD`.
52355    ///
52356    /// Supported operand variants:
52357    ///
52358    /// ```text
52359    /// +---+---------------+
52360    /// | # | Operands      |
52361    /// +---+---------------+
52362    /// | 1 | Xmm, Xmm, Mem |
52363    /// | 2 | Xmm, Xmm, Xmm |
52364    /// | 3 | Ymm, Ymm, Mem |
52365    /// | 4 | Ymm, Ymm, Ymm |
52366    /// +---+---------------+
52367    /// ```
52368    #[inline]
52369    pub fn vpdpbssd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52370    where
52371        Assembler<'a>: VpdpbssdEmitter<A, B, C>,
52372    {
52373        <Self as VpdpbssdEmitter<A, B, C>>::vpdpbssd(self, op0, op1, op2);
52374    }
52375    /// `VPDPBSSDS`.
52376    ///
52377    /// Supported operand variants:
52378    ///
52379    /// ```text
52380    /// +---+---------------+
52381    /// | # | Operands      |
52382    /// +---+---------------+
52383    /// | 1 | Xmm, Xmm, Mem |
52384    /// | 2 | Xmm, Xmm, Xmm |
52385    /// | 3 | Ymm, Ymm, Mem |
52386    /// | 4 | Ymm, Ymm, Ymm |
52387    /// +---+---------------+
52388    /// ```
52389    #[inline]
52390    pub fn vpdpbssds<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52391    where
52392        Assembler<'a>: VpdpbssdsEmitter<A, B, C>,
52393    {
52394        <Self as VpdpbssdsEmitter<A, B, C>>::vpdpbssds(self, op0, op1, op2);
52395    }
52396    /// `VPDPBSUD`.
52397    ///
52398    /// Supported operand variants:
52399    ///
52400    /// ```text
52401    /// +---+---------------+
52402    /// | # | Operands      |
52403    /// +---+---------------+
52404    /// | 1 | Xmm, Xmm, Mem |
52405    /// | 2 | Xmm, Xmm, Xmm |
52406    /// | 3 | Ymm, Ymm, Mem |
52407    /// | 4 | Ymm, Ymm, Ymm |
52408    /// +---+---------------+
52409    /// ```
52410    #[inline]
52411    pub fn vpdpbsud<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52412    where
52413        Assembler<'a>: VpdpbsudEmitter<A, B, C>,
52414    {
52415        <Self as VpdpbsudEmitter<A, B, C>>::vpdpbsud(self, op0, op1, op2);
52416    }
52417    /// `VPDPBSUDS`.
52418    ///
52419    /// Supported operand variants:
52420    ///
52421    /// ```text
52422    /// +---+---------------+
52423    /// | # | Operands      |
52424    /// +---+---------------+
52425    /// | 1 | Xmm, Xmm, Mem |
52426    /// | 2 | Xmm, Xmm, Xmm |
52427    /// | 3 | Ymm, Ymm, Mem |
52428    /// | 4 | Ymm, Ymm, Ymm |
52429    /// +---+---------------+
52430    /// ```
52431    #[inline]
52432    pub fn vpdpbsuds<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52433    where
52434        Assembler<'a>: VpdpbsudsEmitter<A, B, C>,
52435    {
52436        <Self as VpdpbsudsEmitter<A, B, C>>::vpdpbsuds(self, op0, op1, op2);
52437    }
52438    /// `VPDPBUUD`.
52439    ///
52440    /// Supported operand variants:
52441    ///
52442    /// ```text
52443    /// +---+---------------+
52444    /// | # | Operands      |
52445    /// +---+---------------+
52446    /// | 1 | Xmm, Xmm, Mem |
52447    /// | 2 | Xmm, Xmm, Xmm |
52448    /// | 3 | Ymm, Ymm, Mem |
52449    /// | 4 | Ymm, Ymm, Ymm |
52450    /// +---+---------------+
52451    /// ```
52452    #[inline]
52453    pub fn vpdpbuud<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52454    where
52455        Assembler<'a>: VpdpbuudEmitter<A, B, C>,
52456    {
52457        <Self as VpdpbuudEmitter<A, B, C>>::vpdpbuud(self, op0, op1, op2);
52458    }
52459    /// `VPDPBUUDS`.
52460    ///
52461    /// Supported operand variants:
52462    ///
52463    /// ```text
52464    /// +---+---------------+
52465    /// | # | Operands      |
52466    /// +---+---------------+
52467    /// | 1 | Xmm, Xmm, Mem |
52468    /// | 2 | Xmm, Xmm, Xmm |
52469    /// | 3 | Ymm, Ymm, Mem |
52470    /// | 4 | Ymm, Ymm, Ymm |
52471    /// +---+---------------+
52472    /// ```
52473    #[inline]
52474    pub fn vpdpbuuds<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52475    where
52476        Assembler<'a>: VpdpbuudsEmitter<A, B, C>,
52477    {
52478        <Self as VpdpbuudsEmitter<A, B, C>>::vpdpbuuds(self, op0, op1, op2);
52479    }
52480    /// `VRCPPH`.
52481    ///
52482    /// Supported operand variants:
52483    ///
52484    /// ```text
52485    /// +---+----------+
52486    /// | # | Operands |
52487    /// +---+----------+
52488    /// | 1 | Xmm, Mem |
52489    /// | 2 | Xmm, Xmm |
52490    /// | 3 | Ymm, Mem |
52491    /// | 4 | Ymm, Ymm |
52492    /// | 5 | Zmm, Mem |
52493    /// | 6 | Zmm, Zmm |
52494    /// +---+----------+
52495    /// ```
52496    #[inline]
52497    pub fn vrcpph<A, B>(&mut self, op0: A, op1: B)
52498    where
52499        Assembler<'a>: VrcpphEmitter<A, B>,
52500    {
52501        <Self as VrcpphEmitter<A, B>>::vrcpph(self, op0, op1);
52502    }
52503    /// `VRCPPH_MASK`.
52504    ///
52505    /// Supported operand variants:
52506    ///
52507    /// ```text
52508    /// +---+----------+
52509    /// | # | Operands |
52510    /// +---+----------+
52511    /// | 1 | Xmm, Mem |
52512    /// | 2 | Xmm, Xmm |
52513    /// | 3 | Ymm, Mem |
52514    /// | 4 | Ymm, Ymm |
52515    /// | 5 | Zmm, Mem |
52516    /// | 6 | Zmm, Zmm |
52517    /// +---+----------+
52518    /// ```
52519    #[inline]
52520    pub fn vrcpph_mask<A, B>(&mut self, op0: A, op1: B)
52521    where
52522        Assembler<'a>: VrcpphMaskEmitter<A, B>,
52523    {
52524        <Self as VrcpphMaskEmitter<A, B>>::vrcpph_mask(self, op0, op1);
52525    }
52526    /// `VRCPPH_MASKZ`.
52527    ///
52528    /// Supported operand variants:
52529    ///
52530    /// ```text
52531    /// +---+----------+
52532    /// | # | Operands |
52533    /// +---+----------+
52534    /// | 1 | Xmm, Mem |
52535    /// | 2 | Xmm, Xmm |
52536    /// | 3 | Ymm, Mem |
52537    /// | 4 | Ymm, Ymm |
52538    /// | 5 | Zmm, Mem |
52539    /// | 6 | Zmm, Zmm |
52540    /// +---+----------+
52541    /// ```
52542    #[inline]
52543    pub fn vrcpph_maskz<A, B>(&mut self, op0: A, op1: B)
52544    where
52545        Assembler<'a>: VrcpphMaskzEmitter<A, B>,
52546    {
52547        <Self as VrcpphMaskzEmitter<A, B>>::vrcpph_maskz(self, op0, op1);
52548    }
52549    /// `VRCPSH`.
52550    ///
52551    /// Supported operand variants:
52552    ///
52553    /// ```text
52554    /// +---+---------------+
52555    /// | # | Operands      |
52556    /// +---+---------------+
52557    /// | 1 | Xmm, Xmm, Mem |
52558    /// | 2 | Xmm, Xmm, Xmm |
52559    /// +---+---------------+
52560    /// ```
52561    #[inline]
52562    pub fn vrcpsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52563    where
52564        Assembler<'a>: VrcpshEmitter<A, B, C>,
52565    {
52566        <Self as VrcpshEmitter<A, B, C>>::vrcpsh(self, op0, op1, op2);
52567    }
52568    /// `VRCPSH_MASK`.
52569    ///
52570    /// Supported operand variants:
52571    ///
52572    /// ```text
52573    /// +---+---------------+
52574    /// | # | Operands      |
52575    /// +---+---------------+
52576    /// | 1 | Xmm, Xmm, Mem |
52577    /// | 2 | Xmm, Xmm, Xmm |
52578    /// +---+---------------+
52579    /// ```
52580    #[inline]
52581    pub fn vrcpsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52582    where
52583        Assembler<'a>: VrcpshMaskEmitter<A, B, C>,
52584    {
52585        <Self as VrcpshMaskEmitter<A, B, C>>::vrcpsh_mask(self, op0, op1, op2);
52586    }
52587    /// `VRCPSH_MASKZ`.
52588    ///
52589    /// Supported operand variants:
52590    ///
52591    /// ```text
52592    /// +---+---------------+
52593    /// | # | Operands      |
52594    /// +---+---------------+
52595    /// | 1 | Xmm, Xmm, Mem |
52596    /// | 2 | Xmm, Xmm, Xmm |
52597    /// +---+---------------+
52598    /// ```
52599    #[inline]
52600    pub fn vrcpsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52601    where
52602        Assembler<'a>: VrcpshMaskzEmitter<A, B, C>,
52603    {
52604        <Self as VrcpshMaskzEmitter<A, B, C>>::vrcpsh_maskz(self, op0, op1, op2);
52605    }
52606    /// `VREDUCEPH`.
52607    ///
52608    /// Supported operand variants:
52609    ///
52610    /// ```text
52611    /// +---+---------------+
52612    /// | # | Operands      |
52613    /// +---+---------------+
52614    /// | 1 | Xmm, Mem, Imm |
52615    /// | 2 | Xmm, Xmm, Imm |
52616    /// | 3 | Ymm, Mem, Imm |
52617    /// | 4 | Ymm, Ymm, Imm |
52618    /// | 5 | Zmm, Mem, Imm |
52619    /// | 6 | Zmm, Zmm, Imm |
52620    /// +---+---------------+
52621    /// ```
52622    #[inline]
52623    pub fn vreduceph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52624    where
52625        Assembler<'a>: VreducephEmitter<A, B, C>,
52626    {
52627        <Self as VreducephEmitter<A, B, C>>::vreduceph(self, op0, op1, op2);
52628    }
52629    /// `VREDUCEPH_MASK`.
52630    ///
52631    /// Supported operand variants:
52632    ///
52633    /// ```text
52634    /// +---+---------------+
52635    /// | # | Operands      |
52636    /// +---+---------------+
52637    /// | 1 | Xmm, Mem, Imm |
52638    /// | 2 | Xmm, Xmm, Imm |
52639    /// | 3 | Ymm, Mem, Imm |
52640    /// | 4 | Ymm, Ymm, Imm |
52641    /// | 5 | Zmm, Mem, Imm |
52642    /// | 6 | Zmm, Zmm, Imm |
52643    /// +---+---------------+
52644    /// ```
52645    #[inline]
52646    pub fn vreduceph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52647    where
52648        Assembler<'a>: VreducephMaskEmitter<A, B, C>,
52649    {
52650        <Self as VreducephMaskEmitter<A, B, C>>::vreduceph_mask(self, op0, op1, op2);
52651    }
52652    /// `VREDUCEPH_MASK_SAE`.
52653    ///
52654    /// Supported operand variants:
52655    ///
52656    /// ```text
52657    /// +---+---------------+
52658    /// | # | Operands      |
52659    /// +---+---------------+
52660    /// | 1 | Zmm, Zmm, Imm |
52661    /// +---+---------------+
52662    /// ```
52663    #[inline]
52664    pub fn vreduceph_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52665    where
52666        Assembler<'a>: VreducephMaskSaeEmitter<A, B, C>,
52667    {
52668        <Self as VreducephMaskSaeEmitter<A, B, C>>::vreduceph_mask_sae(self, op0, op1, op2);
52669    }
52670    /// `VREDUCEPH_MASKZ`.
52671    ///
52672    /// Supported operand variants:
52673    ///
52674    /// ```text
52675    /// +---+---------------+
52676    /// | # | Operands      |
52677    /// +---+---------------+
52678    /// | 1 | Xmm, Mem, Imm |
52679    /// | 2 | Xmm, Xmm, Imm |
52680    /// | 3 | Ymm, Mem, Imm |
52681    /// | 4 | Ymm, Ymm, Imm |
52682    /// | 5 | Zmm, Mem, Imm |
52683    /// | 6 | Zmm, Zmm, Imm |
52684    /// +---+---------------+
52685    /// ```
52686    #[inline]
52687    pub fn vreduceph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52688    where
52689        Assembler<'a>: VreducephMaskzEmitter<A, B, C>,
52690    {
52691        <Self as VreducephMaskzEmitter<A, B, C>>::vreduceph_maskz(self, op0, op1, op2);
52692    }
52693    /// `VREDUCEPH_MASKZ_SAE`.
52694    ///
52695    /// Supported operand variants:
52696    ///
52697    /// ```text
52698    /// +---+---------------+
52699    /// | # | Operands      |
52700    /// +---+---------------+
52701    /// | 1 | Zmm, Zmm, Imm |
52702    /// +---+---------------+
52703    /// ```
52704    #[inline]
52705    pub fn vreduceph_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52706    where
52707        Assembler<'a>: VreducephMaskzSaeEmitter<A, B, C>,
52708    {
52709        <Self as VreducephMaskzSaeEmitter<A, B, C>>::vreduceph_maskz_sae(self, op0, op1, op2);
52710    }
52711    /// `VREDUCEPH_SAE`.
52712    ///
52713    /// Supported operand variants:
52714    ///
52715    /// ```text
52716    /// +---+---------------+
52717    /// | # | Operands      |
52718    /// +---+---------------+
52719    /// | 1 | Zmm, Zmm, Imm |
52720    /// +---+---------------+
52721    /// ```
52722    #[inline]
52723    pub fn vreduceph_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52724    where
52725        Assembler<'a>: VreducephSaeEmitter<A, B, C>,
52726    {
52727        <Self as VreducephSaeEmitter<A, B, C>>::vreduceph_sae(self, op0, op1, op2);
52728    }
52729    /// `VREDUCESH`.
52730    ///
52731    /// Supported operand variants:
52732    ///
52733    /// ```text
52734    /// +---+--------------------+
52735    /// | # | Operands           |
52736    /// +---+--------------------+
52737    /// | 1 | Xmm, Xmm, Mem, Imm |
52738    /// | 2 | Xmm, Xmm, Xmm, Imm |
52739    /// +---+--------------------+
52740    /// ```
52741    #[inline]
52742    pub fn vreducesh<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52743    where
52744        Assembler<'a>: VreduceshEmitter<A, B, C, D>,
52745    {
52746        <Self as VreduceshEmitter<A, B, C, D>>::vreducesh(self, op0, op1, op2, op3);
52747    }
52748    /// `VREDUCESH_MASK`.
52749    ///
52750    /// Supported operand variants:
52751    ///
52752    /// ```text
52753    /// +---+--------------------+
52754    /// | # | Operands           |
52755    /// +---+--------------------+
52756    /// | 1 | Xmm, Xmm, Mem, Imm |
52757    /// | 2 | Xmm, Xmm, Xmm, Imm |
52758    /// +---+--------------------+
52759    /// ```
52760    #[inline]
52761    pub fn vreducesh_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52762    where
52763        Assembler<'a>: VreduceshMaskEmitter<A, B, C, D>,
52764    {
52765        <Self as VreduceshMaskEmitter<A, B, C, D>>::vreducesh_mask(self, op0, op1, op2, op3);
52766    }
52767    /// `VREDUCESH_MASK_SAE`.
52768    ///
52769    /// Supported operand variants:
52770    ///
52771    /// ```text
52772    /// +---+--------------------+
52773    /// | # | Operands           |
52774    /// +---+--------------------+
52775    /// | 1 | Xmm, Xmm, Xmm, Imm |
52776    /// +---+--------------------+
52777    /// ```
52778    #[inline]
52779    pub fn vreducesh_mask_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52780    where
52781        Assembler<'a>: VreduceshMaskSaeEmitter<A, B, C, D>,
52782    {
52783        <Self as VreduceshMaskSaeEmitter<A, B, C, D>>::vreducesh_mask_sae(self, op0, op1, op2, op3);
52784    }
52785    /// `VREDUCESH_MASKZ`.
52786    ///
52787    /// Supported operand variants:
52788    ///
52789    /// ```text
52790    /// +---+--------------------+
52791    /// | # | Operands           |
52792    /// +---+--------------------+
52793    /// | 1 | Xmm, Xmm, Mem, Imm |
52794    /// | 2 | Xmm, Xmm, Xmm, Imm |
52795    /// +---+--------------------+
52796    /// ```
52797    #[inline]
52798    pub fn vreducesh_maskz<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52799    where
52800        Assembler<'a>: VreduceshMaskzEmitter<A, B, C, D>,
52801    {
52802        <Self as VreduceshMaskzEmitter<A, B, C, D>>::vreducesh_maskz(self, op0, op1, op2, op3);
52803    }
52804    /// `VREDUCESH_MASKZ_SAE`.
52805    ///
52806    /// Supported operand variants:
52807    ///
52808    /// ```text
52809    /// +---+--------------------+
52810    /// | # | Operands           |
52811    /// +---+--------------------+
52812    /// | 1 | Xmm, Xmm, Xmm, Imm |
52813    /// +---+--------------------+
52814    /// ```
52815    #[inline]
52816    pub fn vreducesh_maskz_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52817    where
52818        Assembler<'a>: VreduceshMaskzSaeEmitter<A, B, C, D>,
52819    {
52820        <Self as VreduceshMaskzSaeEmitter<A, B, C, D>>::vreducesh_maskz_sae(
52821            self, op0, op1, op2, op3,
52822        );
52823    }
52824    /// `VREDUCESH_SAE`.
52825    ///
52826    /// Supported operand variants:
52827    ///
52828    /// ```text
52829    /// +---+--------------------+
52830    /// | # | Operands           |
52831    /// +---+--------------------+
52832    /// | 1 | Xmm, Xmm, Xmm, Imm |
52833    /// +---+--------------------+
52834    /// ```
52835    #[inline]
52836    pub fn vreducesh_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52837    where
52838        Assembler<'a>: VreduceshSaeEmitter<A, B, C, D>,
52839    {
52840        <Self as VreduceshSaeEmitter<A, B, C, D>>::vreducesh_sae(self, op0, op1, op2, op3);
52841    }
52842    /// `VRNDSCALEPH`.
52843    ///
52844    /// Supported operand variants:
52845    ///
52846    /// ```text
52847    /// +---+---------------+
52848    /// | # | Operands      |
52849    /// +---+---------------+
52850    /// | 1 | Xmm, Mem, Imm |
52851    /// | 2 | Xmm, Xmm, Imm |
52852    /// | 3 | Ymm, Mem, Imm |
52853    /// | 4 | Ymm, Ymm, Imm |
52854    /// | 5 | Zmm, Mem, Imm |
52855    /// | 6 | Zmm, Zmm, Imm |
52856    /// +---+---------------+
52857    /// ```
52858    #[inline]
52859    pub fn vrndscaleph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52860    where
52861        Assembler<'a>: VrndscalephEmitter<A, B, C>,
52862    {
52863        <Self as VrndscalephEmitter<A, B, C>>::vrndscaleph(self, op0, op1, op2);
52864    }
52865    /// `VRNDSCALEPH_MASK`.
52866    ///
52867    /// Supported operand variants:
52868    ///
52869    /// ```text
52870    /// +---+---------------+
52871    /// | # | Operands      |
52872    /// +---+---------------+
52873    /// | 1 | Xmm, Mem, Imm |
52874    /// | 2 | Xmm, Xmm, Imm |
52875    /// | 3 | Ymm, Mem, Imm |
52876    /// | 4 | Ymm, Ymm, Imm |
52877    /// | 5 | Zmm, Mem, Imm |
52878    /// | 6 | Zmm, Zmm, Imm |
52879    /// +---+---------------+
52880    /// ```
52881    #[inline]
52882    pub fn vrndscaleph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52883    where
52884        Assembler<'a>: VrndscalephMaskEmitter<A, B, C>,
52885    {
52886        <Self as VrndscalephMaskEmitter<A, B, C>>::vrndscaleph_mask(self, op0, op1, op2);
52887    }
52888    /// `VRNDSCALEPH_MASK_SAE`.
52889    ///
52890    /// Supported operand variants:
52891    ///
52892    /// ```text
52893    /// +---+---------------+
52894    /// | # | Operands      |
52895    /// +---+---------------+
52896    /// | 1 | Zmm, Zmm, Imm |
52897    /// +---+---------------+
52898    /// ```
52899    #[inline]
52900    pub fn vrndscaleph_mask_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52901    where
52902        Assembler<'a>: VrndscalephMaskSaeEmitter<A, B, C>,
52903    {
52904        <Self as VrndscalephMaskSaeEmitter<A, B, C>>::vrndscaleph_mask_sae(self, op0, op1, op2);
52905    }
52906    /// `VRNDSCALEPH_MASKZ`.
52907    ///
52908    /// Supported operand variants:
52909    ///
52910    /// ```text
52911    /// +---+---------------+
52912    /// | # | Operands      |
52913    /// +---+---------------+
52914    /// | 1 | Xmm, Mem, Imm |
52915    /// | 2 | Xmm, Xmm, Imm |
52916    /// | 3 | Ymm, Mem, Imm |
52917    /// | 4 | Ymm, Ymm, Imm |
52918    /// | 5 | Zmm, Mem, Imm |
52919    /// | 6 | Zmm, Zmm, Imm |
52920    /// +---+---------------+
52921    /// ```
52922    #[inline]
52923    pub fn vrndscaleph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52924    where
52925        Assembler<'a>: VrndscalephMaskzEmitter<A, B, C>,
52926    {
52927        <Self as VrndscalephMaskzEmitter<A, B, C>>::vrndscaleph_maskz(self, op0, op1, op2);
52928    }
52929    /// `VRNDSCALEPH_MASKZ_SAE`.
52930    ///
52931    /// Supported operand variants:
52932    ///
52933    /// ```text
52934    /// +---+---------------+
52935    /// | # | Operands      |
52936    /// +---+---------------+
52937    /// | 1 | Zmm, Zmm, Imm |
52938    /// +---+---------------+
52939    /// ```
52940    #[inline]
52941    pub fn vrndscaleph_maskz_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52942    where
52943        Assembler<'a>: VrndscalephMaskzSaeEmitter<A, B, C>,
52944    {
52945        <Self as VrndscalephMaskzSaeEmitter<A, B, C>>::vrndscaleph_maskz_sae(self, op0, op1, op2);
52946    }
52947    /// `VRNDSCALEPH_SAE`.
52948    ///
52949    /// Supported operand variants:
52950    ///
52951    /// ```text
52952    /// +---+---------------+
52953    /// | # | Operands      |
52954    /// +---+---------------+
52955    /// | 1 | Zmm, Zmm, Imm |
52956    /// +---+---------------+
52957    /// ```
52958    #[inline]
52959    pub fn vrndscaleph_sae<A, B, C>(&mut self, op0: A, op1: B, op2: C)
52960    where
52961        Assembler<'a>: VrndscalephSaeEmitter<A, B, C>,
52962    {
52963        <Self as VrndscalephSaeEmitter<A, B, C>>::vrndscaleph_sae(self, op0, op1, op2);
52964    }
52965    /// `VRNDSCALESH`.
52966    ///
52967    /// Supported operand variants:
52968    ///
52969    /// ```text
52970    /// +---+--------------------+
52971    /// | # | Operands           |
52972    /// +---+--------------------+
52973    /// | 1 | Xmm, Xmm, Mem, Imm |
52974    /// | 2 | Xmm, Xmm, Xmm, Imm |
52975    /// +---+--------------------+
52976    /// ```
52977    #[inline]
52978    pub fn vrndscalesh<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52979    where
52980        Assembler<'a>: VrndscaleshEmitter<A, B, C, D>,
52981    {
52982        <Self as VrndscaleshEmitter<A, B, C, D>>::vrndscalesh(self, op0, op1, op2, op3);
52983    }
52984    /// `VRNDSCALESH_MASK`.
52985    ///
52986    /// Supported operand variants:
52987    ///
52988    /// ```text
52989    /// +---+--------------------+
52990    /// | # | Operands           |
52991    /// +---+--------------------+
52992    /// | 1 | Xmm, Xmm, Mem, Imm |
52993    /// | 2 | Xmm, Xmm, Xmm, Imm |
52994    /// +---+--------------------+
52995    /// ```
52996    #[inline]
52997    pub fn vrndscalesh_mask<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
52998    where
52999        Assembler<'a>: VrndscaleshMaskEmitter<A, B, C, D>,
53000    {
53001        <Self as VrndscaleshMaskEmitter<A, B, C, D>>::vrndscalesh_mask(self, op0, op1, op2, op3);
53002    }
53003    /// `VRNDSCALESH_MASK_SAE`.
53004    ///
53005    /// Supported operand variants:
53006    ///
53007    /// ```text
53008    /// +---+--------------------+
53009    /// | # | Operands           |
53010    /// +---+--------------------+
53011    /// | 1 | Xmm, Xmm, Xmm, Imm |
53012    /// +---+--------------------+
53013    /// ```
53014    #[inline]
53015    pub fn vrndscalesh_mask_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
53016    where
53017        Assembler<'a>: VrndscaleshMaskSaeEmitter<A, B, C, D>,
53018    {
53019        <Self as VrndscaleshMaskSaeEmitter<A, B, C, D>>::vrndscalesh_mask_sae(
53020            self, op0, op1, op2, op3,
53021        );
53022    }
53023    /// `VRNDSCALESH_MASKZ`.
53024    ///
53025    /// Supported operand variants:
53026    ///
53027    /// ```text
53028    /// +---+--------------------+
53029    /// | # | Operands           |
53030    /// +---+--------------------+
53031    /// | 1 | Xmm, Xmm, Mem, Imm |
53032    /// | 2 | Xmm, Xmm, Xmm, Imm |
53033    /// +---+--------------------+
53034    /// ```
53035    #[inline]
53036    pub fn vrndscalesh_maskz<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
53037    where
53038        Assembler<'a>: VrndscaleshMaskzEmitter<A, B, C, D>,
53039    {
53040        <Self as VrndscaleshMaskzEmitter<A, B, C, D>>::vrndscalesh_maskz(self, op0, op1, op2, op3);
53041    }
53042    /// `VRNDSCALESH_MASKZ_SAE`.
53043    ///
53044    /// Supported operand variants:
53045    ///
53046    /// ```text
53047    /// +---+--------------------+
53048    /// | # | Operands           |
53049    /// +---+--------------------+
53050    /// | 1 | Xmm, Xmm, Xmm, Imm |
53051    /// +---+--------------------+
53052    /// ```
53053    #[inline]
53054    pub fn vrndscalesh_maskz_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
53055    where
53056        Assembler<'a>: VrndscaleshMaskzSaeEmitter<A, B, C, D>,
53057    {
53058        <Self as VrndscaleshMaskzSaeEmitter<A, B, C, D>>::vrndscalesh_maskz_sae(
53059            self, op0, op1, op2, op3,
53060        );
53061    }
53062    /// `VRNDSCALESH_SAE`.
53063    ///
53064    /// Supported operand variants:
53065    ///
53066    /// ```text
53067    /// +---+--------------------+
53068    /// | # | Operands           |
53069    /// +---+--------------------+
53070    /// | 1 | Xmm, Xmm, Xmm, Imm |
53071    /// +---+--------------------+
53072    /// ```
53073    #[inline]
53074    pub fn vrndscalesh_sae<A, B, C, D>(&mut self, op0: A, op1: B, op2: C, op3: D)
53075    where
53076        Assembler<'a>: VrndscaleshSaeEmitter<A, B, C, D>,
53077    {
53078        <Self as VrndscaleshSaeEmitter<A, B, C, D>>::vrndscalesh_sae(self, op0, op1, op2, op3);
53079    }
53080    /// `VRSQRTPH`.
53081    ///
53082    /// Supported operand variants:
53083    ///
53084    /// ```text
53085    /// +---+----------+
53086    /// | # | Operands |
53087    /// +---+----------+
53088    /// | 1 | Xmm, Mem |
53089    /// | 2 | Xmm, Xmm |
53090    /// | 3 | Ymm, Mem |
53091    /// | 4 | Ymm, Ymm |
53092    /// | 5 | Zmm, Mem |
53093    /// | 6 | Zmm, Zmm |
53094    /// +---+----------+
53095    /// ```
53096    #[inline]
53097    pub fn vrsqrtph<A, B>(&mut self, op0: A, op1: B)
53098    where
53099        Assembler<'a>: VrsqrtphEmitter<A, B>,
53100    {
53101        <Self as VrsqrtphEmitter<A, B>>::vrsqrtph(self, op0, op1);
53102    }
53103    /// `VRSQRTPH_MASK`.
53104    ///
53105    /// Supported operand variants:
53106    ///
53107    /// ```text
53108    /// +---+----------+
53109    /// | # | Operands |
53110    /// +---+----------+
53111    /// | 1 | Xmm, Mem |
53112    /// | 2 | Xmm, Xmm |
53113    /// | 3 | Ymm, Mem |
53114    /// | 4 | Ymm, Ymm |
53115    /// | 5 | Zmm, Mem |
53116    /// | 6 | Zmm, Zmm |
53117    /// +---+----------+
53118    /// ```
53119    #[inline]
53120    pub fn vrsqrtph_mask<A, B>(&mut self, op0: A, op1: B)
53121    where
53122        Assembler<'a>: VrsqrtphMaskEmitter<A, B>,
53123    {
53124        <Self as VrsqrtphMaskEmitter<A, B>>::vrsqrtph_mask(self, op0, op1);
53125    }
53126    /// `VRSQRTPH_MASKZ`.
53127    ///
53128    /// Supported operand variants:
53129    ///
53130    /// ```text
53131    /// +---+----------+
53132    /// | # | Operands |
53133    /// +---+----------+
53134    /// | 1 | Xmm, Mem |
53135    /// | 2 | Xmm, Xmm |
53136    /// | 3 | Ymm, Mem |
53137    /// | 4 | Ymm, Ymm |
53138    /// | 5 | Zmm, Mem |
53139    /// | 6 | Zmm, Zmm |
53140    /// +---+----------+
53141    /// ```
53142    #[inline]
53143    pub fn vrsqrtph_maskz<A, B>(&mut self, op0: A, op1: B)
53144    where
53145        Assembler<'a>: VrsqrtphMaskzEmitter<A, B>,
53146    {
53147        <Self as VrsqrtphMaskzEmitter<A, B>>::vrsqrtph_maskz(self, op0, op1);
53148    }
53149    /// `VRSQRTSH`.
53150    ///
53151    /// Supported operand variants:
53152    ///
53153    /// ```text
53154    /// +---+---------------+
53155    /// | # | Operands      |
53156    /// +---+---------------+
53157    /// | 1 | Xmm, Xmm, Mem |
53158    /// | 2 | Xmm, Xmm, Xmm |
53159    /// +---+---------------+
53160    /// ```
53161    #[inline]
53162    pub fn vrsqrtsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53163    where
53164        Assembler<'a>: VrsqrtshEmitter<A, B, C>,
53165    {
53166        <Self as VrsqrtshEmitter<A, B, C>>::vrsqrtsh(self, op0, op1, op2);
53167    }
53168    /// `VRSQRTSH_MASK`.
53169    ///
53170    /// Supported operand variants:
53171    ///
53172    /// ```text
53173    /// +---+---------------+
53174    /// | # | Operands      |
53175    /// +---+---------------+
53176    /// | 1 | Xmm, Xmm, Mem |
53177    /// | 2 | Xmm, Xmm, Xmm |
53178    /// +---+---------------+
53179    /// ```
53180    #[inline]
53181    pub fn vrsqrtsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53182    where
53183        Assembler<'a>: VrsqrtshMaskEmitter<A, B, C>,
53184    {
53185        <Self as VrsqrtshMaskEmitter<A, B, C>>::vrsqrtsh_mask(self, op0, op1, op2);
53186    }
53187    /// `VRSQRTSH_MASKZ`.
53188    ///
53189    /// Supported operand variants:
53190    ///
53191    /// ```text
53192    /// +---+---------------+
53193    /// | # | Operands      |
53194    /// +---+---------------+
53195    /// | 1 | Xmm, Xmm, Mem |
53196    /// | 2 | Xmm, Xmm, Xmm |
53197    /// +---+---------------+
53198    /// ```
53199    #[inline]
53200    pub fn vrsqrtsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53201    where
53202        Assembler<'a>: VrsqrtshMaskzEmitter<A, B, C>,
53203    {
53204        <Self as VrsqrtshMaskzEmitter<A, B, C>>::vrsqrtsh_maskz(self, op0, op1, op2);
53205    }
53206    /// `VSCALEFPH`.
53207    ///
53208    /// Supported operand variants:
53209    ///
53210    /// ```text
53211    /// +---+---------------+
53212    /// | # | Operands      |
53213    /// +---+---------------+
53214    /// | 1 | Xmm, Xmm, Mem |
53215    /// | 2 | Xmm, Xmm, Xmm |
53216    /// | 3 | Ymm, Ymm, Mem |
53217    /// | 4 | Ymm, Ymm, Ymm |
53218    /// | 5 | Zmm, Zmm, Mem |
53219    /// | 6 | Zmm, Zmm, Zmm |
53220    /// +---+---------------+
53221    /// ```
53222    #[inline]
53223    pub fn vscalefph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53224    where
53225        Assembler<'a>: VscalefphEmitter<A, B, C>,
53226    {
53227        <Self as VscalefphEmitter<A, B, C>>::vscalefph(self, op0, op1, op2);
53228    }
53229    /// `VSCALEFPH_ER`.
53230    ///
53231    /// Supported operand variants:
53232    ///
53233    /// ```text
53234    /// +---+---------------+
53235    /// | # | Operands      |
53236    /// +---+---------------+
53237    /// | 1 | Zmm, Zmm, Zmm |
53238    /// +---+---------------+
53239    /// ```
53240    #[inline]
53241    pub fn vscalefph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53242    where
53243        Assembler<'a>: VscalefphErEmitter<A, B, C>,
53244    {
53245        <Self as VscalefphErEmitter<A, B, C>>::vscalefph_er(self, op0, op1, op2);
53246    }
53247    /// `VSCALEFPH_MASK`.
53248    ///
53249    /// Supported operand variants:
53250    ///
53251    /// ```text
53252    /// +---+---------------+
53253    /// | # | Operands      |
53254    /// +---+---------------+
53255    /// | 1 | Xmm, Xmm, Mem |
53256    /// | 2 | Xmm, Xmm, Xmm |
53257    /// | 3 | Ymm, Ymm, Mem |
53258    /// | 4 | Ymm, Ymm, Ymm |
53259    /// | 5 | Zmm, Zmm, Mem |
53260    /// | 6 | Zmm, Zmm, Zmm |
53261    /// +---+---------------+
53262    /// ```
53263    #[inline]
53264    pub fn vscalefph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53265    where
53266        Assembler<'a>: VscalefphMaskEmitter<A, B, C>,
53267    {
53268        <Self as VscalefphMaskEmitter<A, B, C>>::vscalefph_mask(self, op0, op1, op2);
53269    }
53270    /// `VSCALEFPH_MASK_ER`.
53271    ///
53272    /// Supported operand variants:
53273    ///
53274    /// ```text
53275    /// +---+---------------+
53276    /// | # | Operands      |
53277    /// +---+---------------+
53278    /// | 1 | Zmm, Zmm, Zmm |
53279    /// +---+---------------+
53280    /// ```
53281    #[inline]
53282    pub fn vscalefph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53283    where
53284        Assembler<'a>: VscalefphMaskErEmitter<A, B, C>,
53285    {
53286        <Self as VscalefphMaskErEmitter<A, B, C>>::vscalefph_mask_er(self, op0, op1, op2);
53287    }
53288    /// `VSCALEFPH_MASKZ`.
53289    ///
53290    /// Supported operand variants:
53291    ///
53292    /// ```text
53293    /// +---+---------------+
53294    /// | # | Operands      |
53295    /// +---+---------------+
53296    /// | 1 | Xmm, Xmm, Mem |
53297    /// | 2 | Xmm, Xmm, Xmm |
53298    /// | 3 | Ymm, Ymm, Mem |
53299    /// | 4 | Ymm, Ymm, Ymm |
53300    /// | 5 | Zmm, Zmm, Mem |
53301    /// | 6 | Zmm, Zmm, Zmm |
53302    /// +---+---------------+
53303    /// ```
53304    #[inline]
53305    pub fn vscalefph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53306    where
53307        Assembler<'a>: VscalefphMaskzEmitter<A, B, C>,
53308    {
53309        <Self as VscalefphMaskzEmitter<A, B, C>>::vscalefph_maskz(self, op0, op1, op2);
53310    }
53311    /// `VSCALEFPH_MASKZ_ER`.
53312    ///
53313    /// Supported operand variants:
53314    ///
53315    /// ```text
53316    /// +---+---------------+
53317    /// | # | Operands      |
53318    /// +---+---------------+
53319    /// | 1 | Zmm, Zmm, Zmm |
53320    /// +---+---------------+
53321    /// ```
53322    #[inline]
53323    pub fn vscalefph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53324    where
53325        Assembler<'a>: VscalefphMaskzErEmitter<A, B, C>,
53326    {
53327        <Self as VscalefphMaskzErEmitter<A, B, C>>::vscalefph_maskz_er(self, op0, op1, op2);
53328    }
53329    /// `VSCALEFSH`.
53330    ///
53331    /// Supported operand variants:
53332    ///
53333    /// ```text
53334    /// +---+---------------+
53335    /// | # | Operands      |
53336    /// +---+---------------+
53337    /// | 1 | Xmm, Xmm, Mem |
53338    /// | 2 | Xmm, Xmm, Xmm |
53339    /// +---+---------------+
53340    /// ```
53341    #[inline]
53342    pub fn vscalefsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53343    where
53344        Assembler<'a>: VscalefshEmitter<A, B, C>,
53345    {
53346        <Self as VscalefshEmitter<A, B, C>>::vscalefsh(self, op0, op1, op2);
53347    }
53348    /// `VSCALEFSH_ER`.
53349    ///
53350    /// Supported operand variants:
53351    ///
53352    /// ```text
53353    /// +---+---------------+
53354    /// | # | Operands      |
53355    /// +---+---------------+
53356    /// | 1 | Xmm, Xmm, Xmm |
53357    /// +---+---------------+
53358    /// ```
53359    #[inline]
53360    pub fn vscalefsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53361    where
53362        Assembler<'a>: VscalefshErEmitter<A, B, C>,
53363    {
53364        <Self as VscalefshErEmitter<A, B, C>>::vscalefsh_er(self, op0, op1, op2);
53365    }
53366    /// `VSCALEFSH_MASK`.
53367    ///
53368    /// Supported operand variants:
53369    ///
53370    /// ```text
53371    /// +---+---------------+
53372    /// | # | Operands      |
53373    /// +---+---------------+
53374    /// | 1 | Xmm, Xmm, Mem |
53375    /// | 2 | Xmm, Xmm, Xmm |
53376    /// +---+---------------+
53377    /// ```
53378    #[inline]
53379    pub fn vscalefsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53380    where
53381        Assembler<'a>: VscalefshMaskEmitter<A, B, C>,
53382    {
53383        <Self as VscalefshMaskEmitter<A, B, C>>::vscalefsh_mask(self, op0, op1, op2);
53384    }
53385    /// `VSCALEFSH_MASK_ER`.
53386    ///
53387    /// Supported operand variants:
53388    ///
53389    /// ```text
53390    /// +---+---------------+
53391    /// | # | Operands      |
53392    /// +---+---------------+
53393    /// | 1 | Xmm, Xmm, Xmm |
53394    /// +---+---------------+
53395    /// ```
53396    #[inline]
53397    pub fn vscalefsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53398    where
53399        Assembler<'a>: VscalefshMaskErEmitter<A, B, C>,
53400    {
53401        <Self as VscalefshMaskErEmitter<A, B, C>>::vscalefsh_mask_er(self, op0, op1, op2);
53402    }
53403    /// `VSCALEFSH_MASKZ`.
53404    ///
53405    /// Supported operand variants:
53406    ///
53407    /// ```text
53408    /// +---+---------------+
53409    /// | # | Operands      |
53410    /// +---+---------------+
53411    /// | 1 | Xmm, Xmm, Mem |
53412    /// | 2 | Xmm, Xmm, Xmm |
53413    /// +---+---------------+
53414    /// ```
53415    #[inline]
53416    pub fn vscalefsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53417    where
53418        Assembler<'a>: VscalefshMaskzEmitter<A, B, C>,
53419    {
53420        <Self as VscalefshMaskzEmitter<A, B, C>>::vscalefsh_maskz(self, op0, op1, op2);
53421    }
53422    /// `VSCALEFSH_MASKZ_ER`.
53423    ///
53424    /// Supported operand variants:
53425    ///
53426    /// ```text
53427    /// +---+---------------+
53428    /// | # | Operands      |
53429    /// +---+---------------+
53430    /// | 1 | Xmm, Xmm, Xmm |
53431    /// +---+---------------+
53432    /// ```
53433    #[inline]
53434    pub fn vscalefsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53435    where
53436        Assembler<'a>: VscalefshMaskzErEmitter<A, B, C>,
53437    {
53438        <Self as VscalefshMaskzErEmitter<A, B, C>>::vscalefsh_maskz_er(self, op0, op1, op2);
53439    }
53440    /// `VSM4KEY4`.
53441    ///
53442    /// Supported operand variants:
53443    ///
53444    /// ```text
53445    /// +---+---------------+
53446    /// | # | Operands      |
53447    /// +---+---------------+
53448    /// | 1 | Xmm, Xmm, Mem |
53449    /// | 2 | Xmm, Xmm, Xmm |
53450    /// | 3 | Ymm, Ymm, Mem |
53451    /// | 4 | Ymm, Ymm, Ymm |
53452    /// | 5 | Zmm, Zmm, Mem |
53453    /// | 6 | Zmm, Zmm, Zmm |
53454    /// +---+---------------+
53455    /// ```
53456    #[inline]
53457    pub fn vsm4key4<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53458    where
53459        Assembler<'a>: Vsm4key4Emitter<A, B, C>,
53460    {
53461        <Self as Vsm4key4Emitter<A, B, C>>::vsm4key4(self, op0, op1, op2);
53462    }
53463    /// `VSM4RNDS4`.
53464    ///
53465    /// Supported operand variants:
53466    ///
53467    /// ```text
53468    /// +---+---------------+
53469    /// | # | Operands      |
53470    /// +---+---------------+
53471    /// | 1 | Xmm, Xmm, Mem |
53472    /// | 2 | Xmm, Xmm, Xmm |
53473    /// | 3 | Ymm, Ymm, Mem |
53474    /// | 4 | Ymm, Ymm, Ymm |
53475    /// | 5 | Zmm, Zmm, Mem |
53476    /// | 6 | Zmm, Zmm, Zmm |
53477    /// +---+---------------+
53478    /// ```
53479    #[inline]
53480    pub fn vsm4rnds4<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53481    where
53482        Assembler<'a>: Vsm4rnds4Emitter<A, B, C>,
53483    {
53484        <Self as Vsm4rnds4Emitter<A, B, C>>::vsm4rnds4(self, op0, op1, op2);
53485    }
53486    /// `VSQRTPH`.
53487    ///
53488    /// Supported operand variants:
53489    ///
53490    /// ```text
53491    /// +---+----------+
53492    /// | # | Operands |
53493    /// +---+----------+
53494    /// | 1 | Xmm, Mem |
53495    /// | 2 | Xmm, Xmm |
53496    /// | 3 | Ymm, Mem |
53497    /// | 4 | Ymm, Ymm |
53498    /// | 5 | Zmm, Mem |
53499    /// | 6 | Zmm, Zmm |
53500    /// +---+----------+
53501    /// ```
53502    #[inline]
53503    pub fn vsqrtph<A, B>(&mut self, op0: A, op1: B)
53504    where
53505        Assembler<'a>: VsqrtphEmitter<A, B>,
53506    {
53507        <Self as VsqrtphEmitter<A, B>>::vsqrtph(self, op0, op1);
53508    }
53509    /// `VSQRTPH_ER`.
53510    ///
53511    /// Supported operand variants:
53512    ///
53513    /// ```text
53514    /// +---+----------+
53515    /// | # | Operands |
53516    /// +---+----------+
53517    /// | 1 | Zmm, Zmm |
53518    /// +---+----------+
53519    /// ```
53520    #[inline]
53521    pub fn vsqrtph_er<A, B>(&mut self, op0: A, op1: B)
53522    where
53523        Assembler<'a>: VsqrtphErEmitter<A, B>,
53524    {
53525        <Self as VsqrtphErEmitter<A, B>>::vsqrtph_er(self, op0, op1);
53526    }
53527    /// `VSQRTPH_MASK`.
53528    ///
53529    /// Supported operand variants:
53530    ///
53531    /// ```text
53532    /// +---+----------+
53533    /// | # | Operands |
53534    /// +---+----------+
53535    /// | 1 | Xmm, Mem |
53536    /// | 2 | Xmm, Xmm |
53537    /// | 3 | Ymm, Mem |
53538    /// | 4 | Ymm, Ymm |
53539    /// | 5 | Zmm, Mem |
53540    /// | 6 | Zmm, Zmm |
53541    /// +---+----------+
53542    /// ```
53543    #[inline]
53544    pub fn vsqrtph_mask<A, B>(&mut self, op0: A, op1: B)
53545    where
53546        Assembler<'a>: VsqrtphMaskEmitter<A, B>,
53547    {
53548        <Self as VsqrtphMaskEmitter<A, B>>::vsqrtph_mask(self, op0, op1);
53549    }
53550    /// `VSQRTPH_MASK_ER`.
53551    ///
53552    /// Supported operand variants:
53553    ///
53554    /// ```text
53555    /// +---+----------+
53556    /// | # | Operands |
53557    /// +---+----------+
53558    /// | 1 | Zmm, Zmm |
53559    /// +---+----------+
53560    /// ```
53561    #[inline]
53562    pub fn vsqrtph_mask_er<A, B>(&mut self, op0: A, op1: B)
53563    where
53564        Assembler<'a>: VsqrtphMaskErEmitter<A, B>,
53565    {
53566        <Self as VsqrtphMaskErEmitter<A, B>>::vsqrtph_mask_er(self, op0, op1);
53567    }
53568    /// `VSQRTPH_MASKZ`.
53569    ///
53570    /// Supported operand variants:
53571    ///
53572    /// ```text
53573    /// +---+----------+
53574    /// | # | Operands |
53575    /// +---+----------+
53576    /// | 1 | Xmm, Mem |
53577    /// | 2 | Xmm, Xmm |
53578    /// | 3 | Ymm, Mem |
53579    /// | 4 | Ymm, Ymm |
53580    /// | 5 | Zmm, Mem |
53581    /// | 6 | Zmm, Zmm |
53582    /// +---+----------+
53583    /// ```
53584    #[inline]
53585    pub fn vsqrtph_maskz<A, B>(&mut self, op0: A, op1: B)
53586    where
53587        Assembler<'a>: VsqrtphMaskzEmitter<A, B>,
53588    {
53589        <Self as VsqrtphMaskzEmitter<A, B>>::vsqrtph_maskz(self, op0, op1);
53590    }
53591    /// `VSQRTPH_MASKZ_ER`.
53592    ///
53593    /// Supported operand variants:
53594    ///
53595    /// ```text
53596    /// +---+----------+
53597    /// | # | Operands |
53598    /// +---+----------+
53599    /// | 1 | Zmm, Zmm |
53600    /// +---+----------+
53601    /// ```
53602    #[inline]
53603    pub fn vsqrtph_maskz_er<A, B>(&mut self, op0: A, op1: B)
53604    where
53605        Assembler<'a>: VsqrtphMaskzErEmitter<A, B>,
53606    {
53607        <Self as VsqrtphMaskzErEmitter<A, B>>::vsqrtph_maskz_er(self, op0, op1);
53608    }
53609    /// `VSQRTSH`.
53610    ///
53611    /// Supported operand variants:
53612    ///
53613    /// ```text
53614    /// +---+---------------+
53615    /// | # | Operands      |
53616    /// +---+---------------+
53617    /// | 1 | Xmm, Xmm, Mem |
53618    /// | 2 | Xmm, Xmm, Xmm |
53619    /// +---+---------------+
53620    /// ```
53621    #[inline]
53622    pub fn vsqrtsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53623    where
53624        Assembler<'a>: VsqrtshEmitter<A, B, C>,
53625    {
53626        <Self as VsqrtshEmitter<A, B, C>>::vsqrtsh(self, op0, op1, op2);
53627    }
53628    /// `VSQRTSH_ER`.
53629    ///
53630    /// Supported operand variants:
53631    ///
53632    /// ```text
53633    /// +---+---------------+
53634    /// | # | Operands      |
53635    /// +---+---------------+
53636    /// | 1 | Xmm, Xmm, Xmm |
53637    /// +---+---------------+
53638    /// ```
53639    #[inline]
53640    pub fn vsqrtsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53641    where
53642        Assembler<'a>: VsqrtshErEmitter<A, B, C>,
53643    {
53644        <Self as VsqrtshErEmitter<A, B, C>>::vsqrtsh_er(self, op0, op1, op2);
53645    }
53646    /// `VSQRTSH_MASK`.
53647    ///
53648    /// Supported operand variants:
53649    ///
53650    /// ```text
53651    /// +---+---------------+
53652    /// | # | Operands      |
53653    /// +---+---------------+
53654    /// | 1 | Xmm, Xmm, Mem |
53655    /// | 2 | Xmm, Xmm, Xmm |
53656    /// +---+---------------+
53657    /// ```
53658    #[inline]
53659    pub fn vsqrtsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53660    where
53661        Assembler<'a>: VsqrtshMaskEmitter<A, B, C>,
53662    {
53663        <Self as VsqrtshMaskEmitter<A, B, C>>::vsqrtsh_mask(self, op0, op1, op2);
53664    }
53665    /// `VSQRTSH_MASK_ER`.
53666    ///
53667    /// Supported operand variants:
53668    ///
53669    /// ```text
53670    /// +---+---------------+
53671    /// | # | Operands      |
53672    /// +---+---------------+
53673    /// | 1 | Xmm, Xmm, Xmm |
53674    /// +---+---------------+
53675    /// ```
53676    #[inline]
53677    pub fn vsqrtsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53678    where
53679        Assembler<'a>: VsqrtshMaskErEmitter<A, B, C>,
53680    {
53681        <Self as VsqrtshMaskErEmitter<A, B, C>>::vsqrtsh_mask_er(self, op0, op1, op2);
53682    }
53683    /// `VSQRTSH_MASKZ`.
53684    ///
53685    /// Supported operand variants:
53686    ///
53687    /// ```text
53688    /// +---+---------------+
53689    /// | # | Operands      |
53690    /// +---+---------------+
53691    /// | 1 | Xmm, Xmm, Mem |
53692    /// | 2 | Xmm, Xmm, Xmm |
53693    /// +---+---------------+
53694    /// ```
53695    #[inline]
53696    pub fn vsqrtsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53697    where
53698        Assembler<'a>: VsqrtshMaskzEmitter<A, B, C>,
53699    {
53700        <Self as VsqrtshMaskzEmitter<A, B, C>>::vsqrtsh_maskz(self, op0, op1, op2);
53701    }
53702    /// `VSQRTSH_MASKZ_ER`.
53703    ///
53704    /// Supported operand variants:
53705    ///
53706    /// ```text
53707    /// +---+---------------+
53708    /// | # | Operands      |
53709    /// +---+---------------+
53710    /// | 1 | Xmm, Xmm, Xmm |
53711    /// +---+---------------+
53712    /// ```
53713    #[inline]
53714    pub fn vsqrtsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53715    where
53716        Assembler<'a>: VsqrtshMaskzErEmitter<A, B, C>,
53717    {
53718        <Self as VsqrtshMaskzErEmitter<A, B, C>>::vsqrtsh_maskz_er(self, op0, op1, op2);
53719    }
53720    /// `VSUBPH`.
53721    ///
53722    /// Supported operand variants:
53723    ///
53724    /// ```text
53725    /// +---+---------------+
53726    /// | # | Operands      |
53727    /// +---+---------------+
53728    /// | 1 | Xmm, Xmm, Mem |
53729    /// | 2 | Xmm, Xmm, Xmm |
53730    /// | 3 | Ymm, Ymm, Mem |
53731    /// | 4 | Ymm, Ymm, Ymm |
53732    /// | 5 | Zmm, Zmm, Mem |
53733    /// | 6 | Zmm, Zmm, Zmm |
53734    /// +---+---------------+
53735    /// ```
53736    #[inline]
53737    pub fn vsubph<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53738    where
53739        Assembler<'a>: VsubphEmitter<A, B, C>,
53740    {
53741        <Self as VsubphEmitter<A, B, C>>::vsubph(self, op0, op1, op2);
53742    }
53743    /// `VSUBPH_ER`.
53744    ///
53745    /// Supported operand variants:
53746    ///
53747    /// ```text
53748    /// +---+---------------+
53749    /// | # | Operands      |
53750    /// +---+---------------+
53751    /// | 1 | Zmm, Zmm, Zmm |
53752    /// +---+---------------+
53753    /// ```
53754    #[inline]
53755    pub fn vsubph_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53756    where
53757        Assembler<'a>: VsubphErEmitter<A, B, C>,
53758    {
53759        <Self as VsubphErEmitter<A, B, C>>::vsubph_er(self, op0, op1, op2);
53760    }
53761    /// `VSUBPH_MASK`.
53762    ///
53763    /// Supported operand variants:
53764    ///
53765    /// ```text
53766    /// +---+---------------+
53767    /// | # | Operands      |
53768    /// +---+---------------+
53769    /// | 1 | Xmm, Xmm, Mem |
53770    /// | 2 | Xmm, Xmm, Xmm |
53771    /// | 3 | Ymm, Ymm, Mem |
53772    /// | 4 | Ymm, Ymm, Ymm |
53773    /// | 5 | Zmm, Zmm, Mem |
53774    /// | 6 | Zmm, Zmm, Zmm |
53775    /// +---+---------------+
53776    /// ```
53777    #[inline]
53778    pub fn vsubph_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53779    where
53780        Assembler<'a>: VsubphMaskEmitter<A, B, C>,
53781    {
53782        <Self as VsubphMaskEmitter<A, B, C>>::vsubph_mask(self, op0, op1, op2);
53783    }
53784    /// `VSUBPH_MASK_ER`.
53785    ///
53786    /// Supported operand variants:
53787    ///
53788    /// ```text
53789    /// +---+---------------+
53790    /// | # | Operands      |
53791    /// +---+---------------+
53792    /// | 1 | Zmm, Zmm, Zmm |
53793    /// +---+---------------+
53794    /// ```
53795    #[inline]
53796    pub fn vsubph_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53797    where
53798        Assembler<'a>: VsubphMaskErEmitter<A, B, C>,
53799    {
53800        <Self as VsubphMaskErEmitter<A, B, C>>::vsubph_mask_er(self, op0, op1, op2);
53801    }
53802    /// `VSUBPH_MASKZ`.
53803    ///
53804    /// Supported operand variants:
53805    ///
53806    /// ```text
53807    /// +---+---------------+
53808    /// | # | Operands      |
53809    /// +---+---------------+
53810    /// | 1 | Xmm, Xmm, Mem |
53811    /// | 2 | Xmm, Xmm, Xmm |
53812    /// | 3 | Ymm, Ymm, Mem |
53813    /// | 4 | Ymm, Ymm, Ymm |
53814    /// | 5 | Zmm, Zmm, Mem |
53815    /// | 6 | Zmm, Zmm, Zmm |
53816    /// +---+---------------+
53817    /// ```
53818    #[inline]
53819    pub fn vsubph_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53820    where
53821        Assembler<'a>: VsubphMaskzEmitter<A, B, C>,
53822    {
53823        <Self as VsubphMaskzEmitter<A, B, C>>::vsubph_maskz(self, op0, op1, op2);
53824    }
53825    /// `VSUBPH_MASKZ_ER`.
53826    ///
53827    /// Supported operand variants:
53828    ///
53829    /// ```text
53830    /// +---+---------------+
53831    /// | # | Operands      |
53832    /// +---+---------------+
53833    /// | 1 | Zmm, Zmm, Zmm |
53834    /// +---+---------------+
53835    /// ```
53836    #[inline]
53837    pub fn vsubph_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53838    where
53839        Assembler<'a>: VsubphMaskzErEmitter<A, B, C>,
53840    {
53841        <Self as VsubphMaskzErEmitter<A, B, C>>::vsubph_maskz_er(self, op0, op1, op2);
53842    }
53843    /// `VSUBSH`.
53844    ///
53845    /// Supported operand variants:
53846    ///
53847    /// ```text
53848    /// +---+---------------+
53849    /// | # | Operands      |
53850    /// +---+---------------+
53851    /// | 1 | Xmm, Xmm, Mem |
53852    /// | 2 | Xmm, Xmm, Xmm |
53853    /// +---+---------------+
53854    /// ```
53855    #[inline]
53856    pub fn vsubsh<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53857    where
53858        Assembler<'a>: VsubshEmitter<A, B, C>,
53859    {
53860        <Self as VsubshEmitter<A, B, C>>::vsubsh(self, op0, op1, op2);
53861    }
53862    /// `VSUBSH_ER`.
53863    ///
53864    /// Supported operand variants:
53865    ///
53866    /// ```text
53867    /// +---+---------------+
53868    /// | # | Operands      |
53869    /// +---+---------------+
53870    /// | 1 | Xmm, Xmm, Xmm |
53871    /// +---+---------------+
53872    /// ```
53873    #[inline]
53874    pub fn vsubsh_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53875    where
53876        Assembler<'a>: VsubshErEmitter<A, B, C>,
53877    {
53878        <Self as VsubshErEmitter<A, B, C>>::vsubsh_er(self, op0, op1, op2);
53879    }
53880    /// `VSUBSH_MASK`.
53881    ///
53882    /// Supported operand variants:
53883    ///
53884    /// ```text
53885    /// +---+---------------+
53886    /// | # | Operands      |
53887    /// +---+---------------+
53888    /// | 1 | Xmm, Xmm, Mem |
53889    /// | 2 | Xmm, Xmm, Xmm |
53890    /// +---+---------------+
53891    /// ```
53892    #[inline]
53893    pub fn vsubsh_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53894    where
53895        Assembler<'a>: VsubshMaskEmitter<A, B, C>,
53896    {
53897        <Self as VsubshMaskEmitter<A, B, C>>::vsubsh_mask(self, op0, op1, op2);
53898    }
53899    /// `VSUBSH_MASK_ER`.
53900    ///
53901    /// Supported operand variants:
53902    ///
53903    /// ```text
53904    /// +---+---------------+
53905    /// | # | Operands      |
53906    /// +---+---------------+
53907    /// | 1 | Xmm, Xmm, Xmm |
53908    /// +---+---------------+
53909    /// ```
53910    #[inline]
53911    pub fn vsubsh_mask_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53912    where
53913        Assembler<'a>: VsubshMaskErEmitter<A, B, C>,
53914    {
53915        <Self as VsubshMaskErEmitter<A, B, C>>::vsubsh_mask_er(self, op0, op1, op2);
53916    }
53917    /// `VSUBSH_MASKZ`.
53918    ///
53919    /// Supported operand variants:
53920    ///
53921    /// ```text
53922    /// +---+---------------+
53923    /// | # | Operands      |
53924    /// +---+---------------+
53925    /// | 1 | Xmm, Xmm, Mem |
53926    /// | 2 | Xmm, Xmm, Xmm |
53927    /// +---+---------------+
53928    /// ```
53929    #[inline]
53930    pub fn vsubsh_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53931    where
53932        Assembler<'a>: VsubshMaskzEmitter<A, B, C>,
53933    {
53934        <Self as VsubshMaskzEmitter<A, B, C>>::vsubsh_maskz(self, op0, op1, op2);
53935    }
53936    /// `VSUBSH_MASKZ_ER`.
53937    ///
53938    /// Supported operand variants:
53939    ///
53940    /// ```text
53941    /// +---+---------------+
53942    /// | # | Operands      |
53943    /// +---+---------------+
53944    /// | 1 | Xmm, Xmm, Xmm |
53945    /// +---+---------------+
53946    /// ```
53947    #[inline]
53948    pub fn vsubsh_maskz_er<A, B, C>(&mut self, op0: A, op1: B, op2: C)
53949    where
53950        Assembler<'a>: VsubshMaskzErEmitter<A, B, C>,
53951    {
53952        <Self as VsubshMaskzErEmitter<A, B, C>>::vsubsh_maskz_er(self, op0, op1, op2);
53953    }
53954    /// `VUCOMISH`.
53955    ///
53956    /// Supported operand variants:
53957    ///
53958    /// ```text
53959    /// +---+----------+
53960    /// | # | Operands |
53961    /// +---+----------+
53962    /// | 1 | Xmm, Mem |
53963    /// | 2 | Xmm, Xmm |
53964    /// +---+----------+
53965    /// ```
53966    #[inline]
53967    pub fn vucomish<A, B>(&mut self, op0: A, op1: B)
53968    where
53969        Assembler<'a>: VucomishEmitter<A, B>,
53970    {
53971        <Self as VucomishEmitter<A, B>>::vucomish(self, op0, op1);
53972    }
53973    /// `VUCOMISH_SAE`.
53974    ///
53975    /// Supported operand variants:
53976    ///
53977    /// ```text
53978    /// +---+----------+
53979    /// | # | Operands |
53980    /// +---+----------+
53981    /// | 1 | Xmm, Xmm |
53982    /// +---+----------+
53983    /// ```
53984    #[inline]
53985    pub fn vucomish_sae<A, B>(&mut self, op0: A, op1: B)
53986    where
53987        Assembler<'a>: VucomishSaeEmitter<A, B>,
53988    {
53989        <Self as VucomishSaeEmitter<A, B>>::vucomish_sae(self, op0, op1);
53990    }
53991    /// `XCHG`.
53992    ///
53993    /// Supported operand variants:
53994    ///
53995    /// ```text
53996    /// +---+--------------+
53997    /// | # | Operands     |
53998    /// +---+--------------+
53999    /// | 1 | GpbLo, GpbLo |
54000    /// | 2 | Gpd, Gpd     |
54001    /// | 3 | Gpq, Gpq     |
54002    /// | 4 | Gpw, Gpw     |
54003    /// | 5 | Mem, GpbLo   |
54004    /// | 6 | Mem, Gpd     |
54005    /// | 7 | Mem, Gpq     |
54006    /// | 8 | Mem, Gpw     |
54007    /// +---+--------------+
54008    /// ```
54009    #[inline]
54010    pub fn xchg<A, B>(&mut self, op0: A, op1: B)
54011    where
54012        Assembler<'a>: XchgEmitter<A, B>,
54013    {
54014        <Self as XchgEmitter<A, B>>::xchg(self, op0, op1);
54015    }
54016    /// `XLATB`.
54017    ///
54018    /// Supported operand variants:
54019    ///
54020    /// ```text
54021    /// +---+----------+
54022    /// | # | Operands |
54023    /// +---+----------+
54024    /// | 1 | (none)   |
54025    /// +---+----------+
54026    /// ```
54027    #[inline]
54028    pub fn xlatb(&mut self)
54029    where
54030        Assembler<'a>: XlatbEmitter,
54031    {
54032        <Self as XlatbEmitter>::xlatb(self);
54033    }
54034    /// `XOR`.
54035    ///
54036    /// Supported operand variants:
54037    ///
54038    /// ```text
54039    /// +----+--------------+
54040    /// | #  | Operands     |
54041    /// +----+--------------+
54042    /// | 1  | GpbLo, GpbLo |
54043    /// | 2  | GpbLo, Imm   |
54044    /// | 3  | GpbLo, Mem   |
54045    /// | 4  | Gpd, Gpd     |
54046    /// | 5  | Gpd, Imm     |
54047    /// | 6  | Gpd, Mem     |
54048    /// | 7  | Gpq, Gpq     |
54049    /// | 8  | Gpq, Imm     |
54050    /// | 9  | Gpq, Mem     |
54051    /// | 10 | Gpw, Gpw     |
54052    /// | 11 | Gpw, Imm     |
54053    /// | 12 | Gpw, Mem     |
54054    /// | 13 | Mem, GpbLo   |
54055    /// | 14 | Mem, Gpd     |
54056    /// | 15 | Mem, Gpq     |
54057    /// | 16 | Mem, Gpw     |
54058    /// | 17 | Mem, Imm     |
54059    /// +----+--------------+
54060    /// ```
54061    #[inline]
54062    pub fn xor<A, B>(&mut self, op0: A, op1: B)
54063    where
54064        Assembler<'a>: XorEmitter<A, B>,
54065    {
54066        <Self as XorEmitter<A, B>>::xor(self, op0, op1);
54067    }
54068}