1// SPDX-License-Identifier: GPL-2.0
2/*
3 * This file contains instructions for testing by the test titled:
4 *
5 *         "Test x86 instruction decoder - new instructions"
6 *
7 * Note that the 'Expecting' comment lines are consumed by the
8 * gen-insn-x86-dat.awk script and have the format:
9 *
10 *         Expecting: <op> <branch> <rel>
11 *
12 * If this file is changed, remember to run the gen-insn-x86-dat.sh
13 * script and commit the result.
14 *
15 * Refer to insn-x86.c for more details.
16 */
17
18int main(void)
19{
20	/* Following line is a marker for the awk script - do not change */
21	asm volatile("rdtsc"); /* Start here */
22
23	/* Test fix for vcvtph2ps in x86-opcode-map.txt */
24
25	asm volatile("vcvtph2ps %xmm3,%ymm5");
26
27#ifdef __x86_64__
28
29	/* AVX-512: Instructions with the same op codes as Mask Instructions  */
30
31	asm volatile("cmovno %rax,%rbx");
32	asm volatile("cmovno 0x12345678(%rax),%rcx");
33	asm volatile("cmovno 0x12345678(%rax),%cx");
34
35	asm volatile("cmove  %rax,%rbx");
36	asm volatile("cmove 0x12345678(%rax),%rcx");
37	asm volatile("cmove 0x12345678(%rax),%cx");
38
39	asm volatile("seto    0x12345678(%rax)");
40	asm volatile("setno   0x12345678(%rax)");
41	asm volatile("setb    0x12345678(%rax)");
42	asm volatile("setc    0x12345678(%rax)");
43	asm volatile("setnae  0x12345678(%rax)");
44	asm volatile("setae   0x12345678(%rax)");
45	asm volatile("setnb   0x12345678(%rax)");
46	asm volatile("setnc   0x12345678(%rax)");
47	asm volatile("sets    0x12345678(%rax)");
48	asm volatile("setns   0x12345678(%rax)");
49
50	/* AVX-512: Mask Instructions */
51
52	asm volatile("kandw  %k7,%k6,%k5");
53	asm volatile("kandq  %k7,%k6,%k5");
54	asm volatile("kandb  %k7,%k6,%k5");
55	asm volatile("kandd  %k7,%k6,%k5");
56
57	asm volatile("kandnw  %k7,%k6,%k5");
58	asm volatile("kandnq  %k7,%k6,%k5");
59	asm volatile("kandnb  %k7,%k6,%k5");
60	asm volatile("kandnd  %k7,%k6,%k5");
61
62	asm volatile("knotw  %k7,%k6");
63	asm volatile("knotq  %k7,%k6");
64	asm volatile("knotb  %k7,%k6");
65	asm volatile("knotd  %k7,%k6");
66
67	asm volatile("korw  %k7,%k6,%k5");
68	asm volatile("korq  %k7,%k6,%k5");
69	asm volatile("korb  %k7,%k6,%k5");
70	asm volatile("kord  %k7,%k6,%k5");
71
72	asm volatile("kxnorw  %k7,%k6,%k5");
73	asm volatile("kxnorq  %k7,%k6,%k5");
74	asm volatile("kxnorb  %k7,%k6,%k5");
75	asm volatile("kxnord  %k7,%k6,%k5");
76
77	asm volatile("kxorw  %k7,%k6,%k5");
78	asm volatile("kxorq  %k7,%k6,%k5");
79	asm volatile("kxorb  %k7,%k6,%k5");
80	asm volatile("kxord  %k7,%k6,%k5");
81
82	asm volatile("kaddw  %k7,%k6,%k5");
83	asm volatile("kaddq  %k7,%k6,%k5");
84	asm volatile("kaddb  %k7,%k6,%k5");
85	asm volatile("kaddd  %k7,%k6,%k5");
86
87	asm volatile("kunpckbw %k7,%k6,%k5");
88	asm volatile("kunpckwd %k7,%k6,%k5");
89	asm volatile("kunpckdq %k7,%k6,%k5");
90
91	asm volatile("kmovw  %k6,%k5");
92	asm volatile("kmovw  (%rcx),%k5");
93	asm volatile("kmovw  0x123(%rax,%r14,8),%k5");
94	asm volatile("kmovw  %k5,(%rcx)");
95	asm volatile("kmovw  %k5,0x123(%rax,%r14,8)");
96	asm volatile("kmovw  %eax,%k5");
97	asm volatile("kmovw  %ebp,%k5");
98	asm volatile("kmovw  %r13d,%k5");
99	asm volatile("kmovw  %k5,%eax");
100	asm volatile("kmovw  %k5,%ebp");
101	asm volatile("kmovw  %k5,%r13d");
102
103	asm volatile("kmovq  %k6,%k5");
104	asm volatile("kmovq  (%rcx),%k5");
105	asm volatile("kmovq  0x123(%rax,%r14,8),%k5");
106	asm volatile("kmovq  %k5,(%rcx)");
107	asm volatile("kmovq  %k5,0x123(%rax,%r14,8)");
108	asm volatile("kmovq  %rax,%k5");
109	asm volatile("kmovq  %rbp,%k5");
110	asm volatile("kmovq  %r13,%k5");
111	asm volatile("kmovq  %k5,%rax");
112	asm volatile("kmovq  %k5,%rbp");
113	asm volatile("kmovq  %k5,%r13");
114
115	asm volatile("kmovb  %k6,%k5");
116	asm volatile("kmovb  (%rcx),%k5");
117	asm volatile("kmovb  0x123(%rax,%r14,8),%k5");
118	asm volatile("kmovb  %k5,(%rcx)");
119	asm volatile("kmovb  %k5,0x123(%rax,%r14,8)");
120	asm volatile("kmovb  %eax,%k5");
121	asm volatile("kmovb  %ebp,%k5");
122	asm volatile("kmovb  %r13d,%k5");
123	asm volatile("kmovb  %k5,%eax");
124	asm volatile("kmovb  %k5,%ebp");
125	asm volatile("kmovb  %k5,%r13d");
126
127	asm volatile("kmovd  %k6,%k5");
128	asm volatile("kmovd  (%rcx),%k5");
129	asm volatile("kmovd  0x123(%rax,%r14,8),%k5");
130	asm volatile("kmovd  %k5,(%rcx)");
131	asm volatile("kmovd  %k5,0x123(%rax,%r14,8)");
132	asm volatile("kmovd  %eax,%k5");
133	asm volatile("kmovd  %ebp,%k5");
134	asm volatile("kmovd  %r13d,%k5");
135	asm volatile("kmovd  %k5,%eax");
136	asm volatile("kmovd  %k5,%ebp");
137	asm volatile("kmovd %k5,%r13d");
138
139	asm volatile("kortestw %k6,%k5");
140	asm volatile("kortestq %k6,%k5");
141	asm volatile("kortestb %k6,%k5");
142	asm volatile("kortestd %k6,%k5");
143
144	asm volatile("ktestw %k6,%k5");
145	asm volatile("ktestq %k6,%k5");
146	asm volatile("ktestb %k6,%k5");
147	asm volatile("ktestd %k6,%k5");
148
149	asm volatile("kshiftrw $0x12,%k6,%k5");
150	asm volatile("kshiftrq $0x5b,%k6,%k5");
151	asm volatile("kshiftlw $0x12,%k6,%k5");
152	asm volatile("kshiftlq $0x5b,%k6,%k5");
153
154	/* AVX-512: Op code 0f 5b */
155	asm volatile("vcvtdq2ps %xmm5,%xmm6");
156	asm volatile("vcvtqq2ps %zmm29,%ymm6{%k7}");
157	asm volatile("vcvtps2dq %xmm5,%xmm6");
158	asm volatile("vcvttps2dq %xmm5,%xmm6");
159
160	/* AVX-512: Op code 0f 6f */
161
162	asm volatile("movq   %mm0,%mm4");
163	asm volatile("vmovdqa %ymm4,%ymm6");
164	asm volatile("vmovdqa32 %zmm25,%zmm26");
165	asm volatile("vmovdqa64 %zmm25,%zmm26");
166	asm volatile("vmovdqu %ymm4,%ymm6");
167	asm volatile("vmovdqu32 %zmm29,%zmm30");
168	asm volatile("vmovdqu64 %zmm25,%zmm26");
169	asm volatile("vmovdqu8 %zmm29,%zmm30");
170	asm volatile("vmovdqu16 %zmm25,%zmm26");
171
172	/* AVX-512: Op code 0f 78 */
173
174	asm volatile("vmread %rax,%rbx");
175	asm volatile("vcvttps2udq %zmm25,%zmm26");
176	asm volatile("vcvttpd2udq %zmm29,%ymm6{%k7}");
177	asm volatile("vcvttsd2usi %xmm6,%rax");
178	asm volatile("vcvttss2usi %xmm6,%rax");
179	asm volatile("vcvttps2uqq %ymm5,%zmm26{%k7}");
180	asm volatile("vcvttpd2uqq %zmm29,%zmm30");
181
182	/* AVX-512: Op code 0f 79 */
183
184	asm volatile("vmwrite %rax,%rbx");
185	asm volatile("vcvtps2udq %zmm25,%zmm26");
186	asm volatile("vcvtpd2udq %zmm29,%ymm6{%k7}");
187	asm volatile("vcvtsd2usi %xmm6,%rax");
188	asm volatile("vcvtss2usi %xmm6,%rax");
189	asm volatile("vcvtps2uqq %ymm5,%zmm26{%k7}");
190	asm volatile("vcvtpd2uqq %zmm29,%zmm30");
191
192	/* AVX-512: Op code 0f 7a */
193
194	asm volatile("vcvtudq2pd %ymm5,%zmm29{%k7}");
195	asm volatile("vcvtuqq2pd %zmm25,%zmm26");
196	asm volatile("vcvtudq2ps %zmm29,%zmm30");
197	asm volatile("vcvtuqq2ps %zmm25,%ymm26{%k7}");
198	asm volatile("vcvttps2qq %ymm25,%zmm26{%k7}");
199	asm volatile("vcvttpd2qq %zmm29,%zmm30");
200
201	/* AVX-512: Op code 0f 7b */
202
203	asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
204	asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
205	asm volatile("vcvtps2qq %ymm5,%zmm26{%k7}");
206	asm volatile("vcvtpd2qq %zmm29,%zmm30");
207
208	/* AVX-512: Op code 0f 7f */
209
210	asm volatile("movq.s  %mm0,%mm4");
211	asm volatile("vmovdqa %ymm8,%ymm6");
212	asm volatile("vmovdqa32.s %zmm25,%zmm26");
213	asm volatile("vmovdqa64.s %zmm25,%zmm26");
214	asm volatile("vmovdqu %ymm8,%ymm6");
215	asm volatile("vmovdqu32.s %zmm25,%zmm26");
216	asm volatile("vmovdqu64.s %zmm25,%zmm26");
217	asm volatile("vmovdqu8.s %zmm30,(%rcx)");
218	asm volatile("vmovdqu16.s %zmm25,%zmm26");
219
220	/* AVX-512: Op code 0f db */
221
222	asm volatile("pand  %mm1,%mm2");
223	asm volatile("pand  %xmm1,%xmm2");
224	asm volatile("vpand  %ymm4,%ymm6,%ymm2");
225	asm volatile("vpandd %zmm24,%zmm25,%zmm26");
226	asm volatile("vpandq %zmm24,%zmm25,%zmm26");
227
228	/* AVX-512: Op code 0f df */
229
230	asm volatile("pandn  %mm1,%mm2");
231	asm volatile("pandn  %xmm1,%xmm2");
232	asm volatile("vpandn %ymm4,%ymm6,%ymm2");
233	asm volatile("vpandnd %zmm24,%zmm25,%zmm26");
234	asm volatile("vpandnq %zmm24,%zmm25,%zmm26");
235
236	/* AVX-512: Op code 0f e6 */
237
238	asm volatile("vcvttpd2dq %xmm1,%xmm2");
239	asm volatile("vcvtdq2pd %xmm5,%xmm6");
240	asm volatile("vcvtdq2pd %ymm5,%zmm26{%k7}");
241	asm volatile("vcvtqq2pd %zmm25,%zmm26");
242	asm volatile("vcvtpd2dq %xmm1,%xmm2");
243
244	/* AVX-512: Op code 0f eb */
245
246	asm volatile("por   %mm4,%mm6");
247	asm volatile("vpor   %ymm4,%ymm6,%ymm2");
248	asm volatile("vpord  %zmm24,%zmm25,%zmm26");
249	asm volatile("vporq  %zmm24,%zmm25,%zmm26");
250
251	/* AVX-512: Op code 0f ef */
252
253	asm volatile("pxor   %mm4,%mm6");
254	asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
255	asm volatile("vpxord %zmm24,%zmm25,%zmm26");
256	asm volatile("vpxorq %zmm24,%zmm25,%zmm26");
257
258	/* AVX-512: Op code 0f 38 10 */
259
260	asm volatile("pblendvb %xmm1,%xmm0");
261	asm volatile("vpsrlvw %zmm27,%zmm28,%zmm29");
262	asm volatile("vpmovuswb %zmm28,%ymm6{%k7}");
263
264	/* AVX-512: Op code 0f 38 11 */
265
266	asm volatile("vpmovusdb %zmm28,%xmm6{%k7}");
267	asm volatile("vpsravw %zmm27,%zmm28,%zmm29");
268
269	/* AVX-512: Op code 0f 38 12 */
270
271	asm volatile("vpmovusqb %zmm27,%xmm6{%k7}");
272	asm volatile("vpsllvw %zmm27,%zmm28,%zmm29");
273
274	/* AVX-512: Op code 0f 38 13 */
275
276	asm volatile("vcvtph2ps %xmm3,%ymm5");
277	asm volatile("vcvtph2ps %ymm5,%zmm27{%k7}");
278	asm volatile("vpmovusdw %zmm27,%ymm6{%k7}");
279
280	/* AVX-512: Op code 0f 38 14 */
281
282	asm volatile("blendvps %xmm1,%xmm0");
283	asm volatile("vpmovusqw %zmm27,%xmm6{%k7}");
284	asm volatile("vprorvd %zmm27,%zmm28,%zmm29");
285	asm volatile("vprorvq %zmm27,%zmm28,%zmm29");
286
287	/* AVX-512: Op code 0f 38 15 */
288
289	asm volatile("blendvpd %xmm1,%xmm0");
290	asm volatile("vpmovusqd %zmm27,%ymm6{%k7}");
291	asm volatile("vprolvd %zmm27,%zmm28,%zmm29");
292	asm volatile("vprolvq %zmm27,%zmm28,%zmm29");
293
294	/* AVX-512: Op code 0f 38 16 */
295
296	asm volatile("vpermps %ymm4,%ymm6,%ymm2");
297	asm volatile("vpermps %ymm24,%ymm26,%ymm22{%k7}");
298	asm volatile("vpermpd %ymm24,%ymm26,%ymm22{%k7}");
299
300	/* AVX-512: Op code 0f 38 19 */
301
302	asm volatile("vbroadcastsd %xmm4,%ymm6");
303	asm volatile("vbroadcastf32x2 %xmm27,%zmm26");
304
305	/* AVX-512: Op code 0f 38 1a */
306
307	asm volatile("vbroadcastf128 (%rcx),%ymm4");
308	asm volatile("vbroadcastf32x4 (%rcx),%zmm26");
309	asm volatile("vbroadcastf64x2 (%rcx),%zmm26");
310
311	/* AVX-512: Op code 0f 38 1b */
312
313	asm volatile("vbroadcastf32x8 (%rcx),%zmm27");
314	asm volatile("vbroadcastf64x4 (%rcx),%zmm26");
315
316	/* AVX-512: Op code 0f 38 1f */
317
318	asm volatile("vpabsq %zmm27,%zmm28");
319
320	/* AVX-512: Op code 0f 38 20 */
321
322	asm volatile("vpmovsxbw %xmm4,%xmm5");
323	asm volatile("vpmovswb %zmm27,%ymm6{%k7}");
324
325	/* AVX-512: Op code 0f 38 21 */
326
327	asm volatile("vpmovsxbd %xmm4,%ymm6");
328	asm volatile("vpmovsdb %zmm27,%xmm6{%k7}");
329
330	/* AVX-512: Op code 0f 38 22 */
331
332	asm volatile("vpmovsxbq %xmm4,%ymm4");
333	asm volatile("vpmovsqb %zmm27,%xmm6{%k7}");
334
335	/* AVX-512: Op code 0f 38 23 */
336
337	asm volatile("vpmovsxwd %xmm4,%ymm4");
338	asm volatile("vpmovsdw %zmm27,%ymm6{%k7}");
339
340	/* AVX-512: Op code 0f 38 24 */
341
342	asm volatile("vpmovsxwq %xmm4,%ymm6");
343	asm volatile("vpmovsqw %zmm27,%xmm6{%k7}");
344
345	/* AVX-512: Op code 0f 38 25 */
346
347	asm volatile("vpmovsxdq %xmm4,%ymm4");
348	asm volatile("vpmovsqd %zmm27,%ymm6{%k7}");
349
350	/* AVX-512: Op code 0f 38 26 */
351
352	asm volatile("vptestmb %zmm27,%zmm28,%k5");
353	asm volatile("vptestmw %zmm27,%zmm28,%k5");
354	asm volatile("vptestnmb %zmm26,%zmm27,%k5");
355	asm volatile("vptestnmw %zmm26,%zmm27,%k5");
356
357	/* AVX-512: Op code 0f 38 27 */
358
359	asm volatile("vptestmd %zmm27,%zmm28,%k5");
360	asm volatile("vptestmq %zmm27,%zmm28,%k5");
361	asm volatile("vptestnmd %zmm26,%zmm27,%k5");
362	asm volatile("vptestnmq %zmm26,%zmm27,%k5");
363
364	/* AVX-512: Op code 0f 38 28 */
365
366	asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
367	asm volatile("vpmovm2b %k5,%zmm28");
368	asm volatile("vpmovm2w %k5,%zmm28");
369
370	/* AVX-512: Op code 0f 38 29 */
371
372	asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
373	asm volatile("vpmovb2m %zmm28,%k5");
374	asm volatile("vpmovw2m %zmm28,%k5");
375
376	/* AVX-512: Op code 0f 38 2a */
377
378	asm volatile("vmovntdqa (%rcx),%ymm4");
379	asm volatile("vpbroadcastmb2q %k6,%zmm30");
380
381	/* AVX-512: Op code 0f 38 2c */
382
383	asm volatile("vmaskmovps (%rcx),%ymm4,%ymm6");
384	asm volatile("vscalefps %zmm24,%zmm25,%zmm26");
385	asm volatile("vscalefpd %zmm24,%zmm25,%zmm26");
386
387	/* AVX-512: Op code 0f 38 2d */
388
389	asm volatile("vmaskmovpd (%rcx),%ymm4,%ymm6");
390	asm volatile("vscalefss %xmm24,%xmm25,%xmm26{%k7}");
391	asm volatile("vscalefsd %xmm24,%xmm25,%xmm26{%k7}");
392
393	/* AVX-512: Op code 0f 38 30 */
394
395	asm volatile("vpmovzxbw %xmm4,%ymm4");
396	asm volatile("vpmovwb %zmm27,%ymm6{%k7}");
397
398	/* AVX-512: Op code 0f 38 31 */
399
400	asm volatile("vpmovzxbd %xmm4,%ymm6");
401	asm volatile("vpmovdb %zmm27,%xmm6{%k7}");
402
403	/* AVX-512: Op code 0f 38 32 */
404
405	asm volatile("vpmovzxbq %xmm4,%ymm4");
406	asm volatile("vpmovqb %zmm27,%xmm6{%k7}");
407
408	/* AVX-512: Op code 0f 38 33 */
409
410	asm volatile("vpmovzxwd %xmm4,%ymm4");
411	asm volatile("vpmovdw %zmm27,%ymm6{%k7}");
412
413	/* AVX-512: Op code 0f 38 34 */
414
415	asm volatile("vpmovzxwq %xmm4,%ymm6");
416	asm volatile("vpmovqw %zmm27,%xmm6{%k7}");
417
418	/* AVX-512: Op code 0f 38 35 */
419
420	asm volatile("vpmovzxdq %xmm4,%ymm4");
421	asm volatile("vpmovqd %zmm27,%ymm6{%k7}");
422
423	/* AVX-512: Op code 0f 38 38 */
424
425	asm volatile("vpermd %ymm4,%ymm6,%ymm2");
426	asm volatile("vpermd %ymm24,%ymm26,%ymm22{%k7}");
427	asm volatile("vpermq %ymm24,%ymm26,%ymm22{%k7}");
428
429	/* AVX-512: Op code 0f 38 38 */
430
431	asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
432	asm volatile("vpmovm2d %k5,%zmm28");
433	asm volatile("vpmovm2q %k5,%zmm28");
434
435	/* AVX-512: Op code 0f 38 39 */
436
437	asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
438	asm volatile("vpminsd %zmm24,%zmm25,%zmm26");
439	asm volatile("vpminsq %zmm24,%zmm25,%zmm26");
440	asm volatile("vpmovd2m %zmm28,%k5");
441	asm volatile("vpmovq2m %zmm28,%k5");
442
443	/* AVX-512: Op code 0f 38 3a */
444
445	asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
446	asm volatile("vpbroadcastmw2d %k6,%zmm28");
447
448	/* AVX-512: Op code 0f 38 3b */
449
450	asm volatile("vpminud %ymm4,%ymm6,%ymm2");
451	asm volatile("vpminud %zmm24,%zmm25,%zmm26");
452	asm volatile("vpminuq %zmm24,%zmm25,%zmm26");
453
454	/* AVX-512: Op code 0f 38 3d */
455
456	asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
457	asm volatile("vpmaxsd %zmm24,%zmm25,%zmm26");
458	asm volatile("vpmaxsq %zmm24,%zmm25,%zmm26");
459
460	/* AVX-512: Op code 0f 38 3f */
461
462	asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
463	asm volatile("vpmaxud %zmm24,%zmm25,%zmm26");
464	asm volatile("vpmaxuq %zmm24,%zmm25,%zmm26");
465
466	/* AVX-512: Op code 0f 38 42 */
467
468	asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
469	asm volatile("vpmulld %zmm24,%zmm25,%zmm26");
470	asm volatile("vpmullq %zmm24,%zmm25,%zmm26");
471
472	/* AVX-512: Op code 0f 38 42 */
473
474	asm volatile("vgetexpps %zmm25,%zmm26");
475	asm volatile("vgetexppd %zmm27,%zmm28");
476
477	/* AVX-512: Op code 0f 38 43 */
478
479	asm volatile("vgetexpss %xmm24,%xmm25,%xmm26{%k7}");
480	asm volatile("vgetexpsd %xmm28,%xmm29,%xmm30{%k7}");
481
482	/* AVX-512: Op code 0f 38 44 */
483
484	asm volatile("vplzcntd %zmm27,%zmm28");
485	asm volatile("vplzcntq %zmm27,%zmm28");
486
487	/* AVX-512: Op code 0f 38 46 */
488
489	asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
490	asm volatile("vpsravd %zmm24,%zmm25,%zmm26");
491	asm volatile("vpsravq %zmm24,%zmm25,%zmm26");
492
493	/* AVX-512: Op code 0f 38 4c */
494
495	asm volatile("vrcp14ps %zmm25,%zmm26");
496	asm volatile("vrcp14pd %zmm27,%zmm28");
497
498	/* AVX-512: Op code 0f 38 4d */
499
500	asm volatile("vrcp14ss %xmm24,%xmm25,%xmm26{%k7}");
501	asm volatile("vrcp14sd %xmm24,%xmm25,%xmm26{%k7}");
502
503	/* AVX-512: Op code 0f 38 4e */
504
505	asm volatile("vrsqrt14ps %zmm25,%zmm26");
506	asm volatile("vrsqrt14pd %zmm27,%zmm28");
507
508	/* AVX-512: Op code 0f 38 4f */
509
510	asm volatile("vrsqrt14ss %xmm24,%xmm25,%xmm26{%k7}");
511	asm volatile("vrsqrt14sd %xmm24,%xmm25,%xmm26{%k7}");
512
513	/* AVX-512: Op code 0f 38 50 */
514
515	asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
516	asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
517	asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
518	asm volatile("vpdpbusd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
519	asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
520
521	/* AVX-512: Op code 0f 38 51 */
522
523	asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
524	asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
525	asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
526	asm volatile("vpdpbusds 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
527	asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
528
529	/* AVX-512: Op code 0f 38 52 */
530
531	asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
532	asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
533	asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
534	asm volatile("vdpbf16ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
535	asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
536
537	asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
538	asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
539	asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
540	asm volatile("vpdpwssd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
541	asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
542
543	asm volatile("vp4dpwssd (%rax), %zmm0, %zmm4");
544	asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
545	asm volatile("vp4dpwssd 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
546	asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
547
548	/* AVX-512: Op code 0f 38 53 */
549
550	asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
551	asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
552	asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
553	asm volatile("vpdpwssds 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
554	asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
555
556	asm volatile("vp4dpwssds (%rax), %zmm0, %zmm4");
557	asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
558	asm volatile("vp4dpwssds 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
559	asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
560
561	/* AVX-512: Op code 0f 38 54 */
562
563	asm volatile("vpopcntb %xmm1, %xmm2");
564	asm volatile("vpopcntb %ymm1, %ymm2");
565	asm volatile("vpopcntb %zmm1, %zmm2");
566	asm volatile("vpopcntb 0x12345678(%rax,%rcx,8),%zmm2");
567	asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
568
569	asm volatile("vpopcntw %xmm1, %xmm2");
570	asm volatile("vpopcntw %ymm1, %ymm2");
571	asm volatile("vpopcntw %zmm1, %zmm2");
572	asm volatile("vpopcntw 0x12345678(%rax,%rcx,8),%zmm2");
573	asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
574
575	/* AVX-512: Op code 0f 38 55 */
576
577	asm volatile("vpopcntd %xmm1, %xmm2");
578	asm volatile("vpopcntd %ymm1, %ymm2");
579	asm volatile("vpopcntd %zmm1, %zmm2");
580	asm volatile("vpopcntd 0x12345678(%rax,%rcx,8),%zmm2");
581	asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
582
583	asm volatile("vpopcntq %xmm1, %xmm2");
584	asm volatile("vpopcntq %ymm1, %ymm2");
585	asm volatile("vpopcntq %zmm1, %zmm2");
586	asm volatile("vpopcntq 0x12345678(%rax,%rcx,8),%zmm2");
587	asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
588
589	/* AVX-512: Op code 0f 38 59 */
590
591	asm volatile("vpbroadcastq %xmm4,%xmm6");
592	asm volatile("vbroadcasti32x2 %xmm27,%zmm26");
593
594	/* AVX-512: Op code 0f 38 5a */
595
596	asm volatile("vbroadcasti128 (%rcx),%ymm4");
597	asm volatile("vbroadcasti32x4 (%rcx),%zmm26");
598	asm volatile("vbroadcasti64x2 (%rcx),%zmm26");
599
600	/* AVX-512: Op code 0f 38 5b */
601
602	asm volatile("vbroadcasti32x8 (%rcx),%zmm28");
603	asm volatile("vbroadcasti64x4 (%rcx),%zmm26");
604
605	/* AVX-512: Op code 0f 38 62 */
606
607	asm volatile("vpexpandb %xmm1, %xmm2");
608	asm volatile("vpexpandb %ymm1, %ymm2");
609	asm volatile("vpexpandb %zmm1, %zmm2");
610	asm volatile("vpexpandb 0x12345678(%rax,%rcx,8),%zmm2");
611	asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
612
613	asm volatile("vpexpandw %xmm1, %xmm2");
614	asm volatile("vpexpandw %ymm1, %ymm2");
615	asm volatile("vpexpandw %zmm1, %zmm2");
616	asm volatile("vpexpandw 0x12345678(%rax,%rcx,8),%zmm2");
617	asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
618
619	/* AVX-512: Op code 0f 38 63 */
620
621	asm volatile("vpcompressb %xmm1, %xmm2");
622	asm volatile("vpcompressb %ymm1, %ymm2");
623	asm volatile("vpcompressb %zmm1, %zmm2");
624	asm volatile("vpcompressb %zmm2,0x12345678(%rax,%rcx,8)");
625	asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
626
627	asm volatile("vpcompressw %xmm1, %xmm2");
628	asm volatile("vpcompressw %ymm1, %ymm2");
629	asm volatile("vpcompressw %zmm1, %zmm2");
630	asm volatile("vpcompressw %zmm2,0x12345678(%rax,%rcx,8)");
631	asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
632
633	/* AVX-512: Op code 0f 38 64 */
634
635	asm volatile("vpblendmd %zmm26,%zmm27,%zmm28");
636	asm volatile("vpblendmq %zmm26,%zmm27,%zmm28");
637
638	/* AVX-512: Op code 0f 38 65 */
639
640	asm volatile("vblendmps %zmm24,%zmm25,%zmm26");
641	asm volatile("vblendmpd %zmm26,%zmm27,%zmm28");
642
643	/* AVX-512: Op code 0f 38 66 */
644
645	asm volatile("vpblendmb %zmm26,%zmm27,%zmm28");
646	asm volatile("vpblendmw %zmm26,%zmm27,%zmm28");
647
648	/* AVX-512: Op code 0f 38 68 */
649
650	asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
651	asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
652	asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
653	asm volatile("vp2intersectd 0x12345678(%rax,%rcx,8),%zmm2,%k3");
654	asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
655
656	asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
657	asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
658	asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
659	asm volatile("vp2intersectq 0x12345678(%rax,%rcx,8),%zmm2,%k3");
660	asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
661
662	/* AVX-512: Op code 0f 38 70 */
663
664	asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
665	asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
666	asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
667	asm volatile("vpshldvw 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
668	asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
669
670	/* AVX-512: Op code 0f 38 71 */
671
672	asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
673	asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
674	asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
675	asm volatile("vpshldvd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
676	asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
677
678	asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
679	asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
680	asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
681	asm volatile("vpshldvq 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
682	asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
683
684	/* AVX-512: Op code 0f 38 72 */
685
686	asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
687	asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
688	asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
689	asm volatile("vcvtne2ps2bf16 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
690	asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
691
692	asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
693	asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
694	asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
695	asm volatile("vcvtneps2bf16 0x12345678(%rax,%rcx,8),%ymm2");
696	asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
697
698	asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
699	asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
700	asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
701	asm volatile("vpshrdvw 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
702	asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
703
704	/* AVX-512: Op code 0f 38 73 */
705
706	asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
707	asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
708	asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
709	asm volatile("vpshrdvd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
710	asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
711
712	asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
713	asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
714	asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
715	asm volatile("vpshrdvq 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
716	asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
717
718	/* AVX-512: Op code 0f 38 75 */
719
720	asm volatile("vpermi2b %zmm24,%zmm25,%zmm26");
721	asm volatile("vpermi2w %zmm26,%zmm27,%zmm28");
722
723	/* AVX-512: Op code 0f 38 76 */
724
725	asm volatile("vpermi2d %zmm26,%zmm27,%zmm28");
726	asm volatile("vpermi2q %zmm26,%zmm27,%zmm28");
727
728	/* AVX-512: Op code 0f 38 77 */
729
730	asm volatile("vpermi2ps %zmm26,%zmm27,%zmm28");
731	asm volatile("vpermi2pd %zmm26,%zmm27,%zmm28");
732
733	/* AVX-512: Op code 0f 38 7a */
734
735	asm volatile("vpbroadcastb %eax,%xmm30");
736
737	/* AVX-512: Op code 0f 38 7b */
738
739	asm volatile("vpbroadcastw %eax,%xmm30");
740
741	/* AVX-512: Op code 0f 38 7c */
742
743	asm volatile("vpbroadcastd %eax,%xmm30");
744	asm volatile("vpbroadcastq %rax,%zmm30");
745
746	/* AVX-512: Op code 0f 38 7d */
747
748	asm volatile("vpermt2b %zmm26,%zmm27,%zmm28");
749	asm volatile("vpermt2w %zmm26,%zmm27,%zmm28");
750
751	/* AVX-512: Op code 0f 38 7e */
752
753	asm volatile("vpermt2d %zmm26,%zmm27,%zmm28");
754	asm volatile("vpermt2q %zmm26,%zmm27,%zmm28");
755
756	/* AVX-512: Op code 0f 38 7f */
757
758	asm volatile("vpermt2ps %zmm26,%zmm27,%zmm28");
759	asm volatile("vpermt2pd %zmm26,%zmm27,%zmm28");
760
761	/* AVX-512: Op code 0f 38 83 */
762
763	asm volatile("vpmultishiftqb %zmm26,%zmm27,%zmm28");
764
765	/* AVX-512: Op code 0f 38 88 */
766
767	asm volatile("vexpandps (%rcx),%zmm26");
768	asm volatile("vexpandpd (%rcx),%zmm28");
769
770	/* AVX-512: Op code 0f 38 89 */
771
772	asm volatile("vpexpandd (%rcx),%zmm28");
773	asm volatile("vpexpandq (%rcx),%zmm26");
774
775	/* AVX-512: Op code 0f 38 8a */
776
777	asm volatile("vcompressps %zmm28,(%rcx)");
778	asm volatile("vcompresspd %zmm28,(%rcx)");
779
780	/* AVX-512: Op code 0f 38 8b */
781
782	asm volatile("vpcompressd %zmm28,(%rcx)");
783	asm volatile("vpcompressq %zmm26,(%rcx)");
784
785	/* AVX-512: Op code 0f 38 8d */
786
787	asm volatile("vpermb %zmm26,%zmm27,%zmm28");
788	asm volatile("vpermw %zmm26,%zmm27,%zmm28");
789
790	/* AVX-512: Op code 0f 38 8f */
791
792	asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
793	asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
794	asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
795	asm volatile("vpshufbitqmb 0x12345678(%rax,%rcx,8),%zmm2,%k3");
796	asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
797
798	/* AVX-512: Op code 0f 38 90 */
799
800	asm volatile("vpgatherdd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
801	asm volatile("vpgatherdq %xmm2,0x04(%rbp,%xmm7,2),%xmm1");
802	asm volatile("vpgatherdd 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
803	asm volatile("vpgatherdq 0x7b(%rbp,%ymm27,8),%zmm26{%k1}");
804
805	/* AVX-512: Op code 0f 38 91 */
806
807	asm volatile("vpgatherqd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
808	asm volatile("vpgatherqq %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
809	asm volatile("vpgatherqd 0x7b(%rbp,%zmm27,8),%ymm26{%k1}");
810	asm volatile("vpgatherqq 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
811
812	/* AVX-512: Op code 0f 38 9a */
813
814	asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
815	asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
816	asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
817	asm volatile("vfmsub132ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
818	asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
819
820	asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
821	asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
822	asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
823	asm volatile("vfmsub132pd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
824	asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
825
826	asm volatile("v4fmaddps (%rax), %zmm0, %zmm4");
827	asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
828	asm volatile("v4fmaddps 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
829	asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
830
831	/* AVX-512: Op code 0f 38 9b */
832
833	asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
834	asm volatile("vfmsub132ss 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
835	asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
836
837	asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
838	asm volatile("vfmsub132sd 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
839	asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
840
841	asm volatile("v4fmaddss (%rax), %xmm0, %xmm4");
842	asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
843	asm volatile("v4fmaddss 0x12345678(%rax,%rcx,8),%xmm0,%xmm4");
844	asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
845
846	/* AVX-512: Op code 0f 38 a0 */
847
848	asm volatile("vpscatterdd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
849	asm volatile("vpscatterdq %zmm26,0x7b(%rbp,%ymm27,8){%k1}");
850
851	/* AVX-512: Op code 0f 38 a1 */
852
853	asm volatile("vpscatterqd %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
854	asm volatile("vpscatterqq %ymm6,0x7b(%rbp,%ymm27,8){%k1}");
855
856	/* AVX-512: Op code 0f 38 a2 */
857
858	asm volatile("vscatterdps %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
859	asm volatile("vscatterdpd %zmm28,0x7b(%rbp,%ymm27,8){%k1}");
860
861	/* AVX-512: Op code 0f 38 a3 */
862
863	asm volatile("vscatterqps %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
864	asm volatile("vscatterqpd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
865
866	/* AVX-512: Op code 0f 38 aa */
867
868	asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
869	asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
870	asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
871	asm volatile("vfmsub213ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
872	asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
873
874	asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
875	asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
876	asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
877	asm volatile("vfmsub213pd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
878	asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
879
880	asm volatile("v4fnmaddps (%rax), %zmm0, %zmm4");
881	asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
882	asm volatile("v4fnmaddps 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
883	asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
884
885	/* AVX-512: Op code 0f 38 ab */
886
887	asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
888	asm volatile("vfmsub213ss 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
889	asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
890
891	asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
892	asm volatile("vfmsub213sd 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
893	asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
894
895	asm volatile("v4fnmaddss (%rax), %xmm0, %xmm4");
896	asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
897	asm volatile("v4fnmaddss 0x12345678(%rax,%rcx,8),%xmm0,%xmm4");
898	asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
899
900	/* AVX-512: Op code 0f 38 b4 */
901
902	asm volatile("vpmadd52luq %zmm26,%zmm27,%zmm28");
903
904	/* AVX-512: Op code 0f 38 b5 */
905
906	asm volatile("vpmadd52huq %zmm26,%zmm27,%zmm28");
907
908	/* AVX-512: Op code 0f 38 c4 */
909
910	asm volatile("vpconflictd %zmm26,%zmm27");
911	asm volatile("vpconflictq %zmm26,%zmm27");
912
913	/* AVX-512: Op code 0f 38 c8 */
914
915	asm volatile("vexp2ps %zmm29,%zmm30");
916	asm volatile("vexp2pd %zmm26,%zmm27");
917
918	/* AVX-512: Op code 0f 38 ca */
919
920	asm volatile("vrcp28ps %zmm29,%zmm30");
921	asm volatile("vrcp28pd %zmm26,%zmm27");
922
923	/* AVX-512: Op code 0f 38 cb */
924
925	asm volatile("vrcp28ss %xmm28,%xmm29,%xmm30{%k7}");
926	asm volatile("vrcp28sd %xmm25,%xmm26,%xmm27{%k7}");
927
928	/* AVX-512: Op code 0f 38 cc */
929
930	asm volatile("vrsqrt28ps %zmm29,%zmm30");
931	asm volatile("vrsqrt28pd %zmm26,%zmm27");
932
933	/* AVX-512: Op code 0f 38 cd */
934
935	asm volatile("vrsqrt28ss %xmm28,%xmm29,%xmm30{%k7}");
936	asm volatile("vrsqrt28sd %xmm25,%xmm26,%xmm27{%k7}");
937
938	/* AVX-512: Op code 0f 38 cf */
939
940	asm volatile("gf2p8mulb %xmm1, %xmm3");
941	asm volatile("gf2p8mulb 0x12345678(%rax,%rcx,8),%xmm3");
942	asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
943
944	asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
945	asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
946	asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
947	asm volatile("vgf2p8mulb 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
948	asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
949
950	/* AVX-512: Op code 0f 38 dc */
951
952	asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
953	asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
954	asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
955	asm volatile("vaesenc 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
956	asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
957
958	/* AVX-512: Op code 0f 38 dd */
959
960	asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
961	asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
962	asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
963	asm volatile("vaesenclast 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
964	asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
965
966	/* AVX-512: Op code 0f 38 de */
967
968	asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
969	asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
970	asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
971	asm volatile("vaesdec 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
972	asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
973
974	/* AVX-512: Op code 0f 38 df */
975
976	asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
977	asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
978	asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
979	asm volatile("vaesdeclast 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
980	asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
981
982	/* AVX-512: Op code 0f 3a 03 */
983
984	asm volatile("valignd $0x12,%zmm28,%zmm29,%zmm30");
985	asm volatile("valignq $0x12,%zmm25,%zmm26,%zmm27");
986
987	/* AVX-512: Op code 0f 3a 08 */
988
989	asm volatile("vroundps $0x5,%ymm6,%ymm2");
990	asm volatile("vrndscaleps $0x12,%zmm25,%zmm26");
991
992	/* AVX-512: Op code 0f 3a 09 */
993
994	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
995	asm volatile("vrndscalepd $0x12,%zmm25,%zmm26");
996
997	/* AVX-512: Op code 0f 3a 1a */
998
999	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
1000	asm volatile("vrndscaless $0x12,%xmm24,%xmm25,%xmm26{%k7}");
1001
1002	/* AVX-512: Op code 0f 3a 0b */
1003
1004	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
1005	asm volatile("vrndscalesd $0x12,%xmm24,%xmm25,%xmm26{%k7}");
1006
1007	/* AVX-512: Op code 0f 3a 18 */
1008
1009	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
1010	asm volatile("vinsertf32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1011	asm volatile("vinsertf64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1012
1013	/* AVX-512: Op code 0f 3a 19 */
1014
1015	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
1016	asm volatile("vextractf32x4 $0x12,%zmm25,%xmm26{%k7}");
1017	asm volatile("vextractf64x2 $0x12,%zmm25,%xmm26{%k7}");
1018
1019	/* AVX-512: Op code 0f 3a 1a */
1020
1021	asm volatile("vinsertf32x8 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
1022	asm volatile("vinsertf64x4 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
1023
1024	/* AVX-512: Op code 0f 3a 1b */
1025
1026	asm volatile("vextractf32x8 $0x12,%zmm29,%ymm30{%k7}");
1027	asm volatile("vextractf64x4 $0x12,%zmm26,%ymm27{%k7}");
1028
1029	/* AVX-512: Op code 0f 3a 1e */
1030
1031	asm volatile("vpcmpud $0x12,%zmm29,%zmm30,%k5");
1032	asm volatile("vpcmpuq $0x12,%zmm26,%zmm27,%k5");
1033
1034	/* AVX-512: Op code 0f 3a 1f */
1035
1036	asm volatile("vpcmpd $0x12,%zmm29,%zmm30,%k5");
1037	asm volatile("vpcmpq $0x12,%zmm26,%zmm27,%k5");
1038
1039	/* AVX-512: Op code 0f 3a 23 */
1040
1041	asm volatile("vshuff32x4 $0x12,%zmm28,%zmm29,%zmm30");
1042	asm volatile("vshuff64x2 $0x12,%zmm25,%zmm26,%zmm27");
1043
1044	/* AVX-512: Op code 0f 3a 25 */
1045
1046	asm volatile("vpternlogd $0x12,%zmm28,%zmm29,%zmm30");
1047	asm volatile("vpternlogq $0x12,%zmm28,%zmm29,%zmm30");
1048
1049	/* AVX-512: Op code 0f 3a 26 */
1050
1051	asm volatile("vgetmantps $0x12,%zmm26,%zmm27");
1052	asm volatile("vgetmantpd $0x12,%zmm29,%zmm30");
1053
1054	/* AVX-512: Op code 0f 3a 27 */
1055
1056	asm volatile("vgetmantss $0x12,%xmm25,%xmm26,%xmm27{%k7}");
1057	asm volatile("vgetmantsd $0x12,%xmm28,%xmm29,%xmm30{%k7}");
1058
1059	/* AVX-512: Op code 0f 3a 38 */
1060
1061	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
1062	asm volatile("vinserti32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1063	asm volatile("vinserti64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
1064
1065	/* AVX-512: Op code 0f 3a 39 */
1066
1067	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
1068	asm volatile("vextracti32x4 $0x12,%zmm25,%xmm26{%k7}");
1069	asm volatile("vextracti64x2 $0x12,%zmm25,%xmm26{%k7}");
1070
1071	/* AVX-512: Op code 0f 3a 3a */
1072
1073	asm volatile("vinserti32x8 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
1074	asm volatile("vinserti64x4 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
1075
1076	/* AVX-512: Op code 0f 3a 3b */
1077
1078	asm volatile("vextracti32x8 $0x12,%zmm29,%ymm30{%k7}");
1079	asm volatile("vextracti64x4 $0x12,%zmm26,%ymm27{%k7}");
1080
1081	/* AVX-512: Op code 0f 3a 3e */
1082
1083	asm volatile("vpcmpub $0x12,%zmm29,%zmm30,%k5");
1084	asm volatile("vpcmpuw $0x12,%zmm26,%zmm27,%k5");
1085
1086	/* AVX-512: Op code 0f 3a 3f */
1087
1088	asm volatile("vpcmpb $0x12,%zmm29,%zmm30,%k5");
1089	asm volatile("vpcmpw $0x12,%zmm26,%zmm27,%k5");
1090
1091	/* AVX-512: Op code 0f 3a 43 */
1092
1093	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
1094	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
1095
1096	/* AVX-512: Op code 0f 3a 43 */
1097
1098	asm volatile("vshufi32x4 $0x12,%zmm25,%zmm26,%zmm27");
1099	asm volatile("vshufi64x2 $0x12,%zmm28,%zmm29,%zmm30");
1100
1101	/* AVX-512: Op code 0f 3a 44 */
1102
1103	asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
1104	asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
1105	asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
1106	asm volatile("vpclmulqdq $0x12,%zmm25,%zmm26,%zmm27");
1107
1108	/* AVX-512: Op code 0f 3a 50 */
1109
1110	asm volatile("vrangeps $0x12,%zmm25,%zmm26,%zmm27");
1111	asm volatile("vrangepd $0x12,%zmm28,%zmm29,%zmm30");
1112
1113	/* AVX-512: Op code 0f 3a 51 */
1114
1115	asm volatile("vrangess $0x12,%xmm25,%xmm26,%xmm27");
1116	asm volatile("vrangesd $0x12,%xmm28,%xmm29,%xmm30");
1117
1118	/* AVX-512: Op code 0f 3a 54 */
1119
1120	asm volatile("vfixupimmps $0x12,%zmm28,%zmm29,%zmm30");
1121	asm volatile("vfixupimmpd $0x12,%zmm25,%zmm26,%zmm27");
1122
1123	/* AVX-512: Op code 0f 3a 55 */
1124
1125	asm volatile("vfixupimmss $0x12,%xmm28,%xmm29,%xmm30{%k7}");
1126	asm volatile("vfixupimmsd $0x12,%xmm25,%xmm26,%xmm27{%k7}");
1127
1128	/* AVX-512: Op code 0f 3a 56 */
1129
1130	asm volatile("vreduceps $0x12,%zmm26,%zmm27");
1131	asm volatile("vreducepd $0x12,%zmm29,%zmm30");
1132
1133	/* AVX-512: Op code 0f 3a 57 */
1134
1135	asm volatile("vreducess $0x12,%xmm25,%xmm26,%xmm27");
1136	asm volatile("vreducesd $0x12,%xmm28,%xmm29,%xmm30");
1137
1138	/* AVX-512: Op code 0f 3a 66 */
1139
1140	asm volatile("vfpclassps $0x12,%zmm27,%k5");
1141	asm volatile("vfpclasspd $0x12,%zmm30,%k5");
1142
1143	/* AVX-512: Op code 0f 3a 67 */
1144
1145	asm volatile("vfpclassss $0x12,%xmm27,%k5");
1146	asm volatile("vfpclasssd $0x12,%xmm30,%k5");
1147
1148	/* AVX-512: Op code 0f 3a 70 */
1149
1150	asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
1151	asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
1152	asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
1153	asm volatile("vpshldw $0x12,%zmm25,%zmm26,%zmm27");
1154
1155	/* AVX-512: Op code 0f 3a 71 */
1156
1157	asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
1158	asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
1159	asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
1160	asm volatile("vpshldd $0x12,%zmm25,%zmm26,%zmm27");
1161
1162	asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
1163	asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
1164	asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
1165	asm volatile("vpshldq $0x12,%zmm25,%zmm26,%zmm27");
1166
1167	/* AVX-512: Op code 0f 3a 72 */
1168
1169	asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
1170	asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
1171	asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
1172	asm volatile("vpshrdw $0x12,%zmm25,%zmm26,%zmm27");
1173
1174	/* AVX-512: Op code 0f 3a 73 */
1175
1176	asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
1177	asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
1178	asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
1179	asm volatile("vpshrdd $0x12,%zmm25,%zmm26,%zmm27");
1180
1181	asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
1182	asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
1183	asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
1184	asm volatile("vpshrdq $0x12,%zmm25,%zmm26,%zmm27");
1185
1186	/* AVX-512: Op code 0f 3a ce */
1187
1188	asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
1189
1190	asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
1191	asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
1192	asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
1193	asm volatile("vgf2p8affineqb $0x12,%zmm25,%zmm26,%zmm27");
1194
1195	/* AVX-512: Op code 0f 3a cf */
1196
1197	asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
1198
1199	asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
1200	asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
1201	asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
1202	asm volatile("vgf2p8affineinvqb $0x12,%zmm25,%zmm26,%zmm27");
1203
1204	/* AVX-512: Op code 0f 72 (Grp13) */
1205
1206	asm volatile("vprord $0x12,%zmm25,%zmm26");
1207	asm volatile("vprorq $0x12,%zmm25,%zmm26");
1208	asm volatile("vprold $0x12,%zmm29,%zmm30");
1209	asm volatile("vprolq $0x12,%zmm29,%zmm30");
1210	asm volatile("psrad  $0x2,%mm6");
1211	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
1212	asm volatile("vpsrad $0x5,%zmm26,%zmm22");
1213	asm volatile("vpsraq $0x5,%zmm26,%zmm22");
1214
1215	/* AVX-512: Op code 0f 38 c6 (Grp18) */
1216
1217	asm volatile("vgatherpf0dps 0x7b(%r14,%zmm31,8){%k1}");
1218	asm volatile("vgatherpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
1219	asm volatile("vgatherpf1dps 0x7b(%r14,%zmm31,8){%k1}");
1220	asm volatile("vgatherpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
1221	asm volatile("vscatterpf0dps 0x7b(%r14,%zmm31,8){%k1}");
1222	asm volatile("vscatterpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
1223	asm volatile("vscatterpf1dps 0x7b(%r14,%zmm31,8){%k1}");
1224	asm volatile("vscatterpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
1225
1226	/* AVX-512: Op code 0f 38 c7 (Grp19) */
1227
1228	asm volatile("vgatherpf0qps 0x7b(%r14,%zmm31,8){%k1}");
1229	asm volatile("vgatherpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
1230	asm volatile("vgatherpf1qps 0x7b(%r14,%zmm31,8){%k1}");
1231	asm volatile("vgatherpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
1232	asm volatile("vscatterpf0qps 0x7b(%r14,%zmm31,8){%k1}");
1233	asm volatile("vscatterpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
1234	asm volatile("vscatterpf1qps 0x7b(%r14,%zmm31,8){%k1}");
1235	asm volatile("vscatterpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
1236
1237	/* AVX-512: Examples */
1238
1239	asm volatile("vaddpd %zmm28,%zmm29,%zmm30");
1240	asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}");
1241	asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}{z}");
1242	asm volatile("vaddpd {rn-sae},%zmm28,%zmm29,%zmm30");
1243	asm volatile("vaddpd {ru-sae},%zmm28,%zmm29,%zmm30");
1244	asm volatile("vaddpd {rd-sae},%zmm28,%zmm29,%zmm30");
1245	asm volatile("vaddpd {rz-sae},%zmm28,%zmm29,%zmm30");
1246	asm volatile("vaddpd (%rcx),%zmm29,%zmm30");
1247	asm volatile("vaddpd 0x123(%rax,%r14,8),%zmm29,%zmm30");
1248	asm volatile("vaddpd (%rcx){1to8},%zmm29,%zmm30");
1249	asm volatile("vaddpd 0x1fc0(%rdx),%zmm29,%zmm30");
1250	asm volatile("vaddpd 0x3f8(%rdx){1to8},%zmm29,%zmm30");
1251	asm volatile("vcmpeq_uqps 0x1fc(%rdx){1to16},%zmm30,%k5");
1252	asm volatile("vcmpltsd 0x123(%rax,%r14,8),%xmm29,%k5{%k7}");
1253	asm volatile("vcmplesd {sae},%xmm28,%xmm29,%k5{%k7}");
1254	asm volatile("vgetmantss $0x5b,0x123(%rax,%r14,8),%xmm29,%xmm30{%k7}");
1255
1256	/* bndmk m64, bnd */
1257
1258	asm volatile("bndmk (%rax), %bnd0");
1259	asm volatile("bndmk (%r8), %bnd0");
1260	asm volatile("bndmk (0x12345678), %bnd0");
1261	asm volatile("bndmk (%rax), %bnd3");
1262	asm volatile("bndmk (%rcx,%rax,1), %bnd0");
1263	asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
1264	asm volatile("bndmk (%rax,%rcx,1), %bnd0");
1265	asm volatile("bndmk (%rax,%rcx,8), %bnd0");
1266	asm volatile("bndmk 0x12(%rax), %bnd0");
1267	asm volatile("bndmk 0x12(%rbp), %bnd0");
1268	asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
1269	asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
1270	asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
1271	asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
1272	asm volatile("bndmk 0x12345678(%rax), %bnd0");
1273	asm volatile("bndmk 0x12345678(%rbp), %bnd0");
1274	asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
1275	asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
1276	asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
1277	asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
1278
1279	/* bndcl r/m64, bnd */
1280
1281	asm volatile("bndcl (%rax), %bnd0");
1282	asm volatile("bndcl (%r8), %bnd0");
1283	asm volatile("bndcl (0x12345678), %bnd0");
1284	asm volatile("bndcl (%rax), %bnd3");
1285	asm volatile("bndcl (%rcx,%rax,1), %bnd0");
1286	asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
1287	asm volatile("bndcl (%rax,%rcx,1), %bnd0");
1288	asm volatile("bndcl (%rax,%rcx,8), %bnd0");
1289	asm volatile("bndcl 0x12(%rax), %bnd0");
1290	asm volatile("bndcl 0x12(%rbp), %bnd0");
1291	asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
1292	asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
1293	asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
1294	asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
1295	asm volatile("bndcl 0x12345678(%rax), %bnd0");
1296	asm volatile("bndcl 0x12345678(%rbp), %bnd0");
1297	asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
1298	asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
1299	asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
1300	asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
1301	asm volatile("bndcl %rax, %bnd0");
1302
1303	/* bndcu r/m64, bnd */
1304
1305	asm volatile("bndcu (%rax), %bnd0");
1306	asm volatile("bndcu (%r8), %bnd0");
1307	asm volatile("bndcu (0x12345678), %bnd0");
1308	asm volatile("bndcu (%rax), %bnd3");
1309	asm volatile("bndcu (%rcx,%rax,1), %bnd0");
1310	asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
1311	asm volatile("bndcu (%rax,%rcx,1), %bnd0");
1312	asm volatile("bndcu (%rax,%rcx,8), %bnd0");
1313	asm volatile("bndcu 0x12(%rax), %bnd0");
1314	asm volatile("bndcu 0x12(%rbp), %bnd0");
1315	asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
1316	asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
1317	asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
1318	asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
1319	asm volatile("bndcu 0x12345678(%rax), %bnd0");
1320	asm volatile("bndcu 0x12345678(%rbp), %bnd0");
1321	asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
1322	asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
1323	asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
1324	asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
1325	asm volatile("bndcu %rax, %bnd0");
1326
1327	/* bndcn r/m64, bnd */
1328
1329	asm volatile("bndcn (%rax), %bnd0");
1330	asm volatile("bndcn (%r8), %bnd0");
1331	asm volatile("bndcn (0x12345678), %bnd0");
1332	asm volatile("bndcn (%rax), %bnd3");
1333	asm volatile("bndcn (%rcx,%rax,1), %bnd0");
1334	asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
1335	asm volatile("bndcn (%rax,%rcx,1), %bnd0");
1336	asm volatile("bndcn (%rax,%rcx,8), %bnd0");
1337	asm volatile("bndcn 0x12(%rax), %bnd0");
1338	asm volatile("bndcn 0x12(%rbp), %bnd0");
1339	asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
1340	asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
1341	asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
1342	asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
1343	asm volatile("bndcn 0x12345678(%rax), %bnd0");
1344	asm volatile("bndcn 0x12345678(%rbp), %bnd0");
1345	asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
1346	asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
1347	asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
1348	asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
1349	asm volatile("bndcn %rax, %bnd0");
1350
1351	/* bndmov m128, bnd */
1352
1353	asm volatile("bndmov (%rax), %bnd0");
1354	asm volatile("bndmov (%r8), %bnd0");
1355	asm volatile("bndmov (0x12345678), %bnd0");
1356	asm volatile("bndmov (%rax), %bnd3");
1357	asm volatile("bndmov (%rcx,%rax,1), %bnd0");
1358	asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
1359	asm volatile("bndmov (%rax,%rcx,1), %bnd0");
1360	asm volatile("bndmov (%rax,%rcx,8), %bnd0");
1361	asm volatile("bndmov 0x12(%rax), %bnd0");
1362	asm volatile("bndmov 0x12(%rbp), %bnd0");
1363	asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
1364	asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
1365	asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
1366	asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
1367	asm volatile("bndmov 0x12345678(%rax), %bnd0");
1368	asm volatile("bndmov 0x12345678(%rbp), %bnd0");
1369	asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
1370	asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
1371	asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
1372	asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
1373
1374	/* bndmov bnd, m128 */
1375
1376	asm volatile("bndmov %bnd0, (%rax)");
1377	asm volatile("bndmov %bnd0, (%r8)");
1378	asm volatile("bndmov %bnd0, (0x12345678)");
1379	asm volatile("bndmov %bnd3, (%rax)");
1380	asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
1381	asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
1382	asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
1383	asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
1384	asm volatile("bndmov %bnd0, 0x12(%rax)");
1385	asm volatile("bndmov %bnd0, 0x12(%rbp)");
1386	asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
1387	asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
1388	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
1389	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
1390	asm volatile("bndmov %bnd0, 0x12345678(%rax)");
1391	asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
1392	asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
1393	asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
1394	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
1395	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
1396
1397	/* bndmov bnd2, bnd1 */
1398
1399	asm volatile("bndmov %bnd0, %bnd1");
1400	asm volatile("bndmov %bnd1, %bnd0");
1401
1402	/* bndldx mib, bnd */
1403
1404	asm volatile("bndldx (%rax), %bnd0");
1405	asm volatile("bndldx (%r8), %bnd0");
1406	asm volatile("bndldx (0x12345678), %bnd0");
1407	asm volatile("bndldx (%rax), %bnd3");
1408	asm volatile("bndldx (%rcx,%rax,1), %bnd0");
1409	asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
1410	asm volatile("bndldx (%rax,%rcx,1), %bnd0");
1411	asm volatile("bndldx 0x12(%rax), %bnd0");
1412	asm volatile("bndldx 0x12(%rbp), %bnd0");
1413	asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
1414	asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
1415	asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
1416	asm volatile("bndldx 0x12345678(%rax), %bnd0");
1417	asm volatile("bndldx 0x12345678(%rbp), %bnd0");
1418	asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
1419	asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
1420	asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
1421
1422	/* bndstx bnd, mib */
1423
1424	asm volatile("bndstx %bnd0, (%rax)");
1425	asm volatile("bndstx %bnd0, (%r8)");
1426	asm volatile("bndstx %bnd0, (0x12345678)");
1427	asm volatile("bndstx %bnd3, (%rax)");
1428	asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
1429	asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
1430	asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
1431	asm volatile("bndstx %bnd0, 0x12(%rax)");
1432	asm volatile("bndstx %bnd0, 0x12(%rbp)");
1433	asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
1434	asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
1435	asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
1436	asm volatile("bndstx %bnd0, 0x12345678(%rax)");
1437	asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
1438	asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
1439	asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
1440	asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
1441
1442	/* bnd prefix on call, ret, jmp and all jcc */
1443
1444	asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
1445	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
1446	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
1447	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1448	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1449	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
1450	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
1451
1452	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
1453
1454	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
1455	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
1456	asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
1457	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
1458	asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
1459	asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
1460	asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
1461	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
1462	asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
1463	asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
1464	asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
1465	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
1466	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
1467	asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
1468	asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
1469	asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
1470	asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
1471	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
1472	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
1473	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
1474	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
1475	asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
1476	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
1477	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
1478	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
1479	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
1480
1481	/* sha1nexte xmm2/m128, xmm1 */
1482
1483	asm volatile("sha1nexte %xmm1, %xmm0");
1484	asm volatile("sha1nexte %xmm7, %xmm2");
1485	asm volatile("sha1nexte %xmm8, %xmm0");
1486	asm volatile("sha1nexte %xmm7, %xmm8");
1487	asm volatile("sha1nexte %xmm15, %xmm8");
1488	asm volatile("sha1nexte (%rax), %xmm0");
1489	asm volatile("sha1nexte (%r8), %xmm0");
1490	asm volatile("sha1nexte (0x12345678), %xmm0");
1491	asm volatile("sha1nexte (%rax), %xmm3");
1492	asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
1493	asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
1494	asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
1495	asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
1496	asm volatile("sha1nexte 0x12(%rax), %xmm0");
1497	asm volatile("sha1nexte 0x12(%rbp), %xmm0");
1498	asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
1499	asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
1500	asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
1501	asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
1502	asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
1503	asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
1504	asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
1505	asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
1506	asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
1507	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
1508	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
1509
1510	/* sha1msg1 xmm2/m128, xmm1 */
1511
1512	asm volatile("sha1msg1 %xmm1, %xmm0");
1513	asm volatile("sha1msg1 %xmm7, %xmm2");
1514	asm volatile("sha1msg1 %xmm8, %xmm0");
1515	asm volatile("sha1msg1 %xmm7, %xmm8");
1516	asm volatile("sha1msg1 %xmm15, %xmm8");
1517	asm volatile("sha1msg1 (%rax), %xmm0");
1518	asm volatile("sha1msg1 (%r8), %xmm0");
1519	asm volatile("sha1msg1 (0x12345678), %xmm0");
1520	asm volatile("sha1msg1 (%rax), %xmm3");
1521	asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
1522	asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
1523	asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
1524	asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
1525	asm volatile("sha1msg1 0x12(%rax), %xmm0");
1526	asm volatile("sha1msg1 0x12(%rbp), %xmm0");
1527	asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
1528	asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
1529	asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
1530	asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
1531	asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
1532	asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
1533	asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
1534	asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
1535	asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
1536	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
1537	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
1538
1539	/* sha1msg2 xmm2/m128, xmm1 */
1540
1541	asm volatile("sha1msg2 %xmm1, %xmm0");
1542	asm volatile("sha1msg2 %xmm7, %xmm2");
1543	asm volatile("sha1msg2 %xmm8, %xmm0");
1544	asm volatile("sha1msg2 %xmm7, %xmm8");
1545	asm volatile("sha1msg2 %xmm15, %xmm8");
1546	asm volatile("sha1msg2 (%rax), %xmm0");
1547	asm volatile("sha1msg2 (%r8), %xmm0");
1548	asm volatile("sha1msg2 (0x12345678), %xmm0");
1549	asm volatile("sha1msg2 (%rax), %xmm3");
1550	asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
1551	asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
1552	asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
1553	asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
1554	asm volatile("sha1msg2 0x12(%rax), %xmm0");
1555	asm volatile("sha1msg2 0x12(%rbp), %xmm0");
1556	asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
1557	asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
1558	asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
1559	asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
1560	asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
1561	asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
1562	asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
1563	asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
1564	asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
1565	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
1566	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
1567
1568	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
1569	/* Note sha256rnds2 has an implicit operand 'xmm0' */
1570
1571	asm volatile("sha256rnds2 %xmm4, %xmm1");
1572	asm volatile("sha256rnds2 %xmm7, %xmm2");
1573	asm volatile("sha256rnds2 %xmm8, %xmm1");
1574	asm volatile("sha256rnds2 %xmm7, %xmm8");
1575	asm volatile("sha256rnds2 %xmm15, %xmm8");
1576	asm volatile("sha256rnds2 (%rax), %xmm1");
1577	asm volatile("sha256rnds2 (%r8), %xmm1");
1578	asm volatile("sha256rnds2 (0x12345678), %xmm1");
1579	asm volatile("sha256rnds2 (%rax), %xmm3");
1580	asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
1581	asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
1582	asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
1583	asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
1584	asm volatile("sha256rnds2 0x12(%rax), %xmm1");
1585	asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
1586	asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
1587	asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
1588	asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
1589	asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
1590	asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
1591	asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
1592	asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
1593	asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
1594	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
1595	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
1596	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
1597
1598	/* sha256msg1 xmm2/m128, xmm1 */
1599
1600	asm volatile("sha256msg1 %xmm1, %xmm0");
1601	asm volatile("sha256msg1 %xmm7, %xmm2");
1602	asm volatile("sha256msg1 %xmm8, %xmm0");
1603	asm volatile("sha256msg1 %xmm7, %xmm8");
1604	asm volatile("sha256msg1 %xmm15, %xmm8");
1605	asm volatile("sha256msg1 (%rax), %xmm0");
1606	asm volatile("sha256msg1 (%r8), %xmm0");
1607	asm volatile("sha256msg1 (0x12345678), %xmm0");
1608	asm volatile("sha256msg1 (%rax), %xmm3");
1609	asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
1610	asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
1611	asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
1612	asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
1613	asm volatile("sha256msg1 0x12(%rax), %xmm0");
1614	asm volatile("sha256msg1 0x12(%rbp), %xmm0");
1615	asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
1616	asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
1617	asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
1618	asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
1619	asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
1620	asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
1621	asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
1622	asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
1623	asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
1624	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
1625	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
1626
1627	/* sha256msg2 xmm2/m128, xmm1 */
1628
1629	asm volatile("sha256msg2 %xmm1, %xmm0");
1630	asm volatile("sha256msg2 %xmm7, %xmm2");
1631	asm volatile("sha256msg2 %xmm8, %xmm0");
1632	asm volatile("sha256msg2 %xmm7, %xmm8");
1633	asm volatile("sha256msg2 %xmm15, %xmm8");
1634	asm volatile("sha256msg2 (%rax), %xmm0");
1635	asm volatile("sha256msg2 (%r8), %xmm0");
1636	asm volatile("sha256msg2 (0x12345678), %xmm0");
1637	asm volatile("sha256msg2 (%rax), %xmm3");
1638	asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
1639	asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
1640	asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
1641	asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
1642	asm volatile("sha256msg2 0x12(%rax), %xmm0");
1643	asm volatile("sha256msg2 0x12(%rbp), %xmm0");
1644	asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
1645	asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
1646	asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
1647	asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
1648	asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
1649	asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
1650	asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
1651	asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
1652	asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
1653	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
1654	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
1655
1656	/* clflushopt m8 */
1657
1658	asm volatile("clflushopt (%rax)");
1659	asm volatile("clflushopt (%r8)");
1660	asm volatile("clflushopt (0x12345678)");
1661	asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
1662	asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
1663	/* Also check instructions in the same group encoding as clflushopt */
1664	asm volatile("clflush (%rax)");
1665	asm volatile("clflush (%r8)");
1666	asm volatile("sfence");
1667
1668	/* clwb m8 */
1669
1670	asm volatile("clwb (%rax)");
1671	asm volatile("clwb (%r8)");
1672	asm volatile("clwb (0x12345678)");
1673	asm volatile("clwb 0x12345678(%rax,%rcx,8)");
1674	asm volatile("clwb 0x12345678(%r8,%rcx,8)");
1675	/* Also check instructions in the same group encoding as clwb */
1676	asm volatile("xsaveopt (%rax)");
1677	asm volatile("xsaveopt (%r8)");
1678	asm volatile("mfence");
1679
1680	/* cldemote m8 */
1681
1682	asm volatile("cldemote (%rax)");
1683	asm volatile("cldemote (%r8)");
1684	asm volatile("cldemote (0x12345678)");
1685	asm volatile("cldemote 0x12345678(%rax,%rcx,8)");
1686	asm volatile("cldemote 0x12345678(%r8,%rcx,8)");
1687
1688	/* xsavec mem */
1689
1690	asm volatile("xsavec (%rax)");
1691	asm volatile("xsavec (%r8)");
1692	asm volatile("xsavec (0x12345678)");
1693	asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
1694	asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
1695
1696	/* xsaves mem */
1697
1698	asm volatile("xsaves (%rax)");
1699	asm volatile("xsaves (%r8)");
1700	asm volatile("xsaves (0x12345678)");
1701	asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
1702	asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
1703
1704	/* xrstors mem */
1705
1706	asm volatile("xrstors (%rax)");
1707	asm volatile("xrstors (%r8)");
1708	asm volatile("xrstors (0x12345678)");
1709	asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
1710	asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
1711
1712	/* ptwrite */
1713
1714	asm volatile("ptwrite (%rax)");
1715	asm volatile("ptwrite (%r8)");
1716	asm volatile("ptwrite (0x12345678)");
1717	asm volatile("ptwrite 0x12345678(%rax,%rcx,8)");
1718	asm volatile("ptwrite 0x12345678(%r8,%rcx,8)");
1719
1720	asm volatile("ptwritel (%rax)");
1721	asm volatile("ptwritel (%r8)");
1722	asm volatile("ptwritel (0x12345678)");
1723	asm volatile("ptwritel 0x12345678(%rax,%rcx,8)");
1724	asm volatile("ptwritel 0x12345678(%r8,%rcx,8)");
1725
1726	asm volatile("ptwriteq (%rax)");
1727	asm volatile("ptwriteq (%r8)");
1728	asm volatile("ptwriteq (0x12345678)");
1729	asm volatile("ptwriteq 0x12345678(%rax,%rcx,8)");
1730	asm volatile("ptwriteq 0x12345678(%r8,%rcx,8)");
1731
1732	/* tpause */
1733
1734	asm volatile("tpause %ebx");
1735	asm volatile("tpause %r8d");
1736
1737	/* umonitor */
1738
1739	asm volatile("umonitor %eax");
1740	asm volatile("umonitor %rax");
1741	asm volatile("umonitor %r8d");
1742
1743	/* umwait */
1744
1745	asm volatile("umwait %eax");
1746	asm volatile("umwait %r8d");
1747
1748	/* movdiri */
1749
1750	asm volatile("movdiri %rax,(%rbx)");
1751	asm volatile("movdiri %rcx,0x12345678(%rax)");
1752
1753	/* movdir64b */
1754
1755	asm volatile("movdir64b (%rax),%rbx");
1756	asm volatile("movdir64b 0x12345678(%rax),%rcx");
1757	asm volatile("movdir64b (%eax),%ebx");
1758	asm volatile("movdir64b 0x12345678(%eax),%ecx");
1759
1760	/* enqcmd */
1761
1762	asm volatile("enqcmd (%rax),%rbx");
1763	asm volatile("enqcmd 0x12345678(%rax),%rcx");
1764	asm volatile("enqcmd (%eax),%ebx");
1765	asm volatile("enqcmd 0x12345678(%eax),%ecx");
1766
1767	/* enqcmds */
1768
1769	asm volatile("enqcmds (%rax),%rbx");
1770	asm volatile("enqcmds 0x12345678(%rax),%rcx");
1771	asm volatile("enqcmds (%eax),%ebx");
1772	asm volatile("enqcmds 0x12345678(%eax),%ecx");
1773
1774	/* incsspd/q */
1775
1776	asm volatile("incsspd %eax");
1777	asm volatile("incsspd %r8d");
1778	asm volatile("incsspq %rax");
1779	asm volatile("incsspq %r8");
1780	/* Also check instructions in the same group encoding as incsspd/q */
1781	asm volatile("xrstor (%rax)");
1782	asm volatile("xrstor (%r8)");
1783	asm volatile("xrstor (0x12345678)");
1784	asm volatile("xrstor 0x12345678(%rax,%rcx,8)");
1785	asm volatile("xrstor 0x12345678(%r8,%rcx,8)");
1786	asm volatile("lfence");
1787
1788	/* rdsspd/q */
1789
1790	asm volatile("rdsspd %eax");
1791	asm volatile("rdsspd %r8d");
1792	asm volatile("rdsspq %rax");
1793	asm volatile("rdsspq %r8");
1794
1795	/* saveprevssp */
1796
1797	asm volatile("saveprevssp");
1798
1799	/* rstorssp */
1800
1801	asm volatile("rstorssp (%rax)");
1802	asm volatile("rstorssp (%r8)");
1803	asm volatile("rstorssp (0x12345678)");
1804	asm volatile("rstorssp 0x12345678(%rax,%rcx,8)");
1805	asm volatile("rstorssp 0x12345678(%r8,%rcx,8)");
1806
1807	/* wrssd/q */
1808
1809	asm volatile("wrssd %ecx,(%rax)");
1810	asm volatile("wrssd %edx,(%r8)");
1811	asm volatile("wrssd %edx,(0x12345678)");
1812	asm volatile("wrssd %edx,0x12345678(%rax,%rcx,8)");
1813	asm volatile("wrssd %edx,0x12345678(%r8,%rcx,8)");
1814	asm volatile("wrssq %rcx,(%rax)");
1815	asm volatile("wrssq %rdx,(%r8)");
1816	asm volatile("wrssq %rdx,(0x12345678)");
1817	asm volatile("wrssq %rdx,0x12345678(%rax,%rcx,8)");
1818	asm volatile("wrssq %rdx,0x12345678(%r8,%rcx,8)");
1819
1820	/* wrussd/q */
1821
1822	asm volatile("wrussd %ecx,(%rax)");
1823	asm volatile("wrussd %edx,(%r8)");
1824	asm volatile("wrussd %edx,(0x12345678)");
1825	asm volatile("wrussd %edx,0x12345678(%rax,%rcx,8)");
1826	asm volatile("wrussd %edx,0x12345678(%r8,%rcx,8)");
1827	asm volatile("wrussq %rcx,(%rax)");
1828	asm volatile("wrussq %rdx,(%r8)");
1829	asm volatile("wrussq %rdx,(0x12345678)");
1830	asm volatile("wrussq %rdx,0x12345678(%rax,%rcx,8)");
1831	asm volatile("wrussq %rdx,0x12345678(%r8,%rcx,8)");
1832
1833	/* setssbsy */
1834
1835	asm volatile("setssbsy");
1836	/* Also check instructions in the same group encoding as setssbsy */
1837	asm volatile("rdpkru");
1838	asm volatile("wrpkru");
1839
1840	/* clrssbsy */
1841
1842	asm volatile("clrssbsy (%rax)");
1843	asm volatile("clrssbsy (%r8)");
1844	asm volatile("clrssbsy (0x12345678)");
1845	asm volatile("clrssbsy 0x12345678(%rax,%rcx,8)");
1846	asm volatile("clrssbsy 0x12345678(%r8,%rcx,8)");
1847
1848	/* endbr32/64 */
1849
1850	asm volatile("endbr32");
1851	asm volatile("endbr64");
1852
1853	/* call with/without notrack prefix */
1854
1855	asm volatile("callq *%rax");				/* Expecting: call indirect 0 */
1856	asm volatile("callq *(%rax)");				/* Expecting: call indirect 0 */
1857	asm volatile("callq *(%r8)");				/* Expecting: call indirect 0 */
1858	asm volatile("callq *(0x12345678)");			/* Expecting: call indirect 0 */
1859	asm volatile("callq *0x12345678(%rax,%rcx,8)");		/* Expecting: call indirect 0 */
1860	asm volatile("callq *0x12345678(%r8,%rcx,8)");		/* Expecting: call indirect 0 */
1861
1862	asm volatile("bnd callq *%rax");			/* Expecting: call indirect 0 */
1863	asm volatile("bnd callq *(%rax)");			/* Expecting: call indirect 0 */
1864	asm volatile("bnd callq *(%r8)");			/* Expecting: call indirect 0 */
1865	asm volatile("bnd callq *(0x12345678)");		/* Expecting: call indirect 0 */
1866	asm volatile("bnd callq *0x12345678(%rax,%rcx,8)");	/* Expecting: call indirect 0 */
1867	asm volatile("bnd callq *0x12345678(%r8,%rcx,8)");	/* Expecting: call indirect 0 */
1868
1869	asm volatile("notrack callq *%rax");			/* Expecting: call indirect 0 */
1870	asm volatile("notrack callq *(%rax)");			/* Expecting: call indirect 0 */
1871	asm volatile("notrack callq *(%r8)");			/* Expecting: call indirect 0 */
1872	asm volatile("notrack callq *(0x12345678)");		/* Expecting: call indirect 0 */
1873	asm volatile("notrack callq *0x12345678(%rax,%rcx,8)");	/* Expecting: call indirect 0 */
1874	asm volatile("notrack callq *0x12345678(%r8,%rcx,8)");	/* Expecting: call indirect 0 */
1875
1876	asm volatile("notrack bnd callq *%rax");		/* Expecting: call indirect 0 */
1877	asm volatile("notrack bnd callq *(%rax)");		/* Expecting: call indirect 0 */
1878	asm volatile("notrack bnd callq *(%r8)");		/* Expecting: call indirect 0 */
1879	asm volatile("notrack bnd callq *(0x12345678)");	/* Expecting: call indirect 0 */
1880	asm volatile("notrack bnd callq *0x12345678(%rax,%rcx,8)");	/* Expecting: call indirect 0 */
1881	asm volatile("notrack bnd callq *0x12345678(%r8,%rcx,8)");	/* Expecting: call indirect 0 */
1882
1883	/* jmp with/without notrack prefix */
1884
1885	asm volatile("jmpq *%rax");				/* Expecting: jmp indirect 0 */
1886	asm volatile("jmpq *(%rax)");				/* Expecting: jmp indirect 0 */
1887	asm volatile("jmpq *(%r8)");				/* Expecting: jmp indirect 0 */
1888	asm volatile("jmpq *(0x12345678)");			/* Expecting: jmp indirect 0 */
1889	asm volatile("jmpq *0x12345678(%rax,%rcx,8)");		/* Expecting: jmp indirect 0 */
1890	asm volatile("jmpq *0x12345678(%r8,%rcx,8)");		/* Expecting: jmp indirect 0 */
1891
1892	asm volatile("bnd jmpq *%rax");				/* Expecting: jmp indirect 0 */
1893	asm volatile("bnd jmpq *(%rax)");			/* Expecting: jmp indirect 0 */
1894	asm volatile("bnd jmpq *(%r8)");			/* Expecting: jmp indirect 0 */
1895	asm volatile("bnd jmpq *(0x12345678)");			/* Expecting: jmp indirect 0 */
1896	asm volatile("bnd jmpq *0x12345678(%rax,%rcx,8)");	/* Expecting: jmp indirect 0 */
1897	asm volatile("bnd jmpq *0x12345678(%r8,%rcx,8)");	/* Expecting: jmp indirect 0 */
1898
1899	asm volatile("notrack jmpq *%rax");			/* Expecting: jmp indirect 0 */
1900	asm volatile("notrack jmpq *(%rax)");			/* Expecting: jmp indirect 0 */
1901	asm volatile("notrack jmpq *(%r8)");			/* Expecting: jmp indirect 0 */
1902	asm volatile("notrack jmpq *(0x12345678)");		/* Expecting: jmp indirect 0 */
1903	asm volatile("notrack jmpq *0x12345678(%rax,%rcx,8)");	/* Expecting: jmp indirect 0 */
1904	asm volatile("notrack jmpq *0x12345678(%r8,%rcx,8)");	/* Expecting: jmp indirect 0 */
1905
1906	asm volatile("notrack bnd jmpq *%rax");			/* Expecting: jmp indirect 0 */
1907	asm volatile("notrack bnd jmpq *(%rax)");		/* Expecting: jmp indirect 0 */
1908	asm volatile("notrack bnd jmpq *(%r8)");		/* Expecting: jmp indirect 0 */
1909	asm volatile("notrack bnd jmpq *(0x12345678)");		/* Expecting: jmp indirect 0 */
1910	asm volatile("notrack bnd jmpq *0x12345678(%rax,%rcx,8)");	/* Expecting: jmp indirect 0 */
1911	asm volatile("notrack bnd jmpq *0x12345678(%r8,%rcx,8)");	/* Expecting: jmp indirect 0 */
1912
1913#else  /* #ifdef __x86_64__ */
1914
1915	/* bound r32, mem (same op code as EVEX prefix) */
1916
1917	asm volatile("bound %eax, 0x12345678(%ecx)");
1918	asm volatile("bound %ecx, 0x12345678(%eax)");
1919	asm volatile("bound %edx, 0x12345678(%eax)");
1920	asm volatile("bound %ebx, 0x12345678(%eax)");
1921	asm volatile("bound %esp, 0x12345678(%eax)");
1922	asm volatile("bound %ebp, 0x12345678(%eax)");
1923	asm volatile("bound %esi, 0x12345678(%eax)");
1924	asm volatile("bound %edi, 0x12345678(%eax)");
1925	asm volatile("bound %ecx, (%eax)");
1926	asm volatile("bound %eax, (0x12345678)");
1927	asm volatile("bound %edx, (%ecx,%eax,1)");
1928	asm volatile("bound %edx, 0x12345678(,%eax,1)");
1929	asm volatile("bound %edx, (%eax,%ecx,1)");
1930	asm volatile("bound %edx, (%eax,%ecx,8)");
1931	asm volatile("bound %edx, 0x12(%eax)");
1932	asm volatile("bound %edx, 0x12(%ebp)");
1933	asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
1934	asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
1935	asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
1936	asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
1937	asm volatile("bound %edx, 0x12345678(%eax)");
1938	asm volatile("bound %edx, 0x12345678(%ebp)");
1939	asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
1940	asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
1941	asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
1942	asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
1943
1944	/* bound r16, mem (same op code as EVEX prefix) */
1945
1946	asm volatile("bound %ax, 0x12345678(%ecx)");
1947	asm volatile("bound %cx, 0x12345678(%eax)");
1948	asm volatile("bound %dx, 0x12345678(%eax)");
1949	asm volatile("bound %bx, 0x12345678(%eax)");
1950	asm volatile("bound %sp, 0x12345678(%eax)");
1951	asm volatile("bound %bp, 0x12345678(%eax)");
1952	asm volatile("bound %si, 0x12345678(%eax)");
1953	asm volatile("bound %di, 0x12345678(%eax)");
1954	asm volatile("bound %cx, (%eax)");
1955	asm volatile("bound %ax, (0x12345678)");
1956	asm volatile("bound %dx, (%ecx,%eax,1)");
1957	asm volatile("bound %dx, 0x12345678(,%eax,1)");
1958	asm volatile("bound %dx, (%eax,%ecx,1)");
1959	asm volatile("bound %dx, (%eax,%ecx,8)");
1960	asm volatile("bound %dx, 0x12(%eax)");
1961	asm volatile("bound %dx, 0x12(%ebp)");
1962	asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
1963	asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
1964	asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
1965	asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
1966	asm volatile("bound %dx, 0x12345678(%eax)");
1967	asm volatile("bound %dx, 0x12345678(%ebp)");
1968	asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
1969	asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
1970	asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
1971	asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
1972
1973	/* AVX-512: Instructions with the same op codes as Mask Instructions  */
1974
1975	asm volatile("cmovno %eax,%ebx");
1976	asm volatile("cmovno 0x12345678(%eax),%ecx");
1977	asm volatile("cmovno 0x12345678(%eax),%cx");
1978
1979	asm volatile("cmove  %eax,%ebx");
1980	asm volatile("cmove 0x12345678(%eax),%ecx");
1981	asm volatile("cmove 0x12345678(%eax),%cx");
1982
1983	asm volatile("seto    0x12345678(%eax)");
1984	asm volatile("setno   0x12345678(%eax)");
1985	asm volatile("setb    0x12345678(%eax)");
1986	asm volatile("setc    0x12345678(%eax)");
1987	asm volatile("setnae  0x12345678(%eax)");
1988	asm volatile("setae   0x12345678(%eax)");
1989	asm volatile("setnb   0x12345678(%eax)");
1990	asm volatile("setnc   0x12345678(%eax)");
1991	asm volatile("sets    0x12345678(%eax)");
1992	asm volatile("setns   0x12345678(%eax)");
1993
1994	/* AVX-512: Mask Instructions */
1995
1996	asm volatile("kandw  %k7,%k6,%k5");
1997	asm volatile("kandq  %k7,%k6,%k5");
1998	asm volatile("kandb  %k7,%k6,%k5");
1999	asm volatile("kandd  %k7,%k6,%k5");
2000
2001	asm volatile("kandnw  %k7,%k6,%k5");
2002	asm volatile("kandnq  %k7,%k6,%k5");
2003	asm volatile("kandnb  %k7,%k6,%k5");
2004	asm volatile("kandnd  %k7,%k6,%k5");
2005
2006	asm volatile("knotw  %k7,%k6");
2007	asm volatile("knotq  %k7,%k6");
2008	asm volatile("knotb  %k7,%k6");
2009	asm volatile("knotd  %k7,%k6");
2010
2011	asm volatile("korw  %k7,%k6,%k5");
2012	asm volatile("korq  %k7,%k6,%k5");
2013	asm volatile("korb  %k7,%k6,%k5");
2014	asm volatile("kord  %k7,%k6,%k5");
2015
2016	asm volatile("kxnorw  %k7,%k6,%k5");
2017	asm volatile("kxnorq  %k7,%k6,%k5");
2018	asm volatile("kxnorb  %k7,%k6,%k5");
2019	asm volatile("kxnord  %k7,%k6,%k5");
2020
2021	asm volatile("kxorw  %k7,%k6,%k5");
2022	asm volatile("kxorq  %k7,%k6,%k5");
2023	asm volatile("kxorb  %k7,%k6,%k5");
2024	asm volatile("kxord  %k7,%k6,%k5");
2025
2026	asm volatile("kaddw  %k7,%k6,%k5");
2027	asm volatile("kaddq  %k7,%k6,%k5");
2028	asm volatile("kaddb  %k7,%k6,%k5");
2029	asm volatile("kaddd  %k7,%k6,%k5");
2030
2031	asm volatile("kunpckbw %k7,%k6,%k5");
2032	asm volatile("kunpckwd %k7,%k6,%k5");
2033	asm volatile("kunpckdq %k7,%k6,%k5");
2034
2035	asm volatile("kmovw  %k6,%k5");
2036	asm volatile("kmovw  (%ecx),%k5");
2037	asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
2038	asm volatile("kmovw  %k5,(%ecx)");
2039	asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
2040	asm volatile("kmovw  %eax,%k5");
2041	asm volatile("kmovw  %ebp,%k5");
2042	asm volatile("kmovw  %k5,%eax");
2043	asm volatile("kmovw  %k5,%ebp");
2044
2045	asm volatile("kmovq  %k6,%k5");
2046	asm volatile("kmovq  (%ecx),%k5");
2047	asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
2048	asm volatile("kmovq  %k5,(%ecx)");
2049	asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
2050
2051	asm volatile("kmovb  %k6,%k5");
2052	asm volatile("kmovb  (%ecx),%k5");
2053	asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
2054	asm volatile("kmovb  %k5,(%ecx)");
2055	asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
2056	asm volatile("kmovb  %eax,%k5");
2057	asm volatile("kmovb  %ebp,%k5");
2058	asm volatile("kmovb  %k5,%eax");
2059	asm volatile("kmovb  %k5,%ebp");
2060
2061	asm volatile("kmovd  %k6,%k5");
2062	asm volatile("kmovd  (%ecx),%k5");
2063	asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
2064	asm volatile("kmovd  %k5,(%ecx)");
2065	asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
2066	asm volatile("kmovd  %eax,%k5");
2067	asm volatile("kmovd  %ebp,%k5");
2068	asm volatile("kmovd  %k5,%eax");
2069	asm volatile("kmovd  %k5,%ebp");
2070
2071	asm volatile("kortestw %k6,%k5");
2072	asm volatile("kortestq %k6,%k5");
2073	asm volatile("kortestb %k6,%k5");
2074	asm volatile("kortestd %k6,%k5");
2075
2076	asm volatile("ktestw %k6,%k5");
2077	asm volatile("ktestq %k6,%k5");
2078	asm volatile("ktestb %k6,%k5");
2079	asm volatile("ktestd %k6,%k5");
2080
2081	asm volatile("kshiftrw $0x12,%k6,%k5");
2082	asm volatile("kshiftrq $0x5b,%k6,%k5");
2083	asm volatile("kshiftlw $0x12,%k6,%k5");
2084	asm volatile("kshiftlq $0x5b,%k6,%k5");
2085
2086	/* AVX-512: Op code 0f 5b */
2087	asm volatile("vcvtdq2ps %xmm5,%xmm6");
2088	asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
2089	asm volatile("vcvtps2dq %xmm5,%xmm6");
2090	asm volatile("vcvttps2dq %xmm5,%xmm6");
2091
2092	/* AVX-512: Op code 0f 6f */
2093
2094	asm volatile("movq   %mm0,%mm4");
2095	asm volatile("vmovdqa %ymm4,%ymm6");
2096	asm volatile("vmovdqa32 %zmm5,%zmm6");
2097	asm volatile("vmovdqa64 %zmm5,%zmm6");
2098	asm volatile("vmovdqu %ymm4,%ymm6");
2099	asm volatile("vmovdqu32 %zmm5,%zmm6");
2100	asm volatile("vmovdqu64 %zmm5,%zmm6");
2101	asm volatile("vmovdqu8 %zmm5,%zmm6");
2102	asm volatile("vmovdqu16 %zmm5,%zmm6");
2103
2104	/* AVX-512: Op code 0f 78 */
2105
2106	asm volatile("vmread %eax,%ebx");
2107	asm volatile("vcvttps2udq %zmm5,%zmm6");
2108	asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
2109	asm volatile("vcvttsd2usi %xmm6,%eax");
2110	asm volatile("vcvttss2usi %xmm6,%eax");
2111	asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
2112	asm volatile("vcvttpd2uqq %zmm5,%zmm6");
2113
2114	/* AVX-512: Op code 0f 79 */
2115
2116	asm volatile("vmwrite %eax,%ebx");
2117	asm volatile("vcvtps2udq %zmm5,%zmm6");
2118	asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
2119	asm volatile("vcvtsd2usi %xmm6,%eax");
2120	asm volatile("vcvtss2usi %xmm6,%eax");
2121	asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
2122	asm volatile("vcvtpd2uqq %zmm5,%zmm6");
2123
2124	/* AVX-512: Op code 0f 7a */
2125
2126	asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
2127	asm volatile("vcvtuqq2pd %zmm5,%zmm6");
2128	asm volatile("vcvtudq2ps %zmm5,%zmm6");
2129	asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
2130	asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
2131	asm volatile("vcvttpd2qq %zmm5,%zmm6");
2132
2133	/* AVX-512: Op code 0f 7b */
2134
2135	asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
2136	asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
2137	asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
2138	asm volatile("vcvtpd2qq %zmm5,%zmm6");
2139
2140	/* AVX-512: Op code 0f 7f */
2141
2142	asm volatile("movq.s  %mm0,%mm4");
2143	asm volatile("vmovdqa.s %ymm5,%ymm6");
2144	asm volatile("vmovdqa32.s %zmm5,%zmm6");
2145	asm volatile("vmovdqa64.s %zmm5,%zmm6");
2146	asm volatile("vmovdqu.s %ymm5,%ymm6");
2147	asm volatile("vmovdqu32.s %zmm5,%zmm6");
2148	asm volatile("vmovdqu64.s %zmm5,%zmm6");
2149	asm volatile("vmovdqu8.s %zmm5,%zmm6");
2150	asm volatile("vmovdqu16.s %zmm5,%zmm6");
2151
2152	/* AVX-512: Op code 0f db */
2153
2154	asm volatile("pand  %mm1,%mm2");
2155	asm volatile("pand  %xmm1,%xmm2");
2156	asm volatile("vpand  %ymm4,%ymm6,%ymm2");
2157	asm volatile("vpandd %zmm4,%zmm5,%zmm6");
2158	asm volatile("vpandq %zmm4,%zmm5,%zmm6");
2159
2160	/* AVX-512: Op code 0f df */
2161
2162	asm volatile("pandn  %mm1,%mm2");
2163	asm volatile("pandn  %xmm1,%xmm2");
2164	asm volatile("vpandn %ymm4,%ymm6,%ymm2");
2165	asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
2166	asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
2167
2168	/* AVX-512: Op code 0f e6 */
2169
2170	asm volatile("vcvttpd2dq %xmm1,%xmm2");
2171	asm volatile("vcvtdq2pd %xmm5,%xmm6");
2172	asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
2173	asm volatile("vcvtqq2pd %zmm5,%zmm6");
2174	asm volatile("vcvtpd2dq %xmm1,%xmm2");
2175
2176	/* AVX-512: Op code 0f eb */
2177
2178	asm volatile("por   %mm4,%mm6");
2179	asm volatile("vpor   %ymm4,%ymm6,%ymm2");
2180	asm volatile("vpord  %zmm4,%zmm5,%zmm6");
2181	asm volatile("vporq  %zmm4,%zmm5,%zmm6");
2182
2183	/* AVX-512: Op code 0f ef */
2184
2185	asm volatile("pxor   %mm4,%mm6");
2186	asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
2187	asm volatile("vpxord %zmm4,%zmm5,%zmm6");
2188	asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
2189
2190	/* AVX-512: Op code 0f 38 10 */
2191
2192	asm volatile("pblendvb %xmm1,%xmm0");
2193	asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
2194	asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
2195
2196	/* AVX-512: Op code 0f 38 11 */
2197
2198	asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
2199	asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
2200
2201	/* AVX-512: Op code 0f 38 12 */
2202
2203	asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
2204	asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
2205
2206	/* AVX-512: Op code 0f 38 13 */
2207
2208	asm volatile("vcvtph2ps %xmm3,%ymm5");
2209	asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
2210	asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
2211
2212	/* AVX-512: Op code 0f 38 14 */
2213
2214	asm volatile("blendvps %xmm1,%xmm0");
2215	asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
2216	asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
2217	asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
2218
2219	/* AVX-512: Op code 0f 38 15 */
2220
2221	asm volatile("blendvpd %xmm1,%xmm0");
2222	asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
2223	asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
2224	asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
2225
2226	/* AVX-512: Op code 0f 38 16 */
2227
2228	asm volatile("vpermps %ymm4,%ymm6,%ymm2");
2229	asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
2230	asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
2231
2232	/* AVX-512: Op code 0f 38 19 */
2233
2234	asm volatile("vbroadcastsd %xmm4,%ymm6");
2235	asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
2236
2237	/* AVX-512: Op code 0f 38 1a */
2238
2239	asm volatile("vbroadcastf128 (%ecx),%ymm4");
2240	asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
2241	asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
2242
2243	/* AVX-512: Op code 0f 38 1b */
2244
2245	asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
2246	asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
2247
2248	/* AVX-512: Op code 0f 38 1f */
2249
2250	asm volatile("vpabsq %zmm4,%zmm6");
2251
2252	/* AVX-512: Op code 0f 38 20 */
2253
2254	asm volatile("vpmovsxbw %xmm4,%xmm5");
2255	asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
2256
2257	/* AVX-512: Op code 0f 38 21 */
2258
2259	asm volatile("vpmovsxbd %xmm4,%ymm6");
2260	asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
2261
2262	/* AVX-512: Op code 0f 38 22 */
2263
2264	asm volatile("vpmovsxbq %xmm4,%ymm4");
2265	asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
2266
2267	/* AVX-512: Op code 0f 38 23 */
2268
2269	asm volatile("vpmovsxwd %xmm4,%ymm4");
2270	asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
2271
2272	/* AVX-512: Op code 0f 38 24 */
2273
2274	asm volatile("vpmovsxwq %xmm4,%ymm6");
2275	asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
2276
2277	/* AVX-512: Op code 0f 38 25 */
2278
2279	asm volatile("vpmovsxdq %xmm4,%ymm4");
2280	asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
2281
2282	/* AVX-512: Op code 0f 38 26 */
2283
2284	asm volatile("vptestmb %zmm5,%zmm6,%k5");
2285	asm volatile("vptestmw %zmm5,%zmm6,%k5");
2286	asm volatile("vptestnmb %zmm4,%zmm5,%k5");
2287	asm volatile("vptestnmw %zmm4,%zmm5,%k5");
2288
2289	/* AVX-512: Op code 0f 38 27 */
2290
2291	asm volatile("vptestmd %zmm5,%zmm6,%k5");
2292	asm volatile("vptestmq %zmm5,%zmm6,%k5");
2293	asm volatile("vptestnmd %zmm4,%zmm5,%k5");
2294	asm volatile("vptestnmq %zmm4,%zmm5,%k5");
2295
2296	/* AVX-512: Op code 0f 38 28 */
2297
2298	asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
2299	asm volatile("vpmovm2b %k5,%zmm6");
2300	asm volatile("vpmovm2w %k5,%zmm6");
2301
2302	/* AVX-512: Op code 0f 38 29 */
2303
2304	asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
2305	asm volatile("vpmovb2m %zmm6,%k5");
2306	asm volatile("vpmovw2m %zmm6,%k5");
2307
2308	/* AVX-512: Op code 0f 38 2a */
2309
2310	asm volatile("vmovntdqa (%ecx),%ymm4");
2311	asm volatile("vpbroadcastmb2q %k6,%zmm1");
2312
2313	/* AVX-512: Op code 0f 38 2c */
2314
2315	asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
2316	asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
2317	asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
2318
2319	/* AVX-512: Op code 0f 38 2d */
2320
2321	asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
2322	asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
2323	asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
2324
2325	/* AVX-512: Op code 0f 38 30 */
2326
2327	asm volatile("vpmovzxbw %xmm4,%ymm4");
2328	asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
2329
2330	/* AVX-512: Op code 0f 38 31 */
2331
2332	asm volatile("vpmovzxbd %xmm4,%ymm6");
2333	asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
2334
2335	/* AVX-512: Op code 0f 38 32 */
2336
2337	asm volatile("vpmovzxbq %xmm4,%ymm4");
2338	asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
2339
2340	/* AVX-512: Op code 0f 38 33 */
2341
2342	asm volatile("vpmovzxwd %xmm4,%ymm4");
2343	asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
2344
2345	/* AVX-512: Op code 0f 38 34 */
2346
2347	asm volatile("vpmovzxwq %xmm4,%ymm6");
2348	asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
2349
2350	/* AVX-512: Op code 0f 38 35 */
2351
2352	asm volatile("vpmovzxdq %xmm4,%ymm4");
2353	asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
2354
2355	/* AVX-512: Op code 0f 38 36 */
2356
2357	asm volatile("vpermd %ymm4,%ymm6,%ymm2");
2358	asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
2359	asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
2360
2361	/* AVX-512: Op code 0f 38 38 */
2362
2363	asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
2364	asm volatile("vpmovm2d %k5,%zmm6");
2365	asm volatile("vpmovm2q %k5,%zmm6");
2366
2367	/* AVX-512: Op code 0f 38 39 */
2368
2369	asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
2370	asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
2371	asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
2372	asm volatile("vpmovd2m %zmm6,%k5");
2373	asm volatile("vpmovq2m %zmm6,%k5");
2374
2375	/* AVX-512: Op code 0f 38 3a */
2376
2377	asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
2378	asm volatile("vpbroadcastmw2d %k6,%zmm6");
2379
2380	/* AVX-512: Op code 0f 38 3b */
2381
2382	asm volatile("vpminud %ymm4,%ymm6,%ymm2");
2383	asm volatile("vpminud %zmm4,%zmm5,%zmm6");
2384	asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
2385
2386	/* AVX-512: Op code 0f 38 3d */
2387
2388	asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
2389	asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
2390	asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
2391
2392	/* AVX-512: Op code 0f 38 3f */
2393
2394	asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
2395	asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
2396	asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
2397
2398	/* AVX-512: Op code 0f 38 40 */
2399
2400	asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
2401	asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
2402	asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
2403
2404	/* AVX-512: Op code 0f 38 42 */
2405
2406	asm volatile("vgetexpps %zmm5,%zmm6");
2407	asm volatile("vgetexppd %zmm5,%zmm6");
2408
2409	/* AVX-512: Op code 0f 38 43 */
2410
2411	asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
2412	asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
2413
2414	/* AVX-512: Op code 0f 38 44 */
2415
2416	asm volatile("vplzcntd %zmm5,%zmm6");
2417	asm volatile("vplzcntq %zmm5,%zmm6");
2418
2419	/* AVX-512: Op code 0f 38 46 */
2420
2421	asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
2422	asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
2423	asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
2424
2425	/* AVX-512: Op code 0f 38 4c */
2426
2427	asm volatile("vrcp14ps %zmm5,%zmm6");
2428	asm volatile("vrcp14pd %zmm5,%zmm6");
2429
2430	/* AVX-512: Op code 0f 38 4d */
2431
2432	asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
2433	asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
2434
2435	/* AVX-512: Op code 0f 38 4e */
2436
2437	asm volatile("vrsqrt14ps %zmm5,%zmm6");
2438	asm volatile("vrsqrt14pd %zmm5,%zmm6");
2439
2440	/* AVX-512: Op code 0f 38 4f */
2441
2442	asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
2443	asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
2444
2445	/* AVX-512: Op code 0f 38 50 */
2446
2447	asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
2448	asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
2449	asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
2450	asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2451
2452	/* AVX-512: Op code 0f 38 51 */
2453
2454	asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
2455	asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
2456	asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
2457	asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2458
2459	/* AVX-512: Op code 0f 38 52 */
2460
2461	asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
2462	asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
2463	asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
2464	asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2465
2466	asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
2467	asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
2468	asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
2469	asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2470
2471	asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
2472	asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2473
2474	/* AVX-512: Op code 0f 38 53 */
2475
2476	asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
2477	asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
2478	asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
2479	asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2480
2481	asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
2482	asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2483
2484	/* AVX-512: Op code 0f 38 54 */
2485
2486	asm volatile("vpopcntb %xmm1, %xmm2");
2487	asm volatile("vpopcntb %ymm1, %ymm2");
2488	asm volatile("vpopcntb %zmm1, %zmm2");
2489	asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
2490
2491	asm volatile("vpopcntw %xmm1, %xmm2");
2492	asm volatile("vpopcntw %ymm1, %ymm2");
2493	asm volatile("vpopcntw %zmm1, %zmm2");
2494	asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
2495
2496	/* AVX-512: Op code 0f 38 55 */
2497
2498	asm volatile("vpopcntd %xmm1, %xmm2");
2499	asm volatile("vpopcntd %ymm1, %ymm2");
2500	asm volatile("vpopcntd %zmm1, %zmm2");
2501	asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
2502
2503	asm volatile("vpopcntq %xmm1, %xmm2");
2504	asm volatile("vpopcntq %ymm1, %ymm2");
2505	asm volatile("vpopcntq %zmm1, %zmm2");
2506	asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
2507
2508	/* AVX-512: Op code 0f 38 59 */
2509
2510	asm volatile("vpbroadcastq %xmm4,%xmm6");
2511	asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
2512
2513	/* AVX-512: Op code 0f 38 5a */
2514
2515	asm volatile("vbroadcasti128 (%ecx),%ymm4");
2516	asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
2517	asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
2518
2519	/* AVX-512: Op code 0f 38 5b */
2520
2521	asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
2522	asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
2523
2524	/* AVX-512: Op code 0f 38 62 */
2525
2526	asm volatile("vpexpandb %xmm1, %xmm2");
2527	asm volatile("vpexpandb %ymm1, %ymm2");
2528	asm volatile("vpexpandb %zmm1, %zmm2");
2529	asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
2530
2531	asm volatile("vpexpandw %xmm1, %xmm2");
2532	asm volatile("vpexpandw %ymm1, %ymm2");
2533	asm volatile("vpexpandw %zmm1, %zmm2");
2534	asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
2535
2536	/* AVX-512: Op code 0f 38 63 */
2537
2538	asm volatile("vpcompressb %xmm1, %xmm2");
2539	asm volatile("vpcompressb %ymm1, %ymm2");
2540	asm volatile("vpcompressb %zmm1, %zmm2");
2541	asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
2542
2543	asm volatile("vpcompressw %xmm1, %xmm2");
2544	asm volatile("vpcompressw %ymm1, %ymm2");
2545	asm volatile("vpcompressw %zmm1, %zmm2");
2546	asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
2547
2548	/* AVX-512: Op code 0f 38 64 */
2549
2550	asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
2551	asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
2552
2553	/* AVX-512: Op code 0f 38 65 */
2554
2555	asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
2556	asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
2557
2558	/* AVX-512: Op code 0f 38 66 */
2559
2560	asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
2561	asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
2562
2563	/* AVX-512: Op code 0f 38 68 */
2564
2565	asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
2566	asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
2567	asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
2568	asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
2569
2570	asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
2571	asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
2572	asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
2573	asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
2574
2575	/* AVX-512: Op code 0f 38 70 */
2576
2577	asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
2578	asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
2579	asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
2580	asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2581
2582	/* AVX-512: Op code 0f 38 71 */
2583
2584	asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
2585	asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
2586	asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
2587	asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2588
2589	asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
2590	asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
2591	asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
2592	asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2593
2594	/* AVX-512: Op code 0f 38 72 */
2595
2596	asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
2597	asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
2598	asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
2599	asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2600
2601	asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
2602	asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
2603	asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
2604	asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
2605
2606	asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
2607	asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
2608	asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
2609	asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2610
2611	/* AVX-512: Op code 0f 38 73 */
2612
2613	asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
2614	asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
2615	asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
2616	asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2617
2618	asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
2619	asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
2620	asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
2621	asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2622
2623	/* AVX-512: Op code 0f 38 75 */
2624
2625	asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
2626	asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
2627
2628	/* AVX-512: Op code 0f 38 76 */
2629
2630	asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
2631	asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
2632
2633	/* AVX-512: Op code 0f 38 77 */
2634
2635	asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
2636	asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
2637
2638	/* AVX-512: Op code 0f 38 7a */
2639
2640	asm volatile("vpbroadcastb %eax,%xmm3");
2641
2642	/* AVX-512: Op code 0f 38 7b */
2643
2644	asm volatile("vpbroadcastw %eax,%xmm3");
2645
2646	/* AVX-512: Op code 0f 38 7c */
2647
2648	asm volatile("vpbroadcastd %eax,%xmm3");
2649
2650	/* AVX-512: Op code 0f 38 7d */
2651
2652	asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
2653	asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
2654
2655	/* AVX-512: Op code 0f 38 7e */
2656
2657	asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
2658	asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
2659
2660	/* AVX-512: Op code 0f 38 7f */
2661
2662	asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
2663	asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
2664
2665	/* AVX-512: Op code 0f 38 83 */
2666
2667	asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
2668
2669	/* AVX-512: Op code 0f 38 88 */
2670
2671	asm volatile("vexpandps (%ecx),%zmm6");
2672	asm volatile("vexpandpd (%ecx),%zmm6");
2673
2674	/* AVX-512: Op code 0f 38 89 */
2675
2676	asm volatile("vpexpandd (%ecx),%zmm6");
2677	asm volatile("vpexpandq (%ecx),%zmm6");
2678
2679	/* AVX-512: Op code 0f 38 8a */
2680
2681	asm volatile("vcompressps %zmm6,(%ecx)");
2682	asm volatile("vcompresspd %zmm6,(%ecx)");
2683
2684	/* AVX-512: Op code 0f 38 8b */
2685
2686	asm volatile("vpcompressd %zmm6,(%ecx)");
2687	asm volatile("vpcompressq %zmm6,(%ecx)");
2688
2689	/* AVX-512: Op code 0f 38 8d */
2690
2691	asm volatile("vpermb %zmm4,%zmm5,%zmm6");
2692	asm volatile("vpermw %zmm4,%zmm5,%zmm6");
2693
2694	/* AVX-512: Op code 0f 38 8f */
2695
2696	asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
2697	asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
2698	asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
2699	asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
2700
2701	/* AVX-512: Op code 0f 38 90 */
2702
2703	asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2704	asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
2705	asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2706	asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
2707
2708	/* AVX-512: Op code 0f 38 91 */
2709
2710	asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2711	asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2712	asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
2713	asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2714
2715	/* AVX-512: Op code 0f 38 9a */
2716
2717	asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
2718	asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
2719	asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
2720	asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2721
2722	asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
2723	asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
2724	asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
2725	asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2726
2727	asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
2728	asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2729
2730	/* AVX-512: Op code 0f 38 9b */
2731
2732	asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
2733	asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2734
2735	asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
2736	asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2737
2738	asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
2739	asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
2740
2741	/* AVX-512: Op code 0f 38 a0 */
2742
2743	asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2744	asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2745
2746	/* AVX-512: Op code 0f 38 a1 */
2747
2748	asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2749	asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
2750
2751	/* AVX-512: Op code 0f 38 a2 */
2752
2753	asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2754	asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2755
2756	/* AVX-512: Op code 0f 38 a3 */
2757
2758	asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2759	asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2760
2761	/* AVX-512: Op code 0f 38 aa */
2762
2763	asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
2764	asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
2765	asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
2766	asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2767
2768	asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
2769	asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
2770	asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
2771	asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2772
2773	asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
2774	asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
2775
2776	/* AVX-512: Op code 0f 38 ab */
2777
2778	asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
2779	asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2780
2781	asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
2782	asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
2783
2784	asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
2785	asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
2786
2787	/* AVX-512: Op code 0f 38 b4 */
2788
2789	asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
2790
2791	/* AVX-512: Op code 0f 38 b5 */
2792
2793	asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
2794
2795	/* AVX-512: Op code 0f 38 c4 */
2796
2797	asm volatile("vpconflictd %zmm5,%zmm6");
2798	asm volatile("vpconflictq %zmm5,%zmm6");
2799
2800	/* AVX-512: Op code 0f 38 c8 */
2801
2802	asm volatile("vexp2ps %zmm6,%zmm7");
2803	asm volatile("vexp2pd %zmm6,%zmm7");
2804
2805	/* AVX-512: Op code 0f 38 ca */
2806
2807	asm volatile("vrcp28ps %zmm6,%zmm7");
2808	asm volatile("vrcp28pd %zmm6,%zmm7");
2809
2810	/* AVX-512: Op code 0f 38 cb */
2811
2812	asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
2813	asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
2814
2815	/* AVX-512: Op code 0f 38 cc */
2816
2817	asm volatile("vrsqrt28ps %zmm6,%zmm7");
2818	asm volatile("vrsqrt28pd %zmm6,%zmm7");
2819
2820	/* AVX-512: Op code 0f 38 cd */
2821
2822	asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
2823	asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
2824
2825	/* AVX-512: Op code 0f 38 cf */
2826
2827	asm volatile("gf2p8mulb %xmm1, %xmm3");
2828	asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
2829
2830	asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
2831	asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
2832	asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
2833	asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2834
2835	/* AVX-512: Op code 0f 38 dc */
2836
2837	asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
2838	asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
2839	asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
2840	asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2841
2842	/* AVX-512: Op code 0f 38 dd */
2843
2844	asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
2845	asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
2846	asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
2847	asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2848
2849	/* AVX-512: Op code 0f 38 de */
2850
2851	asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
2852	asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
2853	asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
2854	asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2855
2856	/* AVX-512: Op code 0f 38 df */
2857
2858	asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
2859	asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
2860	asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
2861	asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
2862
2863	/* AVX-512: Op code 0f 3a 03 */
2864
2865	asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
2866	asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
2867
2868	/* AVX-512: Op code 0f 3a 08 */
2869
2870	asm volatile("vroundps $0x5,%ymm6,%ymm2");
2871	asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
2872
2873	/* AVX-512: Op code 0f 3a 09 */
2874
2875	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
2876	asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
2877
2878	/* AVX-512: Op code 0f 3a 0a */
2879
2880	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
2881	asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2882
2883	/* AVX-512: Op code 0f 3a 0b */
2884
2885	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
2886	asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2887
2888	/* AVX-512: Op code 0f 3a 18 */
2889
2890	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
2891	asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2892	asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2893
2894	/* AVX-512: Op code 0f 3a 19 */
2895
2896	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
2897	asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
2898	asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
2899
2900	/* AVX-512: Op code 0f 3a 1a */
2901
2902	asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2903	asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2904
2905	/* AVX-512: Op code 0f 3a 1b */
2906
2907	asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
2908	asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
2909
2910	/* AVX-512: Op code 0f 3a 1e */
2911
2912	asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
2913	asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
2914
2915	/* AVX-512: Op code 0f 3a 1f */
2916
2917	asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
2918	asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
2919
2920	/* AVX-512: Op code 0f 3a 23 */
2921
2922	asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
2923	asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
2924
2925	/* AVX-512: Op code 0f 3a 25 */
2926
2927	asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
2928	asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
2929
2930	/* AVX-512: Op code 0f 3a 26 */
2931
2932	asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
2933	asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
2934
2935	/* AVX-512: Op code 0f 3a 27 */
2936
2937	asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2938	asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2939
2940	/* AVX-512: Op code 0f 3a 38 */
2941
2942	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
2943	asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2944	asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2945
2946	/* AVX-512: Op code 0f 3a 39 */
2947
2948	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
2949	asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
2950	asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
2951
2952	/* AVX-512: Op code 0f 3a 3a */
2953
2954	asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2955	asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2956
2957	/* AVX-512: Op code 0f 3a 3b */
2958
2959	asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
2960	asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
2961
2962	/* AVX-512: Op code 0f 3a 3e */
2963
2964	asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
2965	asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
2966
2967	/* AVX-512: Op code 0f 3a 3f */
2968
2969	asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
2970	asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
2971
2972	/* AVX-512: Op code 0f 3a 42 */
2973
2974	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
2975	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
2976
2977	/* AVX-512: Op code 0f 3a 43 */
2978
2979	asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
2980	asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
2981
2982	/* AVX-512: Op code 0f 3a 44 */
2983
2984	asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
2985	asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
2986	asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
2987
2988	/* AVX-512: Op code 0f 3a 50 */
2989
2990	asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
2991	asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
2992
2993	/* AVX-512: Op code 0f 3a 51 */
2994
2995	asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
2996	asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
2997
2998	/* AVX-512: Op code 0f 3a 54 */
2999
3000	asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
3001	asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
3002
3003	/* AVX-512: Op code 0f 3a 55 */
3004
3005	asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
3006	asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
3007
3008	/* AVX-512: Op code 0f 3a 56 */
3009
3010	asm volatile("vreduceps $0x12,%zmm6,%zmm7");
3011	asm volatile("vreducepd $0x12,%zmm6,%zmm7");
3012
3013	/* AVX-512: Op code 0f 3a 57 */
3014
3015	asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
3016	asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
3017
3018	/* AVX-512: Op code 0f 3a 66 */
3019
3020	asm volatile("vfpclassps $0x12,%zmm7,%k5");
3021	asm volatile("vfpclasspd $0x12,%zmm7,%k5");
3022
3023	/* AVX-512: Op code 0f 3a 67 */
3024
3025	asm volatile("vfpclassss $0x12,%xmm7,%k5");
3026	asm volatile("vfpclasssd $0x12,%xmm7,%k5");
3027
3028	/* AVX-512: Op code 0f 3a 70 */
3029
3030	asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
3031	asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
3032	asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
3033
3034	/* AVX-512: Op code 0f 3a 71 */
3035
3036	asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
3037	asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
3038	asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
3039
3040	asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
3041	asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
3042	asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
3043
3044	/* AVX-512: Op code 0f 3a 72 */
3045
3046	asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
3047	asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
3048	asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
3049
3050	/* AVX-512: Op code 0f 3a 73 */
3051
3052	asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
3053	asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
3054	asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
3055
3056	asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
3057	asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
3058	asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
3059
3060	/* AVX-512: Op code 0f 3a ce */
3061
3062	asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
3063
3064	asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
3065	asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
3066	asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
3067
3068	/* AVX-512: Op code 0f 3a cf */
3069
3070	asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
3071
3072	asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
3073	asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
3074	asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
3075
3076	/* AVX-512: Op code 0f 72 (Grp13) */
3077
3078	asm volatile("vprord $0x12,%zmm5,%zmm6");
3079	asm volatile("vprorq $0x12,%zmm5,%zmm6");
3080	asm volatile("vprold $0x12,%zmm5,%zmm6");
3081	asm volatile("vprolq $0x12,%zmm5,%zmm6");
3082	asm volatile("psrad  $0x2,%mm6");
3083	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
3084	asm volatile("vpsrad $0x5,%zmm6,%zmm2");
3085	asm volatile("vpsraq $0x5,%zmm6,%zmm2");
3086
3087	/* AVX-512: Op code 0f 38 c6 (Grp18) */
3088
3089	asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
3090	asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
3091	asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
3092	asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
3093	asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
3094	asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
3095	asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
3096	asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
3097
3098	/* AVX-512: Op code 0f 38 c7 (Grp19) */
3099
3100	asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
3101	asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
3102	asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
3103	asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
3104	asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
3105	asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
3106	asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
3107	asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
3108
3109	/* AVX-512: Examples */
3110
3111	asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
3112	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
3113	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
3114	asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
3115	asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
3116	asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
3117	asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
3118	asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
3119	asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
3120	asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
3121	asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
3122	asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
3123	asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
3124	asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
3125	asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
3126	asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
3127
3128	/* bndmk m32, bnd */
3129
3130	asm volatile("bndmk (%eax), %bnd0");
3131	asm volatile("bndmk (0x12345678), %bnd0");
3132	asm volatile("bndmk (%eax), %bnd3");
3133	asm volatile("bndmk (%ecx,%eax,1), %bnd0");
3134	asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
3135	asm volatile("bndmk (%eax,%ecx,1), %bnd0");
3136	asm volatile("bndmk (%eax,%ecx,8), %bnd0");
3137	asm volatile("bndmk 0x12(%eax), %bnd0");
3138	asm volatile("bndmk 0x12(%ebp), %bnd0");
3139	asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
3140	asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
3141	asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
3142	asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
3143	asm volatile("bndmk 0x12345678(%eax), %bnd0");
3144	asm volatile("bndmk 0x12345678(%ebp), %bnd0");
3145	asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
3146	asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
3147	asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
3148	asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
3149
3150	/* bndcl r/m32, bnd */
3151
3152	asm volatile("bndcl (%eax), %bnd0");
3153	asm volatile("bndcl (0x12345678), %bnd0");
3154	asm volatile("bndcl (%eax), %bnd3");
3155	asm volatile("bndcl (%ecx,%eax,1), %bnd0");
3156	asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
3157	asm volatile("bndcl (%eax,%ecx,1), %bnd0");
3158	asm volatile("bndcl (%eax,%ecx,8), %bnd0");
3159	asm volatile("bndcl 0x12(%eax), %bnd0");
3160	asm volatile("bndcl 0x12(%ebp), %bnd0");
3161	asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
3162	asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
3163	asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
3164	asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
3165	asm volatile("bndcl 0x12345678(%eax), %bnd0");
3166	asm volatile("bndcl 0x12345678(%ebp), %bnd0");
3167	asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
3168	asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
3169	asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
3170	asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
3171	asm volatile("bndcl %eax, %bnd0");
3172
3173	/* bndcu r/m32, bnd */
3174
3175	asm volatile("bndcu (%eax), %bnd0");
3176	asm volatile("bndcu (0x12345678), %bnd0");
3177	asm volatile("bndcu (%eax), %bnd3");
3178	asm volatile("bndcu (%ecx,%eax,1), %bnd0");
3179	asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
3180	asm volatile("bndcu (%eax,%ecx,1), %bnd0");
3181	asm volatile("bndcu (%eax,%ecx,8), %bnd0");
3182	asm volatile("bndcu 0x12(%eax), %bnd0");
3183	asm volatile("bndcu 0x12(%ebp), %bnd0");
3184	asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
3185	asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
3186	asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
3187	asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
3188	asm volatile("bndcu 0x12345678(%eax), %bnd0");
3189	asm volatile("bndcu 0x12345678(%ebp), %bnd0");
3190	asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
3191	asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
3192	asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
3193	asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
3194	asm volatile("bndcu %eax, %bnd0");
3195
3196	/* bndcn r/m32, bnd */
3197
3198	asm volatile("bndcn (%eax), %bnd0");
3199	asm volatile("bndcn (0x12345678), %bnd0");
3200	asm volatile("bndcn (%eax), %bnd3");
3201	asm volatile("bndcn (%ecx,%eax,1), %bnd0");
3202	asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
3203	asm volatile("bndcn (%eax,%ecx,1), %bnd0");
3204	asm volatile("bndcn (%eax,%ecx,8), %bnd0");
3205	asm volatile("bndcn 0x12(%eax), %bnd0");
3206	asm volatile("bndcn 0x12(%ebp), %bnd0");
3207	asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
3208	asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
3209	asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
3210	asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
3211	asm volatile("bndcn 0x12345678(%eax), %bnd0");
3212	asm volatile("bndcn 0x12345678(%ebp), %bnd0");
3213	asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
3214	asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
3215	asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
3216	asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
3217	asm volatile("bndcn %eax, %bnd0");
3218
3219	/* bndmov m64, bnd */
3220
3221	asm volatile("bndmov (%eax), %bnd0");
3222	asm volatile("bndmov (0x12345678), %bnd0");
3223	asm volatile("bndmov (%eax), %bnd3");
3224	asm volatile("bndmov (%ecx,%eax,1), %bnd0");
3225	asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
3226	asm volatile("bndmov (%eax,%ecx,1), %bnd0");
3227	asm volatile("bndmov (%eax,%ecx,8), %bnd0");
3228	asm volatile("bndmov 0x12(%eax), %bnd0");
3229	asm volatile("bndmov 0x12(%ebp), %bnd0");
3230	asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
3231	asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
3232	asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
3233	asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
3234	asm volatile("bndmov 0x12345678(%eax), %bnd0");
3235	asm volatile("bndmov 0x12345678(%ebp), %bnd0");
3236	asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
3237	asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
3238	asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
3239	asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
3240
3241	/* bndmov bnd, m64 */
3242
3243	asm volatile("bndmov %bnd0, (%eax)");
3244	asm volatile("bndmov %bnd0, (0x12345678)");
3245	asm volatile("bndmov %bnd3, (%eax)");
3246	asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
3247	asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
3248	asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
3249	asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
3250	asm volatile("bndmov %bnd0, 0x12(%eax)");
3251	asm volatile("bndmov %bnd0, 0x12(%ebp)");
3252	asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
3253	asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
3254	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
3255	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
3256	asm volatile("bndmov %bnd0, 0x12345678(%eax)");
3257	asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
3258	asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
3259	asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
3260	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
3261	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
3262
3263	/* bndmov bnd2, bnd1 */
3264
3265	asm volatile("bndmov %bnd0, %bnd1");
3266	asm volatile("bndmov %bnd1, %bnd0");
3267
3268	/* bndldx mib, bnd */
3269
3270	asm volatile("bndldx (%eax), %bnd0");
3271	asm volatile("bndldx (0x12345678), %bnd0");
3272	asm volatile("bndldx (%eax), %bnd3");
3273	asm volatile("bndldx (%ecx,%eax,1), %bnd0");
3274	asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
3275	asm volatile("bndldx (%eax,%ecx,1), %bnd0");
3276	asm volatile("bndldx 0x12(%eax), %bnd0");
3277	asm volatile("bndldx 0x12(%ebp), %bnd0");
3278	asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
3279	asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
3280	asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
3281	asm volatile("bndldx 0x12345678(%eax), %bnd0");
3282	asm volatile("bndldx 0x12345678(%ebp), %bnd0");
3283	asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
3284	asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
3285	asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
3286
3287	/* bndstx bnd, mib */
3288
3289	asm volatile("bndstx %bnd0, (%eax)");
3290	asm volatile("bndstx %bnd0, (0x12345678)");
3291	asm volatile("bndstx %bnd3, (%eax)");
3292	asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
3293	asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
3294	asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
3295	asm volatile("bndstx %bnd0, 0x12(%eax)");
3296	asm volatile("bndstx %bnd0, 0x12(%ebp)");
3297	asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
3298	asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
3299	asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
3300	asm volatile("bndstx %bnd0, 0x12345678(%eax)");
3301	asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
3302	asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
3303	asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
3304	asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
3305
3306	/* bnd prefix on call, ret, jmp and all jcc */
3307
3308	asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
3309	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
3310	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
3311	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3312	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3313	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
3314	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
3315
3316	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
3317
3318	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
3319	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
3320	asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
3321	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
3322	asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
3323	asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
3324	asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
3325	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
3326	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
3327	asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
3328	asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
3329	asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
3330	asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
3331	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
3332	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
3333	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
3334	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
3335	asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
3336	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
3337	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
3338	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
3339
3340	/* sha1nexte xmm2/m128, xmm1 */
3341
3342	asm volatile("sha1nexte %xmm1, %xmm0");
3343	asm volatile("sha1nexte %xmm7, %xmm2");
3344	asm volatile("sha1nexte (%eax), %xmm0");
3345	asm volatile("sha1nexte (0x12345678), %xmm0");
3346	asm volatile("sha1nexte (%eax), %xmm3");
3347	asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
3348	asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
3349	asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
3350	asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
3351	asm volatile("sha1nexte 0x12(%eax), %xmm0");
3352	asm volatile("sha1nexte 0x12(%ebp), %xmm0");
3353	asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
3354	asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
3355	asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
3356	asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
3357	asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
3358	asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
3359	asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
3360	asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
3361	asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
3362	asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
3363
3364	/* sha1msg1 xmm2/m128, xmm1 */
3365
3366	asm volatile("sha1msg1 %xmm1, %xmm0");
3367	asm volatile("sha1msg1 %xmm7, %xmm2");
3368	asm volatile("sha1msg1 (%eax), %xmm0");
3369	asm volatile("sha1msg1 (0x12345678), %xmm0");
3370	asm volatile("sha1msg1 (%eax), %xmm3");
3371	asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
3372	asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
3373	asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
3374	asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
3375	asm volatile("sha1msg1 0x12(%eax), %xmm0");
3376	asm volatile("sha1msg1 0x12(%ebp), %xmm0");
3377	asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
3378	asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
3379	asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
3380	asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
3381	asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
3382	asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
3383	asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
3384	asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
3385	asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
3386	asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
3387
3388	/* sha1msg2 xmm2/m128, xmm1 */
3389
3390	asm volatile("sha1msg2 %xmm1, %xmm0");
3391	asm volatile("sha1msg2 %xmm7, %xmm2");
3392	asm volatile("sha1msg2 (%eax), %xmm0");
3393	asm volatile("sha1msg2 (0x12345678), %xmm0");
3394	asm volatile("sha1msg2 (%eax), %xmm3");
3395	asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
3396	asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
3397	asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
3398	asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
3399	asm volatile("sha1msg2 0x12(%eax), %xmm0");
3400	asm volatile("sha1msg2 0x12(%ebp), %xmm0");
3401	asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
3402	asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
3403	asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
3404	asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
3405	asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
3406	asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
3407	asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
3408	asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
3409	asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
3410	asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
3411
3412	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
3413	/* Note sha256rnds2 has an implicit operand 'xmm0' */
3414
3415	asm volatile("sha256rnds2 %xmm4, %xmm1");
3416	asm volatile("sha256rnds2 %xmm7, %xmm2");
3417	asm volatile("sha256rnds2 (%eax), %xmm1");
3418	asm volatile("sha256rnds2 (0x12345678), %xmm1");
3419	asm volatile("sha256rnds2 (%eax), %xmm3");
3420	asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
3421	asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
3422	asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
3423	asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
3424	asm volatile("sha256rnds2 0x12(%eax), %xmm1");
3425	asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
3426	asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
3427	asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
3428	asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
3429	asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
3430	asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
3431	asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
3432	asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
3433	asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
3434	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
3435	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
3436
3437	/* sha256msg1 xmm2/m128, xmm1 */
3438
3439	asm volatile("sha256msg1 %xmm1, %xmm0");
3440	asm volatile("sha256msg1 %xmm7, %xmm2");
3441	asm volatile("sha256msg1 (%eax), %xmm0");
3442	asm volatile("sha256msg1 (0x12345678), %xmm0");
3443	asm volatile("sha256msg1 (%eax), %xmm3");
3444	asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
3445	asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
3446	asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
3447	asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
3448	asm volatile("sha256msg1 0x12(%eax), %xmm0");
3449	asm volatile("sha256msg1 0x12(%ebp), %xmm0");
3450	asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
3451	asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
3452	asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
3453	asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
3454	asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
3455	asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
3456	asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
3457	asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
3458	asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
3459	asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
3460
3461	/* sha256msg2 xmm2/m128, xmm1 */
3462
3463	asm volatile("sha256msg2 %xmm1, %xmm0");
3464	asm volatile("sha256msg2 %xmm7, %xmm2");
3465	asm volatile("sha256msg2 (%eax), %xmm0");
3466	asm volatile("sha256msg2 (0x12345678), %xmm0");
3467	asm volatile("sha256msg2 (%eax), %xmm3");
3468	asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
3469	asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
3470	asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
3471	asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
3472	asm volatile("sha256msg2 0x12(%eax), %xmm0");
3473	asm volatile("sha256msg2 0x12(%ebp), %xmm0");
3474	asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
3475	asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
3476	asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
3477	asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
3478	asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
3479	asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
3480	asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
3481	asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
3482	asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
3483	asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
3484
3485	/* clflushopt m8 */
3486
3487	asm volatile("clflushopt (%eax)");
3488	asm volatile("clflushopt (0x12345678)");
3489	asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
3490	/* Also check instructions in the same group encoding as clflushopt */
3491	asm volatile("clflush (%eax)");
3492	asm volatile("sfence");
3493
3494	/* clwb m8 */
3495
3496	asm volatile("clwb (%eax)");
3497	asm volatile("clwb (0x12345678)");
3498	asm volatile("clwb 0x12345678(%eax,%ecx,8)");
3499	/* Also check instructions in the same group encoding as clwb */
3500	asm volatile("xsaveopt (%eax)");
3501	asm volatile("mfence");
3502
3503	/* cldemote m8 */
3504
3505	asm volatile("cldemote (%eax)");
3506	asm volatile("cldemote (0x12345678)");
3507	asm volatile("cldemote 0x12345678(%eax,%ecx,8)");
3508
3509	/* xsavec mem */
3510
3511	asm volatile("xsavec (%eax)");
3512	asm volatile("xsavec (0x12345678)");
3513	asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
3514
3515	/* xsaves mem */
3516
3517	asm volatile("xsaves (%eax)");
3518	asm volatile("xsaves (0x12345678)");
3519	asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
3520
3521	/* xrstors mem */
3522
3523	asm volatile("xrstors (%eax)");
3524	asm volatile("xrstors (0x12345678)");
3525	asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
3526
3527	/* ptwrite */
3528
3529	asm volatile("ptwrite (%eax)");
3530	asm volatile("ptwrite (0x12345678)");
3531	asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
3532
3533	asm volatile("ptwritel (%eax)");
3534	asm volatile("ptwritel (0x12345678)");
3535	asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
3536
3537	/* tpause */
3538
3539	asm volatile("tpause %ebx");
3540
3541	/* umonitor */
3542
3543	asm volatile("umonitor %ax");
3544	asm volatile("umonitor %eax");
3545
3546	/* umwait */
3547
3548	asm volatile("umwait %eax");
3549
3550	/* movdiri */
3551
3552	asm volatile("movdiri %eax,(%ebx)");
3553	asm volatile("movdiri %ecx,0x12345678(%eax)");
3554
3555	/* movdir64b */
3556
3557	asm volatile("movdir64b (%eax),%ebx");
3558	asm volatile("movdir64b 0x12345678(%eax),%ecx");
3559	asm volatile("movdir64b (%si),%bx");
3560	asm volatile("movdir64b 0x1234(%si),%cx");
3561
3562	/* enqcmd */
3563
3564	asm volatile("enqcmd (%eax),%ebx");
3565	asm volatile("enqcmd 0x12345678(%eax),%ecx");
3566	asm volatile("enqcmd (%si),%bx");
3567	asm volatile("enqcmd 0x1234(%si),%cx");
3568
3569	/* enqcmds */
3570
3571	asm volatile("enqcmds (%eax),%ebx");
3572	asm volatile("enqcmds 0x12345678(%eax),%ecx");
3573	asm volatile("enqcmds (%si),%bx");
3574	asm volatile("enqcmds 0x1234(%si),%cx");
3575
3576	/* incsspd */
3577
3578	asm volatile("incsspd %eax");
3579	/* Also check instructions in the same group encoding as incsspd */
3580	asm volatile("xrstor (%eax)");
3581	asm volatile("xrstor (0x12345678)");
3582	asm volatile("xrstor 0x12345678(%eax,%ecx,8)");
3583	asm volatile("lfence");
3584
3585	/* rdsspd */
3586
3587	asm volatile("rdsspd %eax");
3588
3589	/* saveprevssp */
3590
3591	asm volatile("saveprevssp");
3592
3593	/* rstorssp */
3594
3595	asm volatile("rstorssp (%eax)");
3596	asm volatile("rstorssp (0x12345678)");
3597	asm volatile("rstorssp 0x12345678(%eax,%ecx,8)");
3598
3599	/* wrssd */
3600
3601	asm volatile("wrssd %ecx,(%eax)");
3602	asm volatile("wrssd %edx,(0x12345678)");
3603	asm volatile("wrssd %edx,0x12345678(%eax,%ecx,8)");
3604
3605	/* wrussd */
3606
3607	asm volatile("wrussd %ecx,(%eax)");
3608	asm volatile("wrussd %edx,(0x12345678)");
3609	asm volatile("wrussd %edx,0x12345678(%eax,%ecx,8)");
3610
3611	/* setssbsy */
3612
3613	asm volatile("setssbsy");
3614	/* Also check instructions in the same group encoding as setssbsy */
3615	asm volatile("rdpkru");
3616	asm volatile("wrpkru");
3617
3618	/* clrssbsy */
3619
3620	asm volatile("clrssbsy (%eax)");
3621	asm volatile("clrssbsy (0x12345678)");
3622	asm volatile("clrssbsy 0x12345678(%eax,%ecx,8)");
3623
3624	/* endbr32/64 */
3625
3626	asm volatile("endbr32");
3627	asm volatile("endbr64");
3628
3629	/* call with/without notrack prefix */
3630
3631	asm volatile("call *%eax");				/* Expecting: call indirect 0 */
3632	asm volatile("call *(%eax)");				/* Expecting: call indirect 0 */
3633	asm volatile("call *(0x12345678)");			/* Expecting: call indirect 0 */
3634	asm volatile("call *0x12345678(%eax,%ecx,8)");		/* Expecting: call indirect 0 */
3635
3636	asm volatile("bnd call *%eax");				/* Expecting: call indirect 0 */
3637	asm volatile("bnd call *(%eax)");			/* Expecting: call indirect 0 */
3638	asm volatile("bnd call *(0x12345678)");			/* Expecting: call indirect 0 */
3639	asm volatile("bnd call *0x12345678(%eax,%ecx,8)");	/* Expecting: call indirect 0 */
3640
3641	asm volatile("notrack call *%eax");			/* Expecting: call indirect 0 */
3642	asm volatile("notrack call *(%eax)");			/* Expecting: call indirect 0 */
3643	asm volatile("notrack call *(0x12345678)");		/* Expecting: call indirect 0 */
3644	asm volatile("notrack call *0x12345678(%eax,%ecx,8)");	/* Expecting: call indirect 0 */
3645
3646	asm volatile("notrack bnd call *%eax");			/* Expecting: call indirect 0 */
3647	asm volatile("notrack bnd call *(%eax)");		/* Expecting: call indirect 0 */
3648	asm volatile("notrack bnd call *(0x12345678)");		/* Expecting: call indirect 0 */
3649	asm volatile("notrack bnd call *0x12345678(%eax,%ecx,8)"); /* Expecting: call indirect 0 */
3650
3651	/* jmp with/without notrack prefix */
3652
3653	asm volatile("jmp *%eax");				/* Expecting: jmp indirect 0 */
3654	asm volatile("jmp *(%eax)");				/* Expecting: jmp indirect 0 */
3655	asm volatile("jmp *(0x12345678)");			/* Expecting: jmp indirect 0 */
3656	asm volatile("jmp *0x12345678(%eax,%ecx,8)");		/* Expecting: jmp indirect 0 */
3657
3658	asm volatile("bnd jmp *%eax");				/* Expecting: jmp indirect 0 */
3659	asm volatile("bnd jmp *(%eax)");			/* Expecting: jmp indirect 0 */
3660	asm volatile("bnd jmp *(0x12345678)");			/* Expecting: jmp indirect 0 */
3661	asm volatile("bnd jmp *0x12345678(%eax,%ecx,8)");	/* Expecting: jmp indirect 0 */
3662
3663	asm volatile("notrack jmp *%eax");			/* Expecting: jmp indirect 0 */
3664	asm volatile("notrack jmp *(%eax)");			/* Expecting: jmp indirect 0 */
3665	asm volatile("notrack jmp *(0x12345678)");		/* Expecting: jmp indirect 0 */
3666	asm volatile("notrack jmp *0x12345678(%eax,%ecx,8)");	/* Expecting: jmp indirect 0 */
3667
3668	asm volatile("notrack bnd jmp *%eax");			/* Expecting: jmp indirect 0 */
3669	asm volatile("notrack bnd jmp *(%eax)");		/* Expecting: jmp indirect 0 */
3670	asm volatile("notrack bnd jmp *(0x12345678)");		/* Expecting: jmp indirect 0 */
3671	asm volatile("notrack bnd jmp *0x12345678(%eax,%ecx,8)"); /* Expecting: jmp indirect 0 */
3672
3673#endif /* #ifndef __x86_64__ */
3674
3675	/* SGX */
3676
3677	asm volatile("encls");
3678	asm volatile("enclu");
3679	asm volatile("enclv");
3680
3681	/* pconfig */
3682
3683	asm volatile("pconfig");
3684
3685	/* wbnoinvd */
3686
3687	asm volatile("wbnoinvd");
3688
3689	/* Following line is a marker for the awk script - do not change */
3690	asm volatile("rdtsc"); /* Stop here */
3691
3692	return 0;
3693}
3694