Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-block.git] / tools / perf / arch / x86 / tests / insn-x86-dat-src.c
1 /*
2  * This file contains instructions for testing by the test titled:
3  *
4  *         "Test x86 instruction decoder - new instructions"
5  *
6  * Note that the 'Expecting' comment lines are consumed by the
7  * gen-insn-x86-dat.awk script and have the format:
8  *
9  *         Expecting: <op> <branch> <rel>
10  *
11  * If this file is changed, remember to run the gen-insn-x86-dat.sh
12  * script and commit the result.
13  *
14  * Refer to insn-x86.c for more details.
15  */
16
17 int main(void)
18 {
19         /* Following line is a marker for the awk script - do not change */
20         asm volatile("rdtsc"); /* Start here */
21
22         /* Test fix for vcvtph2ps in x86-opcode-map.txt */
23
24         asm volatile("vcvtph2ps %xmm3,%ymm5");
25
26 #ifdef __x86_64__
27
28         /* AVX-512: Instructions with the same op codes as Mask Instructions  */
29
30         asm volatile("cmovno %rax,%rbx");
31         asm volatile("cmovno 0x12345678(%rax),%rcx");
32         asm volatile("cmovno 0x12345678(%rax),%cx");
33
34         asm volatile("cmove  %rax,%rbx");
35         asm volatile("cmove 0x12345678(%rax),%rcx");
36         asm volatile("cmove 0x12345678(%rax),%cx");
37
38         asm volatile("seto    0x12345678(%rax)");
39         asm volatile("setno   0x12345678(%rax)");
40         asm volatile("setb    0x12345678(%rax)");
41         asm volatile("setc    0x12345678(%rax)");
42         asm volatile("setnae  0x12345678(%rax)");
43         asm volatile("setae   0x12345678(%rax)");
44         asm volatile("setnb   0x12345678(%rax)");
45         asm volatile("setnc   0x12345678(%rax)");
46         asm volatile("sets    0x12345678(%rax)");
47         asm volatile("setns   0x12345678(%rax)");
48
49         /* AVX-512: Mask Instructions */
50
51         asm volatile("kandw  %k7,%k6,%k5");
52         asm volatile("kandq  %k7,%k6,%k5");
53         asm volatile("kandb  %k7,%k6,%k5");
54         asm volatile("kandd  %k7,%k6,%k5");
55
56         asm volatile("kandnw  %k7,%k6,%k5");
57         asm volatile("kandnq  %k7,%k6,%k5");
58         asm volatile("kandnb  %k7,%k6,%k5");
59         asm volatile("kandnd  %k7,%k6,%k5");
60
61         asm volatile("knotw  %k7,%k6");
62         asm volatile("knotq  %k7,%k6");
63         asm volatile("knotb  %k7,%k6");
64         asm volatile("knotd  %k7,%k6");
65
66         asm volatile("korw  %k7,%k6,%k5");
67         asm volatile("korq  %k7,%k6,%k5");
68         asm volatile("korb  %k7,%k6,%k5");
69         asm volatile("kord  %k7,%k6,%k5");
70
71         asm volatile("kxnorw  %k7,%k6,%k5");
72         asm volatile("kxnorq  %k7,%k6,%k5");
73         asm volatile("kxnorb  %k7,%k6,%k5");
74         asm volatile("kxnord  %k7,%k6,%k5");
75
76         asm volatile("kxorw  %k7,%k6,%k5");
77         asm volatile("kxorq  %k7,%k6,%k5");
78         asm volatile("kxorb  %k7,%k6,%k5");
79         asm volatile("kxord  %k7,%k6,%k5");
80
81         asm volatile("kaddw  %k7,%k6,%k5");
82         asm volatile("kaddq  %k7,%k6,%k5");
83         asm volatile("kaddb  %k7,%k6,%k5");
84         asm volatile("kaddd  %k7,%k6,%k5");
85
86         asm volatile("kunpckbw %k7,%k6,%k5");
87         asm volatile("kunpckwd %k7,%k6,%k5");
88         asm volatile("kunpckdq %k7,%k6,%k5");
89
90         asm volatile("kmovw  %k6,%k5");
91         asm volatile("kmovw  (%rcx),%k5");
92         asm volatile("kmovw  0x123(%rax,%r14,8),%k5");
93         asm volatile("kmovw  %k5,(%rcx)");
94         asm volatile("kmovw  %k5,0x123(%rax,%r14,8)");
95         asm volatile("kmovw  %eax,%k5");
96         asm volatile("kmovw  %ebp,%k5");
97         asm volatile("kmovw  %r13d,%k5");
98         asm volatile("kmovw  %k5,%eax");
99         asm volatile("kmovw  %k5,%ebp");
100         asm volatile("kmovw  %k5,%r13d");
101
102         asm volatile("kmovq  %k6,%k5");
103         asm volatile("kmovq  (%rcx),%k5");
104         asm volatile("kmovq  0x123(%rax,%r14,8),%k5");
105         asm volatile("kmovq  %k5,(%rcx)");
106         asm volatile("kmovq  %k5,0x123(%rax,%r14,8)");
107         asm volatile("kmovq  %rax,%k5");
108         asm volatile("kmovq  %rbp,%k5");
109         asm volatile("kmovq  %r13,%k5");
110         asm volatile("kmovq  %k5,%rax");
111         asm volatile("kmovq  %k5,%rbp");
112         asm volatile("kmovq  %k5,%r13");
113
114         asm volatile("kmovb  %k6,%k5");
115         asm volatile("kmovb  (%rcx),%k5");
116         asm volatile("kmovb  0x123(%rax,%r14,8),%k5");
117         asm volatile("kmovb  %k5,(%rcx)");
118         asm volatile("kmovb  %k5,0x123(%rax,%r14,8)");
119         asm volatile("kmovb  %eax,%k5");
120         asm volatile("kmovb  %ebp,%k5");
121         asm volatile("kmovb  %r13d,%k5");
122         asm volatile("kmovb  %k5,%eax");
123         asm volatile("kmovb  %k5,%ebp");
124         asm volatile("kmovb  %k5,%r13d");
125
126         asm volatile("kmovd  %k6,%k5");
127         asm volatile("kmovd  (%rcx),%k5");
128         asm volatile("kmovd  0x123(%rax,%r14,8),%k5");
129         asm volatile("kmovd  %k5,(%rcx)");
130         asm volatile("kmovd  %k5,0x123(%rax,%r14,8)");
131         asm volatile("kmovd  %eax,%k5");
132         asm volatile("kmovd  %ebp,%k5");
133         asm volatile("kmovd  %r13d,%k5");
134         asm volatile("kmovd  %k5,%eax");
135         asm volatile("kmovd  %k5,%ebp");
136         asm volatile("kmovd %k5,%r13d");
137
138         asm volatile("kortestw %k6,%k5");
139         asm volatile("kortestq %k6,%k5");
140         asm volatile("kortestb %k6,%k5");
141         asm volatile("kortestd %k6,%k5");
142
143         asm volatile("ktestw %k6,%k5");
144         asm volatile("ktestq %k6,%k5");
145         asm volatile("ktestb %k6,%k5");
146         asm volatile("ktestd %k6,%k5");
147
148         asm volatile("kshiftrw $0x12,%k6,%k5");
149         asm volatile("kshiftrq $0x5b,%k6,%k5");
150         asm volatile("kshiftlw $0x12,%k6,%k5");
151         asm volatile("kshiftlq $0x5b,%k6,%k5");
152
153         /* AVX-512: Op code 0f 5b */
154         asm volatile("vcvtdq2ps %xmm5,%xmm6");
155         asm volatile("vcvtqq2ps %zmm29,%ymm6{%k7}");
156         asm volatile("vcvtps2dq %xmm5,%xmm6");
157         asm volatile("vcvttps2dq %xmm5,%xmm6");
158
159         /* AVX-512: Op code 0f 6f */
160
161         asm volatile("movq   %mm0,%mm4");
162         asm volatile("vmovdqa %ymm4,%ymm6");
163         asm volatile("vmovdqa32 %zmm25,%zmm26");
164         asm volatile("vmovdqa64 %zmm25,%zmm26");
165         asm volatile("vmovdqu %ymm4,%ymm6");
166         asm volatile("vmovdqu32 %zmm29,%zmm30");
167         asm volatile("vmovdqu64 %zmm25,%zmm26");
168         asm volatile("vmovdqu8 %zmm29,%zmm30");
169         asm volatile("vmovdqu16 %zmm25,%zmm26");
170
171         /* AVX-512: Op code 0f 78 */
172
173         asm volatile("vmread %rax,%rbx");
174         asm volatile("vcvttps2udq %zmm25,%zmm26");
175         asm volatile("vcvttpd2udq %zmm29,%ymm6{%k7}");
176         asm volatile("vcvttsd2usi %xmm6,%rax");
177         asm volatile("vcvttss2usi %xmm6,%rax");
178         asm volatile("vcvttps2uqq %ymm5,%zmm26{%k7}");
179         asm volatile("vcvttpd2uqq %zmm29,%zmm30");
180
181         /* AVX-512: Op code 0f 79 */
182
183         asm volatile("vmwrite %rax,%rbx");
184         asm volatile("vcvtps2udq %zmm25,%zmm26");
185         asm volatile("vcvtpd2udq %zmm29,%ymm6{%k7}");
186         asm volatile("vcvtsd2usi %xmm6,%rax");
187         asm volatile("vcvtss2usi %xmm6,%rax");
188         asm volatile("vcvtps2uqq %ymm5,%zmm26{%k7}");
189         asm volatile("vcvtpd2uqq %zmm29,%zmm30");
190
191         /* AVX-512: Op code 0f 7a */
192
193         asm volatile("vcvtudq2pd %ymm5,%zmm29{%k7}");
194         asm volatile("vcvtuqq2pd %zmm25,%zmm26");
195         asm volatile("vcvtudq2ps %zmm29,%zmm30");
196         asm volatile("vcvtuqq2ps %zmm25,%ymm26{%k7}");
197         asm volatile("vcvttps2qq %ymm25,%zmm26{%k7}");
198         asm volatile("vcvttpd2qq %zmm29,%zmm30");
199
200         /* AVX-512: Op code 0f 7b */
201
202         asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
203         asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
204         asm volatile("vcvtps2qq %ymm5,%zmm26{%k7}");
205         asm volatile("vcvtpd2qq %zmm29,%zmm30");
206
207         /* AVX-512: Op code 0f 7f */
208
209         asm volatile("movq.s  %mm0,%mm4");
210         asm volatile("vmovdqa %ymm8,%ymm6");
211         asm volatile("vmovdqa32.s %zmm25,%zmm26");
212         asm volatile("vmovdqa64.s %zmm25,%zmm26");
213         asm volatile("vmovdqu %ymm8,%ymm6");
214         asm volatile("vmovdqu32.s %zmm25,%zmm26");
215         asm volatile("vmovdqu64.s %zmm25,%zmm26");
216         asm volatile("vmovdqu8.s %zmm30,(%rcx)");
217         asm volatile("vmovdqu16.s %zmm25,%zmm26");
218
219         /* AVX-512: Op code 0f db */
220
221         asm volatile("pand  %mm1,%mm2");
222         asm volatile("pand  %xmm1,%xmm2");
223         asm volatile("vpand  %ymm4,%ymm6,%ymm2");
224         asm volatile("vpandd %zmm24,%zmm25,%zmm26");
225         asm volatile("vpandq %zmm24,%zmm25,%zmm26");
226
227         /* AVX-512: Op code 0f df */
228
229         asm volatile("pandn  %mm1,%mm2");
230         asm volatile("pandn  %xmm1,%xmm2");
231         asm volatile("vpandn %ymm4,%ymm6,%ymm2");
232         asm volatile("vpandnd %zmm24,%zmm25,%zmm26");
233         asm volatile("vpandnq %zmm24,%zmm25,%zmm26");
234
235         /* AVX-512: Op code 0f e6 */
236
237         asm volatile("vcvttpd2dq %xmm1,%xmm2");
238         asm volatile("vcvtdq2pd %xmm5,%xmm6");
239         asm volatile("vcvtdq2pd %ymm5,%zmm26{%k7}");
240         asm volatile("vcvtqq2pd %zmm25,%zmm26");
241         asm volatile("vcvtpd2dq %xmm1,%xmm2");
242
243         /* AVX-512: Op code 0f eb */
244
245         asm volatile("por   %mm4,%mm6");
246         asm volatile("vpor   %ymm4,%ymm6,%ymm2");
247         asm volatile("vpord  %zmm24,%zmm25,%zmm26");
248         asm volatile("vporq  %zmm24,%zmm25,%zmm26");
249
250         /* AVX-512: Op code 0f ef */
251
252         asm volatile("pxor   %mm4,%mm6");
253         asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
254         asm volatile("vpxord %zmm24,%zmm25,%zmm26");
255         asm volatile("vpxorq %zmm24,%zmm25,%zmm26");
256
257         /* AVX-512: Op code 0f 38 10 */
258
259         asm volatile("pblendvb %xmm1,%xmm0");
260         asm volatile("vpsrlvw %zmm27,%zmm28,%zmm29");
261         asm volatile("vpmovuswb %zmm28,%ymm6{%k7}");
262
263         /* AVX-512: Op code 0f 38 11 */
264
265         asm volatile("vpmovusdb %zmm28,%xmm6{%k7}");
266         asm volatile("vpsravw %zmm27,%zmm28,%zmm29");
267
268         /* AVX-512: Op code 0f 38 12 */
269
270         asm volatile("vpmovusqb %zmm27,%xmm6{%k7}");
271         asm volatile("vpsllvw %zmm27,%zmm28,%zmm29");
272
273         /* AVX-512: Op code 0f 38 13 */
274
275         asm volatile("vcvtph2ps %xmm3,%ymm5");
276         asm volatile("vcvtph2ps %ymm5,%zmm27{%k7}");
277         asm volatile("vpmovusdw %zmm27,%ymm6{%k7}");
278
279         /* AVX-512: Op code 0f 38 14 */
280
281         asm volatile("blendvps %xmm1,%xmm0");
282         asm volatile("vpmovusqw %zmm27,%xmm6{%k7}");
283         asm volatile("vprorvd %zmm27,%zmm28,%zmm29");
284         asm volatile("vprorvq %zmm27,%zmm28,%zmm29");
285
286         /* AVX-512: Op code 0f 38 15 */
287
288         asm volatile("blendvpd %xmm1,%xmm0");
289         asm volatile("vpmovusqd %zmm27,%ymm6{%k7}");
290         asm volatile("vprolvd %zmm27,%zmm28,%zmm29");
291         asm volatile("vprolvq %zmm27,%zmm28,%zmm29");
292
293         /* AVX-512: Op code 0f 38 16 */
294
295         asm volatile("vpermps %ymm4,%ymm6,%ymm2");
296         asm volatile("vpermps %ymm24,%ymm26,%ymm22{%k7}");
297         asm volatile("vpermpd %ymm24,%ymm26,%ymm22{%k7}");
298
299         /* AVX-512: Op code 0f 38 19 */
300
301         asm volatile("vbroadcastsd %xmm4,%ymm6");
302         asm volatile("vbroadcastf32x2 %xmm27,%zmm26");
303
304         /* AVX-512: Op code 0f 38 1a */
305
306         asm volatile("vbroadcastf128 (%rcx),%ymm4");
307         asm volatile("vbroadcastf32x4 (%rcx),%zmm26");
308         asm volatile("vbroadcastf64x2 (%rcx),%zmm26");
309
310         /* AVX-512: Op code 0f 38 1b */
311
312         asm volatile("vbroadcastf32x8 (%rcx),%zmm27");
313         asm volatile("vbroadcastf64x4 (%rcx),%zmm26");
314
315         /* AVX-512: Op code 0f 38 1f */
316
317         asm volatile("vpabsq %zmm27,%zmm28");
318
319         /* AVX-512: Op code 0f 38 20 */
320
321         asm volatile("vpmovsxbw %xmm4,%xmm5");
322         asm volatile("vpmovswb %zmm27,%ymm6{%k7}");
323
324         /* AVX-512: Op code 0f 38 21 */
325
326         asm volatile("vpmovsxbd %xmm4,%ymm6");
327         asm volatile("vpmovsdb %zmm27,%xmm6{%k7}");
328
329         /* AVX-512: Op code 0f 38 22 */
330
331         asm volatile("vpmovsxbq %xmm4,%ymm4");
332         asm volatile("vpmovsqb %zmm27,%xmm6{%k7}");
333
334         /* AVX-512: Op code 0f 38 23 */
335
336         asm volatile("vpmovsxwd %xmm4,%ymm4");
337         asm volatile("vpmovsdw %zmm27,%ymm6{%k7}");
338
339         /* AVX-512: Op code 0f 38 24 */
340
341         asm volatile("vpmovsxwq %xmm4,%ymm6");
342         asm volatile("vpmovsqw %zmm27,%xmm6{%k7}");
343
344         /* AVX-512: Op code 0f 38 25 */
345
346         asm volatile("vpmovsxdq %xmm4,%ymm4");
347         asm volatile("vpmovsqd %zmm27,%ymm6{%k7}");
348
349         /* AVX-512: Op code 0f 38 26 */
350
351         asm volatile("vptestmb %zmm27,%zmm28,%k5");
352         asm volatile("vptestmw %zmm27,%zmm28,%k5");
353         asm volatile("vptestnmb %zmm26,%zmm27,%k5");
354         asm volatile("vptestnmw %zmm26,%zmm27,%k5");
355
356         /* AVX-512: Op code 0f 38 27 */
357
358         asm volatile("vptestmd %zmm27,%zmm28,%k5");
359         asm volatile("vptestmq %zmm27,%zmm28,%k5");
360         asm volatile("vptestnmd %zmm26,%zmm27,%k5");
361         asm volatile("vptestnmq %zmm26,%zmm27,%k5");
362
363         /* AVX-512: Op code 0f 38 28 */
364
365         asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
366         asm volatile("vpmovm2b %k5,%zmm28");
367         asm volatile("vpmovm2w %k5,%zmm28");
368
369         /* AVX-512: Op code 0f 38 29 */
370
371         asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
372         asm volatile("vpmovb2m %zmm28,%k5");
373         asm volatile("vpmovw2m %zmm28,%k5");
374
375         /* AVX-512: Op code 0f 38 2a */
376
377         asm volatile("vmovntdqa (%rcx),%ymm4");
378         asm volatile("vpbroadcastmb2q %k6,%zmm30");
379
380         /* AVX-512: Op code 0f 38 2c */
381
382         asm volatile("vmaskmovps (%rcx),%ymm4,%ymm6");
383         asm volatile("vscalefps %zmm24,%zmm25,%zmm26");
384         asm volatile("vscalefpd %zmm24,%zmm25,%zmm26");
385
386         /* AVX-512: Op code 0f 38 2d */
387
388         asm volatile("vmaskmovpd (%rcx),%ymm4,%ymm6");
389         asm volatile("vscalefss %xmm24,%xmm25,%xmm26{%k7}");
390         asm volatile("vscalefsd %xmm24,%xmm25,%xmm26{%k7}");
391
392         /* AVX-512: Op code 0f 38 30 */
393
394         asm volatile("vpmovzxbw %xmm4,%ymm4");
395         asm volatile("vpmovwb %zmm27,%ymm6{%k7}");
396
397         /* AVX-512: Op code 0f 38 31 */
398
399         asm volatile("vpmovzxbd %xmm4,%ymm6");
400         asm volatile("vpmovdb %zmm27,%xmm6{%k7}");
401
402         /* AVX-512: Op code 0f 38 32 */
403
404         asm volatile("vpmovzxbq %xmm4,%ymm4");
405         asm volatile("vpmovqb %zmm27,%xmm6{%k7}");
406
407         /* AVX-512: Op code 0f 38 33 */
408
409         asm volatile("vpmovzxwd %xmm4,%ymm4");
410         asm volatile("vpmovdw %zmm27,%ymm6{%k7}");
411
412         /* AVX-512: Op code 0f 38 34 */
413
414         asm volatile("vpmovzxwq %xmm4,%ymm6");
415         asm volatile("vpmovqw %zmm27,%xmm6{%k7}");
416
417         /* AVX-512: Op code 0f 38 35 */
418
419         asm volatile("vpmovzxdq %xmm4,%ymm4");
420         asm volatile("vpmovqd %zmm27,%ymm6{%k7}");
421
422         /* AVX-512: Op code 0f 38 38 */
423
424         asm volatile("vpermd %ymm4,%ymm6,%ymm2");
425         asm volatile("vpermd %ymm24,%ymm26,%ymm22{%k7}");
426         asm volatile("vpermq %ymm24,%ymm26,%ymm22{%k7}");
427
428         /* AVX-512: Op code 0f 38 38 */
429
430         asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
431         asm volatile("vpmovm2d %k5,%zmm28");
432         asm volatile("vpmovm2q %k5,%zmm28");
433
434         /* AVX-512: Op code 0f 38 39 */
435
436         asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
437         asm volatile("vpminsd %zmm24,%zmm25,%zmm26");
438         asm volatile("vpminsq %zmm24,%zmm25,%zmm26");
439         asm volatile("vpmovd2m %zmm28,%k5");
440         asm volatile("vpmovq2m %zmm28,%k5");
441
442         /* AVX-512: Op code 0f 38 3a */
443
444         asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
445         asm volatile("vpbroadcastmw2d %k6,%zmm28");
446
447         /* AVX-512: Op code 0f 38 3b */
448
449         asm volatile("vpminud %ymm4,%ymm6,%ymm2");
450         asm volatile("vpminud %zmm24,%zmm25,%zmm26");
451         asm volatile("vpminuq %zmm24,%zmm25,%zmm26");
452
453         /* AVX-512: Op code 0f 38 3d */
454
455         asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
456         asm volatile("vpmaxsd %zmm24,%zmm25,%zmm26");
457         asm volatile("vpmaxsq %zmm24,%zmm25,%zmm26");
458
459         /* AVX-512: Op code 0f 38 3f */
460
461         asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
462         asm volatile("vpmaxud %zmm24,%zmm25,%zmm26");
463         asm volatile("vpmaxuq %zmm24,%zmm25,%zmm26");
464
465         /* AVX-512: Op code 0f 38 42 */
466
467         asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
468         asm volatile("vpmulld %zmm24,%zmm25,%zmm26");
469         asm volatile("vpmullq %zmm24,%zmm25,%zmm26");
470
471         /* AVX-512: Op code 0f 38 42 */
472
473         asm volatile("vgetexpps %zmm25,%zmm26");
474         asm volatile("vgetexppd %zmm27,%zmm28");
475
476         /* AVX-512: Op code 0f 38 43 */
477
478         asm volatile("vgetexpss %xmm24,%xmm25,%xmm26{%k7}");
479         asm volatile("vgetexpsd %xmm28,%xmm29,%xmm30{%k7}");
480
481         /* AVX-512: Op code 0f 38 44 */
482
483         asm volatile("vplzcntd %zmm27,%zmm28");
484         asm volatile("vplzcntq %zmm27,%zmm28");
485
486         /* AVX-512: Op code 0f 38 46 */
487
488         asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
489         asm volatile("vpsravd %zmm24,%zmm25,%zmm26");
490         asm volatile("vpsravq %zmm24,%zmm25,%zmm26");
491
492         /* AVX-512: Op code 0f 38 4c */
493
494         asm volatile("vrcp14ps %zmm25,%zmm26");
495         asm volatile("vrcp14pd %zmm27,%zmm28");
496
497         /* AVX-512: Op code 0f 38 4d */
498
499         asm volatile("vrcp14ss %xmm24,%xmm25,%xmm26{%k7}");
500         asm volatile("vrcp14sd %xmm24,%xmm25,%xmm26{%k7}");
501
502         /* AVX-512: Op code 0f 38 4e */
503
504         asm volatile("vrsqrt14ps %zmm25,%zmm26");
505         asm volatile("vrsqrt14pd %zmm27,%zmm28");
506
507         /* AVX-512: Op code 0f 38 4f */
508
509         asm volatile("vrsqrt14ss %xmm24,%xmm25,%xmm26{%k7}");
510         asm volatile("vrsqrt14sd %xmm24,%xmm25,%xmm26{%k7}");
511
512         /* AVX-512: Op code 0f 38 59 */
513
514         asm volatile("vpbroadcastq %xmm4,%xmm6");
515         asm volatile("vbroadcasti32x2 %xmm27,%zmm26");
516
517         /* AVX-512: Op code 0f 38 5a */
518
519         asm volatile("vbroadcasti128 (%rcx),%ymm4");
520         asm volatile("vbroadcasti32x4 (%rcx),%zmm26");
521         asm volatile("vbroadcasti64x2 (%rcx),%zmm26");
522
523         /* AVX-512: Op code 0f 38 5b */
524
525         asm volatile("vbroadcasti32x8 (%rcx),%zmm28");
526         asm volatile("vbroadcasti64x4 (%rcx),%zmm26");
527
528         /* AVX-512: Op code 0f 38 64 */
529
530         asm volatile("vpblendmd %zmm26,%zmm27,%zmm28");
531         asm volatile("vpblendmq %zmm26,%zmm27,%zmm28");
532
533         /* AVX-512: Op code 0f 38 65 */
534
535         asm volatile("vblendmps %zmm24,%zmm25,%zmm26");
536         asm volatile("vblendmpd %zmm26,%zmm27,%zmm28");
537
538         /* AVX-512: Op code 0f 38 66 */
539
540         asm volatile("vpblendmb %zmm26,%zmm27,%zmm28");
541         asm volatile("vpblendmw %zmm26,%zmm27,%zmm28");
542
543         /* AVX-512: Op code 0f 38 75 */
544
545         asm volatile("vpermi2b %zmm24,%zmm25,%zmm26");
546         asm volatile("vpermi2w %zmm26,%zmm27,%zmm28");
547
548         /* AVX-512: Op code 0f 38 76 */
549
550         asm volatile("vpermi2d %zmm26,%zmm27,%zmm28");
551         asm volatile("vpermi2q %zmm26,%zmm27,%zmm28");
552
553         /* AVX-512: Op code 0f 38 77 */
554
555         asm volatile("vpermi2ps %zmm26,%zmm27,%zmm28");
556         asm volatile("vpermi2pd %zmm26,%zmm27,%zmm28");
557
558         /* AVX-512: Op code 0f 38 7a */
559
560         asm volatile("vpbroadcastb %eax,%xmm30");
561
562         /* AVX-512: Op code 0f 38 7b */
563
564         asm volatile("vpbroadcastw %eax,%xmm30");
565
566         /* AVX-512: Op code 0f 38 7c */
567
568         asm volatile("vpbroadcastd %eax,%xmm30");
569         asm volatile("vpbroadcastq %rax,%zmm30");
570
571         /* AVX-512: Op code 0f 38 7d */
572
573         asm volatile("vpermt2b %zmm26,%zmm27,%zmm28");
574         asm volatile("vpermt2w %zmm26,%zmm27,%zmm28");
575
576         /* AVX-512: Op code 0f 38 7e */
577
578         asm volatile("vpermt2d %zmm26,%zmm27,%zmm28");
579         asm volatile("vpermt2q %zmm26,%zmm27,%zmm28");
580
581         /* AVX-512: Op code 0f 38 7f */
582
583         asm volatile("vpermt2ps %zmm26,%zmm27,%zmm28");
584         asm volatile("vpermt2pd %zmm26,%zmm27,%zmm28");
585
586         /* AVX-512: Op code 0f 38 83 */
587
588         asm volatile("vpmultishiftqb %zmm26,%zmm27,%zmm28");
589
590         /* AVX-512: Op code 0f 38 88 */
591
592         asm volatile("vexpandps (%rcx),%zmm26");
593         asm volatile("vexpandpd (%rcx),%zmm28");
594
595         /* AVX-512: Op code 0f 38 89 */
596
597         asm volatile("vpexpandd (%rcx),%zmm28");
598         asm volatile("vpexpandq (%rcx),%zmm26");
599
600         /* AVX-512: Op code 0f 38 8a */
601
602         asm volatile("vcompressps %zmm28,(%rcx)");
603         asm volatile("vcompresspd %zmm28,(%rcx)");
604
605         /* AVX-512: Op code 0f 38 8b */
606
607         asm volatile("vpcompressd %zmm28,(%rcx)");
608         asm volatile("vpcompressq %zmm26,(%rcx)");
609
610         /* AVX-512: Op code 0f 38 8d */
611
612         asm volatile("vpermb %zmm26,%zmm27,%zmm28");
613         asm volatile("vpermw %zmm26,%zmm27,%zmm28");
614
615         /* AVX-512: Op code 0f 38 90 */
616
617         asm volatile("vpgatherdd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
618         asm volatile("vpgatherdq %xmm2,0x04(%rbp,%xmm7,2),%xmm1");
619         asm volatile("vpgatherdd 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
620         asm volatile("vpgatherdq 0x7b(%rbp,%ymm27,8),%zmm26{%k1}");
621
622         /* AVX-512: Op code 0f 38 91 */
623
624         asm volatile("vpgatherqd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
625         asm volatile("vpgatherqq %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
626         asm volatile("vpgatherqd 0x7b(%rbp,%zmm27,8),%ymm26{%k1}");
627         asm volatile("vpgatherqq 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
628
629         /* AVX-512: Op code 0f 38 a0 */
630
631         asm volatile("vpscatterdd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
632         asm volatile("vpscatterdq %zmm26,0x7b(%rbp,%ymm27,8){%k1}");
633
634         /* AVX-512: Op code 0f 38 a1 */
635
636         asm volatile("vpscatterqd %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
637         asm volatile("vpscatterqq %ymm6,0x7b(%rbp,%ymm27,8){%k1}");
638
639         /* AVX-512: Op code 0f 38 a2 */
640
641         asm volatile("vscatterdps %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
642         asm volatile("vscatterdpd %zmm28,0x7b(%rbp,%ymm27,8){%k1}");
643
644         /* AVX-512: Op code 0f 38 a3 */
645
646         asm volatile("vscatterqps %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
647         asm volatile("vscatterqpd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
648
649         /* AVX-512: Op code 0f 38 b4 */
650
651         asm volatile("vpmadd52luq %zmm26,%zmm27,%zmm28");
652
653         /* AVX-512: Op code 0f 38 b5 */
654
655         asm volatile("vpmadd52huq %zmm26,%zmm27,%zmm28");
656
657         /* AVX-512: Op code 0f 38 c4 */
658
659         asm volatile("vpconflictd %zmm26,%zmm27");
660         asm volatile("vpconflictq %zmm26,%zmm27");
661
662         /* AVX-512: Op code 0f 38 c8 */
663
664         asm volatile("vexp2ps %zmm29,%zmm30");
665         asm volatile("vexp2pd %zmm26,%zmm27");
666
667         /* AVX-512: Op code 0f 38 ca */
668
669         asm volatile("vrcp28ps %zmm29,%zmm30");
670         asm volatile("vrcp28pd %zmm26,%zmm27");
671
672         /* AVX-512: Op code 0f 38 cb */
673
674         asm volatile("vrcp28ss %xmm28,%xmm29,%xmm30{%k7}");
675         asm volatile("vrcp28sd %xmm25,%xmm26,%xmm27{%k7}");
676
677         /* AVX-512: Op code 0f 38 cc */
678
679         asm volatile("vrsqrt28ps %zmm29,%zmm30");
680         asm volatile("vrsqrt28pd %zmm26,%zmm27");
681
682         /* AVX-512: Op code 0f 38 cd */
683
684         asm volatile("vrsqrt28ss %xmm28,%xmm29,%xmm30{%k7}");
685         asm volatile("vrsqrt28sd %xmm25,%xmm26,%xmm27{%k7}");
686
687         /* AVX-512: Op code 0f 3a 03 */
688
689         asm volatile("valignd $0x12,%zmm28,%zmm29,%zmm30");
690         asm volatile("valignq $0x12,%zmm25,%zmm26,%zmm27");
691
692         /* AVX-512: Op code 0f 3a 08 */
693
694         asm volatile("vroundps $0x5,%ymm6,%ymm2");
695         asm volatile("vrndscaleps $0x12,%zmm25,%zmm26");
696
697         /* AVX-512: Op code 0f 3a 09 */
698
699         asm volatile("vroundpd $0x5,%ymm6,%ymm2");
700         asm volatile("vrndscalepd $0x12,%zmm25,%zmm26");
701
702         /* AVX-512: Op code 0f 3a 1a */
703
704         asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
705         asm volatile("vrndscaless $0x12,%xmm24,%xmm25,%xmm26{%k7}");
706
707         /* AVX-512: Op code 0f 3a 0b */
708
709         asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
710         asm volatile("vrndscalesd $0x12,%xmm24,%xmm25,%xmm26{%k7}");
711
712         /* AVX-512: Op code 0f 3a 18 */
713
714         asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
715         asm volatile("vinsertf32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
716         asm volatile("vinsertf64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
717
718         /* AVX-512: Op code 0f 3a 19 */
719
720         asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
721         asm volatile("vextractf32x4 $0x12,%zmm25,%xmm26{%k7}");
722         asm volatile("vextractf64x2 $0x12,%zmm25,%xmm26{%k7}");
723
724         /* AVX-512: Op code 0f 3a 1a */
725
726         asm volatile("vinsertf32x8 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
727         asm volatile("vinsertf64x4 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
728
729         /* AVX-512: Op code 0f 3a 1b */
730
731         asm volatile("vextractf32x8 $0x12,%zmm29,%ymm30{%k7}");
732         asm volatile("vextractf64x4 $0x12,%zmm26,%ymm27{%k7}");
733
734         /* AVX-512: Op code 0f 3a 1e */
735
736         asm volatile("vpcmpud $0x12,%zmm29,%zmm30,%k5");
737         asm volatile("vpcmpuq $0x12,%zmm26,%zmm27,%k5");
738
739         /* AVX-512: Op code 0f 3a 1f */
740
741         asm volatile("vpcmpd $0x12,%zmm29,%zmm30,%k5");
742         asm volatile("vpcmpq $0x12,%zmm26,%zmm27,%k5");
743
744         /* AVX-512: Op code 0f 3a 23 */
745
746         asm volatile("vshuff32x4 $0x12,%zmm28,%zmm29,%zmm30");
747         asm volatile("vshuff64x2 $0x12,%zmm25,%zmm26,%zmm27");
748
749         /* AVX-512: Op code 0f 3a 25 */
750
751         asm volatile("vpternlogd $0x12,%zmm28,%zmm29,%zmm30");
752         asm volatile("vpternlogq $0x12,%zmm28,%zmm29,%zmm30");
753
754         /* AVX-512: Op code 0f 3a 26 */
755
756         asm volatile("vgetmantps $0x12,%zmm26,%zmm27");
757         asm volatile("vgetmantpd $0x12,%zmm29,%zmm30");
758
759         /* AVX-512: Op code 0f 3a 27 */
760
761         asm volatile("vgetmantss $0x12,%xmm25,%xmm26,%xmm27{%k7}");
762         asm volatile("vgetmantsd $0x12,%xmm28,%xmm29,%xmm30{%k7}");
763
764         /* AVX-512: Op code 0f 3a 38 */
765
766         asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
767         asm volatile("vinserti32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
768         asm volatile("vinserti64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
769
770         /* AVX-512: Op code 0f 3a 39 */
771
772         asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
773         asm volatile("vextracti32x4 $0x12,%zmm25,%xmm26{%k7}");
774         asm volatile("vextracti64x2 $0x12,%zmm25,%xmm26{%k7}");
775
776         /* AVX-512: Op code 0f 3a 3a */
777
778         asm volatile("vinserti32x8 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
779         asm volatile("vinserti64x4 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
780
781         /* AVX-512: Op code 0f 3a 3b */
782
783         asm volatile("vextracti32x8 $0x12,%zmm29,%ymm30{%k7}");
784         asm volatile("vextracti64x4 $0x12,%zmm26,%ymm27{%k7}");
785
786         /* AVX-512: Op code 0f 3a 3e */
787
788         asm volatile("vpcmpub $0x12,%zmm29,%zmm30,%k5");
789         asm volatile("vpcmpuw $0x12,%zmm26,%zmm27,%k5");
790
791         /* AVX-512: Op code 0f 3a 3f */
792
793         asm volatile("vpcmpb $0x12,%zmm29,%zmm30,%k5");
794         asm volatile("vpcmpw $0x12,%zmm26,%zmm27,%k5");
795
796         /* AVX-512: Op code 0f 3a 43 */
797
798         asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
799         asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
800
801         /* AVX-512: Op code 0f 3a 43 */
802
803         asm volatile("vshufi32x4 $0x12,%zmm25,%zmm26,%zmm27");
804         asm volatile("vshufi64x2 $0x12,%zmm28,%zmm29,%zmm30");
805
806         /* AVX-512: Op code 0f 3a 50 */
807
808         asm volatile("vrangeps $0x12,%zmm25,%zmm26,%zmm27");
809         asm volatile("vrangepd $0x12,%zmm28,%zmm29,%zmm30");
810
811         /* AVX-512: Op code 0f 3a 51 */
812
813         asm volatile("vrangess $0x12,%xmm25,%xmm26,%xmm27");
814         asm volatile("vrangesd $0x12,%xmm28,%xmm29,%xmm30");
815
816         /* AVX-512: Op code 0f 3a 54 */
817
818         asm volatile("vfixupimmps $0x12,%zmm28,%zmm29,%zmm30");
819         asm volatile("vfixupimmpd $0x12,%zmm25,%zmm26,%zmm27");
820
821         /* AVX-512: Op code 0f 3a 55 */
822
823         asm volatile("vfixupimmss $0x12,%xmm28,%xmm29,%xmm30{%k7}");
824         asm volatile("vfixupimmsd $0x12,%xmm25,%xmm26,%xmm27{%k7}");
825
826         /* AVX-512: Op code 0f 3a 56 */
827
828         asm volatile("vreduceps $0x12,%zmm26,%zmm27");
829         asm volatile("vreducepd $0x12,%zmm29,%zmm30");
830
831         /* AVX-512: Op code 0f 3a 57 */
832
833         asm volatile("vreducess $0x12,%xmm25,%xmm26,%xmm27");
834         asm volatile("vreducesd $0x12,%xmm28,%xmm29,%xmm30");
835
836         /* AVX-512: Op code 0f 3a 66 */
837
838         asm volatile("vfpclassps $0x12,%zmm27,%k5");
839         asm volatile("vfpclasspd $0x12,%zmm30,%k5");
840
841         /* AVX-512: Op code 0f 3a 67 */
842
843         asm volatile("vfpclassss $0x12,%xmm27,%k5");
844         asm volatile("vfpclasssd $0x12,%xmm30,%k5");
845
846         /* AVX-512: Op code 0f 72 (Grp13) */
847
848         asm volatile("vprord $0x12,%zmm25,%zmm26");
849         asm volatile("vprorq $0x12,%zmm25,%zmm26");
850         asm volatile("vprold $0x12,%zmm29,%zmm30");
851         asm volatile("vprolq $0x12,%zmm29,%zmm30");
852         asm volatile("psrad  $0x2,%mm6");
853         asm volatile("vpsrad $0x5,%ymm6,%ymm2");
854         asm volatile("vpsrad $0x5,%zmm26,%zmm22");
855         asm volatile("vpsraq $0x5,%zmm26,%zmm22");
856
857         /* AVX-512: Op code 0f 38 c6 (Grp18) */
858
859         asm volatile("vgatherpf0dps 0x7b(%r14,%zmm31,8){%k1}");
860         asm volatile("vgatherpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
861         asm volatile("vgatherpf1dps 0x7b(%r14,%zmm31,8){%k1}");
862         asm volatile("vgatherpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
863         asm volatile("vscatterpf0dps 0x7b(%r14,%zmm31,8){%k1}");
864         asm volatile("vscatterpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
865         asm volatile("vscatterpf1dps 0x7b(%r14,%zmm31,8){%k1}");
866         asm volatile("vscatterpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
867
868         /* AVX-512: Op code 0f 38 c7 (Grp19) */
869
870         asm volatile("vgatherpf0qps 0x7b(%r14,%zmm31,8){%k1}");
871         asm volatile("vgatherpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
872         asm volatile("vgatherpf1qps 0x7b(%r14,%zmm31,8){%k1}");
873         asm volatile("vgatherpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
874         asm volatile("vscatterpf0qps 0x7b(%r14,%zmm31,8){%k1}");
875         asm volatile("vscatterpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
876         asm volatile("vscatterpf1qps 0x7b(%r14,%zmm31,8){%k1}");
877         asm volatile("vscatterpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
878
879         /* AVX-512: Examples */
880
881         asm volatile("vaddpd %zmm28,%zmm29,%zmm30");
882         asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}");
883         asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}{z}");
884         asm volatile("vaddpd {rn-sae},%zmm28,%zmm29,%zmm30");
885         asm volatile("vaddpd {ru-sae},%zmm28,%zmm29,%zmm30");
886         asm volatile("vaddpd {rd-sae},%zmm28,%zmm29,%zmm30");
887         asm volatile("vaddpd {rz-sae},%zmm28,%zmm29,%zmm30");
888         asm volatile("vaddpd (%rcx),%zmm29,%zmm30");
889         asm volatile("vaddpd 0x123(%rax,%r14,8),%zmm29,%zmm30");
890         asm volatile("vaddpd (%rcx){1to8},%zmm29,%zmm30");
891         asm volatile("vaddpd 0x1fc0(%rdx),%zmm29,%zmm30");
892         asm volatile("vaddpd 0x3f8(%rdx){1to8},%zmm29,%zmm30");
893         asm volatile("vcmpeq_uqps 0x1fc(%rdx){1to16},%zmm30,%k5");
894         asm volatile("vcmpltsd 0x123(%rax,%r14,8),%xmm29,%k5{%k7}");
895         asm volatile("vcmplesd {sae},%xmm28,%xmm29,%k5{%k7}");
896         asm volatile("vgetmantss $0x5b,0x123(%rax,%r14,8),%xmm29,%xmm30{%k7}");
897
898         /* bndmk m64, bnd */
899
900         asm volatile("bndmk (%rax), %bnd0");
901         asm volatile("bndmk (%r8), %bnd0");
902         asm volatile("bndmk (0x12345678), %bnd0");
903         asm volatile("bndmk (%rax), %bnd3");
904         asm volatile("bndmk (%rcx,%rax,1), %bnd0");
905         asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
906         asm volatile("bndmk (%rax,%rcx,1), %bnd0");
907         asm volatile("bndmk (%rax,%rcx,8), %bnd0");
908         asm volatile("bndmk 0x12(%rax), %bnd0");
909         asm volatile("bndmk 0x12(%rbp), %bnd0");
910         asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
911         asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
912         asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
913         asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
914         asm volatile("bndmk 0x12345678(%rax), %bnd0");
915         asm volatile("bndmk 0x12345678(%rbp), %bnd0");
916         asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
917         asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
918         asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
919         asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
920
921         /* bndcl r/m64, bnd */
922
923         asm volatile("bndcl (%rax), %bnd0");
924         asm volatile("bndcl (%r8), %bnd0");
925         asm volatile("bndcl (0x12345678), %bnd0");
926         asm volatile("bndcl (%rax), %bnd3");
927         asm volatile("bndcl (%rcx,%rax,1), %bnd0");
928         asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
929         asm volatile("bndcl (%rax,%rcx,1), %bnd0");
930         asm volatile("bndcl (%rax,%rcx,8), %bnd0");
931         asm volatile("bndcl 0x12(%rax), %bnd0");
932         asm volatile("bndcl 0x12(%rbp), %bnd0");
933         asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
934         asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
935         asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
936         asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
937         asm volatile("bndcl 0x12345678(%rax), %bnd0");
938         asm volatile("bndcl 0x12345678(%rbp), %bnd0");
939         asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
940         asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
941         asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
942         asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
943         asm volatile("bndcl %rax, %bnd0");
944
945         /* bndcu r/m64, bnd */
946
947         asm volatile("bndcu (%rax), %bnd0");
948         asm volatile("bndcu (%r8), %bnd0");
949         asm volatile("bndcu (0x12345678), %bnd0");
950         asm volatile("bndcu (%rax), %bnd3");
951         asm volatile("bndcu (%rcx,%rax,1), %bnd0");
952         asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
953         asm volatile("bndcu (%rax,%rcx,1), %bnd0");
954         asm volatile("bndcu (%rax,%rcx,8), %bnd0");
955         asm volatile("bndcu 0x12(%rax), %bnd0");
956         asm volatile("bndcu 0x12(%rbp), %bnd0");
957         asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
958         asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
959         asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
960         asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
961         asm volatile("bndcu 0x12345678(%rax), %bnd0");
962         asm volatile("bndcu 0x12345678(%rbp), %bnd0");
963         asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
964         asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
965         asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
966         asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
967         asm volatile("bndcu %rax, %bnd0");
968
969         /* bndcn r/m64, bnd */
970
971         asm volatile("bndcn (%rax), %bnd0");
972         asm volatile("bndcn (%r8), %bnd0");
973         asm volatile("bndcn (0x12345678), %bnd0");
974         asm volatile("bndcn (%rax), %bnd3");
975         asm volatile("bndcn (%rcx,%rax,1), %bnd0");
976         asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
977         asm volatile("bndcn (%rax,%rcx,1), %bnd0");
978         asm volatile("bndcn (%rax,%rcx,8), %bnd0");
979         asm volatile("bndcn 0x12(%rax), %bnd0");
980         asm volatile("bndcn 0x12(%rbp), %bnd0");
981         asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
982         asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
983         asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
984         asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
985         asm volatile("bndcn 0x12345678(%rax), %bnd0");
986         asm volatile("bndcn 0x12345678(%rbp), %bnd0");
987         asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
988         asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
989         asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
990         asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
991         asm volatile("bndcn %rax, %bnd0");
992
993         /* bndmov m128, bnd */
994
995         asm volatile("bndmov (%rax), %bnd0");
996         asm volatile("bndmov (%r8), %bnd0");
997         asm volatile("bndmov (0x12345678), %bnd0");
998         asm volatile("bndmov (%rax), %bnd3");
999         asm volatile("bndmov (%rcx,%rax,1), %bnd0");
1000         asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
1001         asm volatile("bndmov (%rax,%rcx,1), %bnd0");
1002         asm volatile("bndmov (%rax,%rcx,8), %bnd0");
1003         asm volatile("bndmov 0x12(%rax), %bnd0");
1004         asm volatile("bndmov 0x12(%rbp), %bnd0");
1005         asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
1006         asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
1007         asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
1008         asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
1009         asm volatile("bndmov 0x12345678(%rax), %bnd0");
1010         asm volatile("bndmov 0x12345678(%rbp), %bnd0");
1011         asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
1012         asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
1013         asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
1014         asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
1015
1016         /* bndmov bnd, m128 */
1017
1018         asm volatile("bndmov %bnd0, (%rax)");
1019         asm volatile("bndmov %bnd0, (%r8)");
1020         asm volatile("bndmov %bnd0, (0x12345678)");
1021         asm volatile("bndmov %bnd3, (%rax)");
1022         asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
1023         asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
1024         asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
1025         asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
1026         asm volatile("bndmov %bnd0, 0x12(%rax)");
1027         asm volatile("bndmov %bnd0, 0x12(%rbp)");
1028         asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
1029         asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
1030         asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
1031         asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
1032         asm volatile("bndmov %bnd0, 0x12345678(%rax)");
1033         asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
1034         asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
1035         asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
1036         asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
1037         asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
1038
1039         /* bndmov bnd2, bnd1 */
1040
1041         asm volatile("bndmov %bnd0, %bnd1");
1042         asm volatile("bndmov %bnd1, %bnd0");
1043
1044         /* bndldx mib, bnd */
1045
1046         asm volatile("bndldx (%rax), %bnd0");
1047         asm volatile("bndldx (%r8), %bnd0");
1048         asm volatile("bndldx (0x12345678), %bnd0");
1049         asm volatile("bndldx (%rax), %bnd3");
1050         asm volatile("bndldx (%rcx,%rax,1), %bnd0");
1051         asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
1052         asm volatile("bndldx (%rax,%rcx,1), %bnd0");
1053         asm volatile("bndldx 0x12(%rax), %bnd0");
1054         asm volatile("bndldx 0x12(%rbp), %bnd0");
1055         asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
1056         asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
1057         asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
1058         asm volatile("bndldx 0x12345678(%rax), %bnd0");
1059         asm volatile("bndldx 0x12345678(%rbp), %bnd0");
1060         asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
1061         asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
1062         asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
1063
1064         /* bndstx bnd, mib */
1065
1066         asm volatile("bndstx %bnd0, (%rax)");
1067         asm volatile("bndstx %bnd0, (%r8)");
1068         asm volatile("bndstx %bnd0, (0x12345678)");
1069         asm volatile("bndstx %bnd3, (%rax)");
1070         asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
1071         asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
1072         asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
1073         asm volatile("bndstx %bnd0, 0x12(%rax)");
1074         asm volatile("bndstx %bnd0, 0x12(%rbp)");
1075         asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
1076         asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
1077         asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
1078         asm volatile("bndstx %bnd0, 0x12345678(%rax)");
1079         asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
1080         asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
1081         asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
1082         asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
1083
1084         /* bnd prefix on call, ret, jmp and all jcc */
1085
1086         asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
1087         asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
1088         asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
1089         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1090         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1091         asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
1092         asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
1093
1094         /* sha1rnds4 imm8, xmm2/m128, xmm1 */
1095
1096         asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
1097         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
1098         asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
1099         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
1100         asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
1101         asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
1102         asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
1103         asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
1104         asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
1105         asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
1106         asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
1107         asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
1108         asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
1109         asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
1110         asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
1111         asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
1112         asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
1113         asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
1114         asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
1115         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
1116         asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
1117         asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
1118         asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
1119         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
1120         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
1121         asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
1122
1123         /* sha1nexte xmm2/m128, xmm1 */
1124
1125         asm volatile("sha1nexte %xmm1, %xmm0");
1126         asm volatile("sha1nexte %xmm7, %xmm2");
1127         asm volatile("sha1nexte %xmm8, %xmm0");
1128         asm volatile("sha1nexte %xmm7, %xmm8");
1129         asm volatile("sha1nexte %xmm15, %xmm8");
1130         asm volatile("sha1nexte (%rax), %xmm0");
1131         asm volatile("sha1nexte (%r8), %xmm0");
1132         asm volatile("sha1nexte (0x12345678), %xmm0");
1133         asm volatile("sha1nexte (%rax), %xmm3");
1134         asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
1135         asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
1136         asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
1137         asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
1138         asm volatile("sha1nexte 0x12(%rax), %xmm0");
1139         asm volatile("sha1nexte 0x12(%rbp), %xmm0");
1140         asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
1141         asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
1142         asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
1143         asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
1144         asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
1145         asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
1146         asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
1147         asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
1148         asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
1149         asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
1150         asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
1151
1152         /* sha1msg1 xmm2/m128, xmm1 */
1153
1154         asm volatile("sha1msg1 %xmm1, %xmm0");
1155         asm volatile("sha1msg1 %xmm7, %xmm2");
1156         asm volatile("sha1msg1 %xmm8, %xmm0");
1157         asm volatile("sha1msg1 %xmm7, %xmm8");
1158         asm volatile("sha1msg1 %xmm15, %xmm8");
1159         asm volatile("sha1msg1 (%rax), %xmm0");
1160         asm volatile("sha1msg1 (%r8), %xmm0");
1161         asm volatile("sha1msg1 (0x12345678), %xmm0");
1162         asm volatile("sha1msg1 (%rax), %xmm3");
1163         asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
1164         asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
1165         asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
1166         asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
1167         asm volatile("sha1msg1 0x12(%rax), %xmm0");
1168         asm volatile("sha1msg1 0x12(%rbp), %xmm0");
1169         asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
1170         asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
1171         asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
1172         asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
1173         asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
1174         asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
1175         asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
1176         asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
1177         asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
1178         asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
1179         asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
1180
1181         /* sha1msg2 xmm2/m128, xmm1 */
1182
1183         asm volatile("sha1msg2 %xmm1, %xmm0");
1184         asm volatile("sha1msg2 %xmm7, %xmm2");
1185         asm volatile("sha1msg2 %xmm8, %xmm0");
1186         asm volatile("sha1msg2 %xmm7, %xmm8");
1187         asm volatile("sha1msg2 %xmm15, %xmm8");
1188         asm volatile("sha1msg2 (%rax), %xmm0");
1189         asm volatile("sha1msg2 (%r8), %xmm0");
1190         asm volatile("sha1msg2 (0x12345678), %xmm0");
1191         asm volatile("sha1msg2 (%rax), %xmm3");
1192         asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
1193         asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
1194         asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
1195         asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
1196         asm volatile("sha1msg2 0x12(%rax), %xmm0");
1197         asm volatile("sha1msg2 0x12(%rbp), %xmm0");
1198         asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
1199         asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
1200         asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
1201         asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
1202         asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
1203         asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
1204         asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
1205         asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
1206         asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
1207         asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
1208         asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
1209
1210         /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
1211         /* Note sha256rnds2 has an implicit operand 'xmm0' */
1212
1213         asm volatile("sha256rnds2 %xmm4, %xmm1");
1214         asm volatile("sha256rnds2 %xmm7, %xmm2");
1215         asm volatile("sha256rnds2 %xmm8, %xmm1");
1216         asm volatile("sha256rnds2 %xmm7, %xmm8");
1217         asm volatile("sha256rnds2 %xmm15, %xmm8");
1218         asm volatile("sha256rnds2 (%rax), %xmm1");
1219         asm volatile("sha256rnds2 (%r8), %xmm1");
1220         asm volatile("sha256rnds2 (0x12345678), %xmm1");
1221         asm volatile("sha256rnds2 (%rax), %xmm3");
1222         asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
1223         asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
1224         asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
1225         asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
1226         asm volatile("sha256rnds2 0x12(%rax), %xmm1");
1227         asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
1228         asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
1229         asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
1230         asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
1231         asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
1232         asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
1233         asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
1234         asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
1235         asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
1236         asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
1237         asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
1238         asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
1239
1240         /* sha256msg1 xmm2/m128, xmm1 */
1241
1242         asm volatile("sha256msg1 %xmm1, %xmm0");
1243         asm volatile("sha256msg1 %xmm7, %xmm2");
1244         asm volatile("sha256msg1 %xmm8, %xmm0");
1245         asm volatile("sha256msg1 %xmm7, %xmm8");
1246         asm volatile("sha256msg1 %xmm15, %xmm8");
1247         asm volatile("sha256msg1 (%rax), %xmm0");
1248         asm volatile("sha256msg1 (%r8), %xmm0");
1249         asm volatile("sha256msg1 (0x12345678), %xmm0");
1250         asm volatile("sha256msg1 (%rax), %xmm3");
1251         asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
1252         asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
1253         asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
1254         asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
1255         asm volatile("sha256msg1 0x12(%rax), %xmm0");
1256         asm volatile("sha256msg1 0x12(%rbp), %xmm0");
1257         asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
1258         asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
1259         asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
1260         asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
1261         asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
1262         asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
1263         asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
1264         asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
1265         asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
1266         asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
1267         asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
1268
1269         /* sha256msg2 xmm2/m128, xmm1 */
1270
1271         asm volatile("sha256msg2 %xmm1, %xmm0");
1272         asm volatile("sha256msg2 %xmm7, %xmm2");
1273         asm volatile("sha256msg2 %xmm8, %xmm0");
1274         asm volatile("sha256msg2 %xmm7, %xmm8");
1275         asm volatile("sha256msg2 %xmm15, %xmm8");
1276         asm volatile("sha256msg2 (%rax), %xmm0");
1277         asm volatile("sha256msg2 (%r8), %xmm0");
1278         asm volatile("sha256msg2 (0x12345678), %xmm0");
1279         asm volatile("sha256msg2 (%rax), %xmm3");
1280         asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
1281         asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
1282         asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
1283         asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
1284         asm volatile("sha256msg2 0x12(%rax), %xmm0");
1285         asm volatile("sha256msg2 0x12(%rbp), %xmm0");
1286         asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
1287         asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
1288         asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
1289         asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
1290         asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
1291         asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
1292         asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
1293         asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
1294         asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
1295         asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
1296         asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
1297
1298         /* clflushopt m8 */
1299
1300         asm volatile("clflushopt (%rax)");
1301         asm volatile("clflushopt (%r8)");
1302         asm volatile("clflushopt (0x12345678)");
1303         asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
1304         asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
1305         /* Also check instructions in the same group encoding as clflushopt */
1306         asm volatile("clflush (%rax)");
1307         asm volatile("clflush (%r8)");
1308         asm volatile("sfence");
1309
1310         /* clwb m8 */
1311
1312         asm volatile("clwb (%rax)");
1313         asm volatile("clwb (%r8)");
1314         asm volatile("clwb (0x12345678)");
1315         asm volatile("clwb 0x12345678(%rax,%rcx,8)");
1316         asm volatile("clwb 0x12345678(%r8,%rcx,8)");
1317         /* Also check instructions in the same group encoding as clwb */
1318         asm volatile("xsaveopt (%rax)");
1319         asm volatile("xsaveopt (%r8)");
1320         asm volatile("mfence");
1321
1322         /* xsavec mem */
1323
1324         asm volatile("xsavec (%rax)");
1325         asm volatile("xsavec (%r8)");
1326         asm volatile("xsavec (0x12345678)");
1327         asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
1328         asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
1329
1330         /* xsaves mem */
1331
1332         asm volatile("xsaves (%rax)");
1333         asm volatile("xsaves (%r8)");
1334         asm volatile("xsaves (0x12345678)");
1335         asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
1336         asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
1337
1338         /* xrstors mem */
1339
1340         asm volatile("xrstors (%rax)");
1341         asm volatile("xrstors (%r8)");
1342         asm volatile("xrstors (0x12345678)");
1343         asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
1344         asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
1345
1346         /* ptwrite */
1347
1348         asm volatile("ptwrite (%rax)");
1349         asm volatile("ptwrite (%r8)");
1350         asm volatile("ptwrite (0x12345678)");
1351         asm volatile("ptwrite 0x12345678(%rax,%rcx,8)");
1352         asm volatile("ptwrite 0x12345678(%r8,%rcx,8)");
1353
1354         asm volatile("ptwritel (%rax)");
1355         asm volatile("ptwritel (%r8)");
1356         asm volatile("ptwritel (0x12345678)");
1357         asm volatile("ptwritel 0x12345678(%rax,%rcx,8)");
1358         asm volatile("ptwritel 0x12345678(%r8,%rcx,8)");
1359
1360         asm volatile("ptwriteq (%rax)");
1361         asm volatile("ptwriteq (%r8)");
1362         asm volatile("ptwriteq (0x12345678)");
1363         asm volatile("ptwriteq 0x12345678(%rax,%rcx,8)");
1364         asm volatile("ptwriteq 0x12345678(%r8,%rcx,8)");
1365
1366 #else  /* #ifdef __x86_64__ */
1367
1368         /* bound r32, mem (same op code as EVEX prefix) */
1369
1370         asm volatile("bound %eax, 0x12345678(%ecx)");
1371         asm volatile("bound %ecx, 0x12345678(%eax)");
1372         asm volatile("bound %edx, 0x12345678(%eax)");
1373         asm volatile("bound %ebx, 0x12345678(%eax)");
1374         asm volatile("bound %esp, 0x12345678(%eax)");
1375         asm volatile("bound %ebp, 0x12345678(%eax)");
1376         asm volatile("bound %esi, 0x12345678(%eax)");
1377         asm volatile("bound %edi, 0x12345678(%eax)");
1378         asm volatile("bound %ecx, (%eax)");
1379         asm volatile("bound %eax, (0x12345678)");
1380         asm volatile("bound %edx, (%ecx,%eax,1)");
1381         asm volatile("bound %edx, 0x12345678(,%eax,1)");
1382         asm volatile("bound %edx, (%eax,%ecx,1)");
1383         asm volatile("bound %edx, (%eax,%ecx,8)");
1384         asm volatile("bound %edx, 0x12(%eax)");
1385         asm volatile("bound %edx, 0x12(%ebp)");
1386         asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
1387         asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
1388         asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
1389         asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
1390         asm volatile("bound %edx, 0x12345678(%eax)");
1391         asm volatile("bound %edx, 0x12345678(%ebp)");
1392         asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
1393         asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
1394         asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
1395         asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
1396
1397         /* bound r16, mem (same op code as EVEX prefix) */
1398
1399         asm volatile("bound %ax, 0x12345678(%ecx)");
1400         asm volatile("bound %cx, 0x12345678(%eax)");
1401         asm volatile("bound %dx, 0x12345678(%eax)");
1402         asm volatile("bound %bx, 0x12345678(%eax)");
1403         asm volatile("bound %sp, 0x12345678(%eax)");
1404         asm volatile("bound %bp, 0x12345678(%eax)");
1405         asm volatile("bound %si, 0x12345678(%eax)");
1406         asm volatile("bound %di, 0x12345678(%eax)");
1407         asm volatile("bound %cx, (%eax)");
1408         asm volatile("bound %ax, (0x12345678)");
1409         asm volatile("bound %dx, (%ecx,%eax,1)");
1410         asm volatile("bound %dx, 0x12345678(,%eax,1)");
1411         asm volatile("bound %dx, (%eax,%ecx,1)");
1412         asm volatile("bound %dx, (%eax,%ecx,8)");
1413         asm volatile("bound %dx, 0x12(%eax)");
1414         asm volatile("bound %dx, 0x12(%ebp)");
1415         asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
1416         asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
1417         asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
1418         asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
1419         asm volatile("bound %dx, 0x12345678(%eax)");
1420         asm volatile("bound %dx, 0x12345678(%ebp)");
1421         asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
1422         asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
1423         asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
1424         asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
1425
1426         /* AVX-512: Instructions with the same op codes as Mask Instructions  */
1427
1428         asm volatile("cmovno %eax,%ebx");
1429         asm volatile("cmovno 0x12345678(%eax),%ecx");
1430         asm volatile("cmovno 0x12345678(%eax),%cx");
1431
1432         asm volatile("cmove  %eax,%ebx");
1433         asm volatile("cmove 0x12345678(%eax),%ecx");
1434         asm volatile("cmove 0x12345678(%eax),%cx");
1435
1436         asm volatile("seto    0x12345678(%eax)");
1437         asm volatile("setno   0x12345678(%eax)");
1438         asm volatile("setb    0x12345678(%eax)");
1439         asm volatile("setc    0x12345678(%eax)");
1440         asm volatile("setnae  0x12345678(%eax)");
1441         asm volatile("setae   0x12345678(%eax)");
1442         asm volatile("setnb   0x12345678(%eax)");
1443         asm volatile("setnc   0x12345678(%eax)");
1444         asm volatile("sets    0x12345678(%eax)");
1445         asm volatile("setns   0x12345678(%eax)");
1446
1447         /* AVX-512: Mask Instructions */
1448
1449         asm volatile("kandw  %k7,%k6,%k5");
1450         asm volatile("kandq  %k7,%k6,%k5");
1451         asm volatile("kandb  %k7,%k6,%k5");
1452         asm volatile("kandd  %k7,%k6,%k5");
1453
1454         asm volatile("kandnw  %k7,%k6,%k5");
1455         asm volatile("kandnq  %k7,%k6,%k5");
1456         asm volatile("kandnb  %k7,%k6,%k5");
1457         asm volatile("kandnd  %k7,%k6,%k5");
1458
1459         asm volatile("knotw  %k7,%k6");
1460         asm volatile("knotq  %k7,%k6");
1461         asm volatile("knotb  %k7,%k6");
1462         asm volatile("knotd  %k7,%k6");
1463
1464         asm volatile("korw  %k7,%k6,%k5");
1465         asm volatile("korq  %k7,%k6,%k5");
1466         asm volatile("korb  %k7,%k6,%k5");
1467         asm volatile("kord  %k7,%k6,%k5");
1468
1469         asm volatile("kxnorw  %k7,%k6,%k5");
1470         asm volatile("kxnorq  %k7,%k6,%k5");
1471         asm volatile("kxnorb  %k7,%k6,%k5");
1472         asm volatile("kxnord  %k7,%k6,%k5");
1473
1474         asm volatile("kxorw  %k7,%k6,%k5");
1475         asm volatile("kxorq  %k7,%k6,%k5");
1476         asm volatile("kxorb  %k7,%k6,%k5");
1477         asm volatile("kxord  %k7,%k6,%k5");
1478
1479         asm volatile("kaddw  %k7,%k6,%k5");
1480         asm volatile("kaddq  %k7,%k6,%k5");
1481         asm volatile("kaddb  %k7,%k6,%k5");
1482         asm volatile("kaddd  %k7,%k6,%k5");
1483
1484         asm volatile("kunpckbw %k7,%k6,%k5");
1485         asm volatile("kunpckwd %k7,%k6,%k5");
1486         asm volatile("kunpckdq %k7,%k6,%k5");
1487
1488         asm volatile("kmovw  %k6,%k5");
1489         asm volatile("kmovw  (%ecx),%k5");
1490         asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
1491         asm volatile("kmovw  %k5,(%ecx)");
1492         asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
1493         asm volatile("kmovw  %eax,%k5");
1494         asm volatile("kmovw  %ebp,%k5");
1495         asm volatile("kmovw  %k5,%eax");
1496         asm volatile("kmovw  %k5,%ebp");
1497
1498         asm volatile("kmovq  %k6,%k5");
1499         asm volatile("kmovq  (%ecx),%k5");
1500         asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
1501         asm volatile("kmovq  %k5,(%ecx)");
1502         asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
1503
1504         asm volatile("kmovb  %k6,%k5");
1505         asm volatile("kmovb  (%ecx),%k5");
1506         asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
1507         asm volatile("kmovb  %k5,(%ecx)");
1508         asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
1509         asm volatile("kmovb  %eax,%k5");
1510         asm volatile("kmovb  %ebp,%k5");
1511         asm volatile("kmovb  %k5,%eax");
1512         asm volatile("kmovb  %k5,%ebp");
1513
1514         asm volatile("kmovd  %k6,%k5");
1515         asm volatile("kmovd  (%ecx),%k5");
1516         asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
1517         asm volatile("kmovd  %k5,(%ecx)");
1518         asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
1519         asm volatile("kmovd  %eax,%k5");
1520         asm volatile("kmovd  %ebp,%k5");
1521         asm volatile("kmovd  %k5,%eax");
1522         asm volatile("kmovd  %k5,%ebp");
1523
1524         asm volatile("kortestw %k6,%k5");
1525         asm volatile("kortestq %k6,%k5");
1526         asm volatile("kortestb %k6,%k5");
1527         asm volatile("kortestd %k6,%k5");
1528
1529         asm volatile("ktestw %k6,%k5");
1530         asm volatile("ktestq %k6,%k5");
1531         asm volatile("ktestb %k6,%k5");
1532         asm volatile("ktestd %k6,%k5");
1533
1534         asm volatile("kshiftrw $0x12,%k6,%k5");
1535         asm volatile("kshiftrq $0x5b,%k6,%k5");
1536         asm volatile("kshiftlw $0x12,%k6,%k5");
1537         asm volatile("kshiftlq $0x5b,%k6,%k5");
1538
1539         /* AVX-512: Op code 0f 5b */
1540         asm volatile("vcvtdq2ps %xmm5,%xmm6");
1541         asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
1542         asm volatile("vcvtps2dq %xmm5,%xmm6");
1543         asm volatile("vcvttps2dq %xmm5,%xmm6");
1544
1545         /* AVX-512: Op code 0f 6f */
1546
1547         asm volatile("movq   %mm0,%mm4");
1548         asm volatile("vmovdqa %ymm4,%ymm6");
1549         asm volatile("vmovdqa32 %zmm5,%zmm6");
1550         asm volatile("vmovdqa64 %zmm5,%zmm6");
1551         asm volatile("vmovdqu %ymm4,%ymm6");
1552         asm volatile("vmovdqu32 %zmm5,%zmm6");
1553         asm volatile("vmovdqu64 %zmm5,%zmm6");
1554         asm volatile("vmovdqu8 %zmm5,%zmm6");
1555         asm volatile("vmovdqu16 %zmm5,%zmm6");
1556
1557         /* AVX-512: Op code 0f 78 */
1558
1559         asm volatile("vmread %eax,%ebx");
1560         asm volatile("vcvttps2udq %zmm5,%zmm6");
1561         asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
1562         asm volatile("vcvttsd2usi %xmm6,%eax");
1563         asm volatile("vcvttss2usi %xmm6,%eax");
1564         asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
1565         asm volatile("vcvttpd2uqq %zmm5,%zmm6");
1566
1567         /* AVX-512: Op code 0f 79 */
1568
1569         asm volatile("vmwrite %eax,%ebx");
1570         asm volatile("vcvtps2udq %zmm5,%zmm6");
1571         asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
1572         asm volatile("vcvtsd2usi %xmm6,%eax");
1573         asm volatile("vcvtss2usi %xmm6,%eax");
1574         asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
1575         asm volatile("vcvtpd2uqq %zmm5,%zmm6");
1576
1577         /* AVX-512: Op code 0f 7a */
1578
1579         asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
1580         asm volatile("vcvtuqq2pd %zmm5,%zmm6");
1581         asm volatile("vcvtudq2ps %zmm5,%zmm6");
1582         asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
1583         asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
1584         asm volatile("vcvttpd2qq %zmm5,%zmm6");
1585
1586         /* AVX-512: Op code 0f 7b */
1587
1588         asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
1589         asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
1590         asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
1591         asm volatile("vcvtpd2qq %zmm5,%zmm6");
1592
1593         /* AVX-512: Op code 0f 7f */
1594
1595         asm volatile("movq.s  %mm0,%mm4");
1596         asm volatile("vmovdqa.s %ymm5,%ymm6");
1597         asm volatile("vmovdqa32.s %zmm5,%zmm6");
1598         asm volatile("vmovdqa64.s %zmm5,%zmm6");
1599         asm volatile("vmovdqu.s %ymm5,%ymm6");
1600         asm volatile("vmovdqu32.s %zmm5,%zmm6");
1601         asm volatile("vmovdqu64.s %zmm5,%zmm6");
1602         asm volatile("vmovdqu8.s %zmm5,%zmm6");
1603         asm volatile("vmovdqu16.s %zmm5,%zmm6");
1604
1605         /* AVX-512: Op code 0f db */
1606
1607         asm volatile("pand  %mm1,%mm2");
1608         asm volatile("pand  %xmm1,%xmm2");
1609         asm volatile("vpand  %ymm4,%ymm6,%ymm2");
1610         asm volatile("vpandd %zmm4,%zmm5,%zmm6");
1611         asm volatile("vpandq %zmm4,%zmm5,%zmm6");
1612
1613         /* AVX-512: Op code 0f df */
1614
1615         asm volatile("pandn  %mm1,%mm2");
1616         asm volatile("pandn  %xmm1,%xmm2");
1617         asm volatile("vpandn %ymm4,%ymm6,%ymm2");
1618         asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
1619         asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
1620
1621         /* AVX-512: Op code 0f e6 */
1622
1623         asm volatile("vcvttpd2dq %xmm1,%xmm2");
1624         asm volatile("vcvtdq2pd %xmm5,%xmm6");
1625         asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
1626         asm volatile("vcvtqq2pd %zmm5,%zmm6");
1627         asm volatile("vcvtpd2dq %xmm1,%xmm2");
1628
1629         /* AVX-512: Op code 0f eb */
1630
1631         asm volatile("por   %mm4,%mm6");
1632         asm volatile("vpor   %ymm4,%ymm6,%ymm2");
1633         asm volatile("vpord  %zmm4,%zmm5,%zmm6");
1634         asm volatile("vporq  %zmm4,%zmm5,%zmm6");
1635
1636         /* AVX-512: Op code 0f ef */
1637
1638         asm volatile("pxor   %mm4,%mm6");
1639         asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
1640         asm volatile("vpxord %zmm4,%zmm5,%zmm6");
1641         asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
1642
1643         /* AVX-512: Op code 0f 38 10 */
1644
1645         asm volatile("pblendvb %xmm1,%xmm0");
1646         asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
1647         asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
1648
1649         /* AVX-512: Op code 0f 38 11 */
1650
1651         asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
1652         asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
1653
1654         /* AVX-512: Op code 0f 38 12 */
1655
1656         asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
1657         asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
1658
1659         /* AVX-512: Op code 0f 38 13 */
1660
1661         asm volatile("vcvtph2ps %xmm3,%ymm5");
1662         asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
1663         asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
1664
1665         /* AVX-512: Op code 0f 38 14 */
1666
1667         asm volatile("blendvps %xmm1,%xmm0");
1668         asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
1669         asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
1670         asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
1671
1672         /* AVX-512: Op code 0f 38 15 */
1673
1674         asm volatile("blendvpd %xmm1,%xmm0");
1675         asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
1676         asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
1677         asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
1678
1679         /* AVX-512: Op code 0f 38 16 */
1680
1681         asm volatile("vpermps %ymm4,%ymm6,%ymm2");
1682         asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
1683         asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
1684
1685         /* AVX-512: Op code 0f 38 19 */
1686
1687         asm volatile("vbroadcastsd %xmm4,%ymm6");
1688         asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
1689
1690         /* AVX-512: Op code 0f 38 1a */
1691
1692         asm volatile("vbroadcastf128 (%ecx),%ymm4");
1693         asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
1694         asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
1695
1696         /* AVX-512: Op code 0f 38 1b */
1697
1698         asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
1699         asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
1700
1701         /* AVX-512: Op code 0f 38 1f */
1702
1703         asm volatile("vpabsq %zmm4,%zmm6");
1704
1705         /* AVX-512: Op code 0f 38 20 */
1706
1707         asm volatile("vpmovsxbw %xmm4,%xmm5");
1708         asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
1709
1710         /* AVX-512: Op code 0f 38 21 */
1711
1712         asm volatile("vpmovsxbd %xmm4,%ymm6");
1713         asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
1714
1715         /* AVX-512: Op code 0f 38 22 */
1716
1717         asm volatile("vpmovsxbq %xmm4,%ymm4");
1718         asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
1719
1720         /* AVX-512: Op code 0f 38 23 */
1721
1722         asm volatile("vpmovsxwd %xmm4,%ymm4");
1723         asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
1724
1725         /* AVX-512: Op code 0f 38 24 */
1726
1727         asm volatile("vpmovsxwq %xmm4,%ymm6");
1728         asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
1729
1730         /* AVX-512: Op code 0f 38 25 */
1731
1732         asm volatile("vpmovsxdq %xmm4,%ymm4");
1733         asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
1734
1735         /* AVX-512: Op code 0f 38 26 */
1736
1737         asm volatile("vptestmb %zmm5,%zmm6,%k5");
1738         asm volatile("vptestmw %zmm5,%zmm6,%k5");
1739         asm volatile("vptestnmb %zmm4,%zmm5,%k5");
1740         asm volatile("vptestnmw %zmm4,%zmm5,%k5");
1741
1742         /* AVX-512: Op code 0f 38 27 */
1743
1744         asm volatile("vptestmd %zmm5,%zmm6,%k5");
1745         asm volatile("vptestmq %zmm5,%zmm6,%k5");
1746         asm volatile("vptestnmd %zmm4,%zmm5,%k5");
1747         asm volatile("vptestnmq %zmm4,%zmm5,%k5");
1748
1749         /* AVX-512: Op code 0f 38 28 */
1750
1751         asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
1752         asm volatile("vpmovm2b %k5,%zmm6");
1753         asm volatile("vpmovm2w %k5,%zmm6");
1754
1755         /* AVX-512: Op code 0f 38 29 */
1756
1757         asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
1758         asm volatile("vpmovb2m %zmm6,%k5");
1759         asm volatile("vpmovw2m %zmm6,%k5");
1760
1761         /* AVX-512: Op code 0f 38 2a */
1762
1763         asm volatile("vmovntdqa (%ecx),%ymm4");
1764         asm volatile("vpbroadcastmb2q %k6,%zmm1");
1765
1766         /* AVX-512: Op code 0f 38 2c */
1767
1768         asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
1769         asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
1770         asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
1771
1772         /* AVX-512: Op code 0f 38 2d */
1773
1774         asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
1775         asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
1776         asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
1777
1778         /* AVX-512: Op code 0f 38 30 */
1779
1780         asm volatile("vpmovzxbw %xmm4,%ymm4");
1781         asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
1782
1783         /* AVX-512: Op code 0f 38 31 */
1784
1785         asm volatile("vpmovzxbd %xmm4,%ymm6");
1786         asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
1787
1788         /* AVX-512: Op code 0f 38 32 */
1789
1790         asm volatile("vpmovzxbq %xmm4,%ymm4");
1791         asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
1792
1793         /* AVX-512: Op code 0f 38 33 */
1794
1795         asm volatile("vpmovzxwd %xmm4,%ymm4");
1796         asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
1797
1798         /* AVX-512: Op code 0f 38 34 */
1799
1800         asm volatile("vpmovzxwq %xmm4,%ymm6");
1801         asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
1802
1803         /* AVX-512: Op code 0f 38 35 */
1804
1805         asm volatile("vpmovzxdq %xmm4,%ymm4");
1806         asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
1807
1808         /* AVX-512: Op code 0f 38 36 */
1809
1810         asm volatile("vpermd %ymm4,%ymm6,%ymm2");
1811         asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
1812         asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
1813
1814         /* AVX-512: Op code 0f 38 38 */
1815
1816         asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
1817         asm volatile("vpmovm2d %k5,%zmm6");
1818         asm volatile("vpmovm2q %k5,%zmm6");
1819
1820         /* AVX-512: Op code 0f 38 39 */
1821
1822         asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
1823         asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
1824         asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
1825         asm volatile("vpmovd2m %zmm6,%k5");
1826         asm volatile("vpmovq2m %zmm6,%k5");
1827
1828         /* AVX-512: Op code 0f 38 3a */
1829
1830         asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
1831         asm volatile("vpbroadcastmw2d %k6,%zmm6");
1832
1833         /* AVX-512: Op code 0f 38 3b */
1834
1835         asm volatile("vpminud %ymm4,%ymm6,%ymm2");
1836         asm volatile("vpminud %zmm4,%zmm5,%zmm6");
1837         asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
1838
1839         /* AVX-512: Op code 0f 38 3d */
1840
1841         asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
1842         asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
1843         asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
1844
1845         /* AVX-512: Op code 0f 38 3f */
1846
1847         asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
1848         asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
1849         asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
1850
1851         /* AVX-512: Op code 0f 38 40 */
1852
1853         asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
1854         asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
1855         asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
1856
1857         /* AVX-512: Op code 0f 38 42 */
1858
1859         asm volatile("vgetexpps %zmm5,%zmm6");
1860         asm volatile("vgetexppd %zmm5,%zmm6");
1861
1862         /* AVX-512: Op code 0f 38 43 */
1863
1864         asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
1865         asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
1866
1867         /* AVX-512: Op code 0f 38 44 */
1868
1869         asm volatile("vplzcntd %zmm5,%zmm6");
1870         asm volatile("vplzcntq %zmm5,%zmm6");
1871
1872         /* AVX-512: Op code 0f 38 46 */
1873
1874         asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
1875         asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
1876         asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
1877
1878         /* AVX-512: Op code 0f 38 4c */
1879
1880         asm volatile("vrcp14ps %zmm5,%zmm6");
1881         asm volatile("vrcp14pd %zmm5,%zmm6");
1882
1883         /* AVX-512: Op code 0f 38 4d */
1884
1885         asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
1886         asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
1887
1888         /* AVX-512: Op code 0f 38 4e */
1889
1890         asm volatile("vrsqrt14ps %zmm5,%zmm6");
1891         asm volatile("vrsqrt14pd %zmm5,%zmm6");
1892
1893         /* AVX-512: Op code 0f 38 4f */
1894
1895         asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
1896         asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
1897
1898         /* AVX-512: Op code 0f 38 59 */
1899
1900         asm volatile("vpbroadcastq %xmm4,%xmm6");
1901         asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
1902
1903         /* AVX-512: Op code 0f 38 5a */
1904
1905         asm volatile("vbroadcasti128 (%ecx),%ymm4");
1906         asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
1907         asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
1908
1909         /* AVX-512: Op code 0f 38 5b */
1910
1911         asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
1912         asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
1913
1914         /* AVX-512: Op code 0f 38 64 */
1915
1916         asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
1917         asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
1918
1919         /* AVX-512: Op code 0f 38 65 */
1920
1921         asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
1922         asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
1923
1924         /* AVX-512: Op code 0f 38 66 */
1925
1926         asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
1927         asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
1928
1929         /* AVX-512: Op code 0f 38 75 */
1930
1931         asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
1932         asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
1933
1934         /* AVX-512: Op code 0f 38 76 */
1935
1936         asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
1937         asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
1938
1939         /* AVX-512: Op code 0f 38 77 */
1940
1941         asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
1942         asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
1943
1944         /* AVX-512: Op code 0f 38 7a */
1945
1946         asm volatile("vpbroadcastb %eax,%xmm3");
1947
1948         /* AVX-512: Op code 0f 38 7b */
1949
1950         asm volatile("vpbroadcastw %eax,%xmm3");
1951
1952         /* AVX-512: Op code 0f 38 7c */
1953
1954         asm volatile("vpbroadcastd %eax,%xmm3");
1955
1956         /* AVX-512: Op code 0f 38 7d */
1957
1958         asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
1959         asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
1960
1961         /* AVX-512: Op code 0f 38 7e */
1962
1963         asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
1964         asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
1965
1966         /* AVX-512: Op code 0f 38 7f */
1967
1968         asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
1969         asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
1970
1971         /* AVX-512: Op code 0f 38 83 */
1972
1973         asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
1974
1975         /* AVX-512: Op code 0f 38 88 */
1976
1977         asm volatile("vexpandps (%ecx),%zmm6");
1978         asm volatile("vexpandpd (%ecx),%zmm6");
1979
1980         /* AVX-512: Op code 0f 38 89 */
1981
1982         asm volatile("vpexpandd (%ecx),%zmm6");
1983         asm volatile("vpexpandq (%ecx),%zmm6");
1984
1985         /* AVX-512: Op code 0f 38 8a */
1986
1987         asm volatile("vcompressps %zmm6,(%ecx)");
1988         asm volatile("vcompresspd %zmm6,(%ecx)");
1989
1990         /* AVX-512: Op code 0f 38 8b */
1991
1992         asm volatile("vpcompressd %zmm6,(%ecx)");
1993         asm volatile("vpcompressq %zmm6,(%ecx)");
1994
1995         /* AVX-512: Op code 0f 38 8d */
1996
1997         asm volatile("vpermb %zmm4,%zmm5,%zmm6");
1998         asm volatile("vpermw %zmm4,%zmm5,%zmm6");
1999
2000         /* AVX-512: Op code 0f 38 90 */
2001
2002         asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2003         asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
2004         asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2005         asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
2006
2007         /* AVX-512: Op code 0f 38 91 */
2008
2009         asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2010         asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
2011         asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
2012         asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
2013
2014         /* AVX-512: Op code 0f 38 a0 */
2015
2016         asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2017         asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2018
2019         /* AVX-512: Op code 0f 38 a1 */
2020
2021         asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2022         asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
2023
2024         /* AVX-512: Op code 0f 38 a2 */
2025
2026         asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2027         asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2028
2029         /* AVX-512: Op code 0f 38 a3 */
2030
2031         asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2032         asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2033
2034         /* AVX-512: Op code 0f 38 b4 */
2035
2036         asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
2037
2038         /* AVX-512: Op code 0f 38 b5 */
2039
2040         asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
2041
2042         /* AVX-512: Op code 0f 38 c4 */
2043
2044         asm volatile("vpconflictd %zmm5,%zmm6");
2045         asm volatile("vpconflictq %zmm5,%zmm6");
2046
2047         /* AVX-512: Op code 0f 38 c8 */
2048
2049         asm volatile("vexp2ps %zmm6,%zmm7");
2050         asm volatile("vexp2pd %zmm6,%zmm7");
2051
2052         /* AVX-512: Op code 0f 38 ca */
2053
2054         asm volatile("vrcp28ps %zmm6,%zmm7");
2055         asm volatile("vrcp28pd %zmm6,%zmm7");
2056
2057         /* AVX-512: Op code 0f 38 cb */
2058
2059         asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
2060         asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
2061
2062         /* AVX-512: Op code 0f 38 cc */
2063
2064         asm volatile("vrsqrt28ps %zmm6,%zmm7");
2065         asm volatile("vrsqrt28pd %zmm6,%zmm7");
2066
2067         /* AVX-512: Op code 0f 38 cd */
2068
2069         asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
2070         asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
2071
2072         /* AVX-512: Op code 0f 3a 03 */
2073
2074         asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
2075         asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
2076
2077         /* AVX-512: Op code 0f 3a 08 */
2078
2079         asm volatile("vroundps $0x5,%ymm6,%ymm2");
2080         asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
2081
2082         /* AVX-512: Op code 0f 3a 09 */
2083
2084         asm volatile("vroundpd $0x5,%ymm6,%ymm2");
2085         asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
2086
2087         /* AVX-512: Op code 0f 3a 0a */
2088
2089         asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
2090         asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2091
2092         /* AVX-512: Op code 0f 3a 0b */
2093
2094         asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
2095         asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2096
2097         /* AVX-512: Op code 0f 3a 18 */
2098
2099         asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
2100         asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2101         asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2102
2103         /* AVX-512: Op code 0f 3a 19 */
2104
2105         asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
2106         asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
2107         asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
2108
2109         /* AVX-512: Op code 0f 3a 1a */
2110
2111         asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2112         asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2113
2114         /* AVX-512: Op code 0f 3a 1b */
2115
2116         asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
2117         asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
2118
2119         /* AVX-512: Op code 0f 3a 1e */
2120
2121         asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
2122         asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
2123
2124         /* AVX-512: Op code 0f 3a 1f */
2125
2126         asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
2127         asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
2128
2129         /* AVX-512: Op code 0f 3a 23 */
2130
2131         asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
2132         asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
2133
2134         /* AVX-512: Op code 0f 3a 25 */
2135
2136         asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
2137         asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
2138
2139         /* AVX-512: Op code 0f 3a 26 */
2140
2141         asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
2142         asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
2143
2144         /* AVX-512: Op code 0f 3a 27 */
2145
2146         asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2147         asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2148
2149         /* AVX-512: Op code 0f 3a 38 */
2150
2151         asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
2152         asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2153         asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2154
2155         /* AVX-512: Op code 0f 3a 39 */
2156
2157         asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
2158         asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
2159         asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
2160
2161         /* AVX-512: Op code 0f 3a 3a */
2162
2163         asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2164         asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2165
2166         /* AVX-512: Op code 0f 3a 3b */
2167
2168         asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
2169         asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
2170
2171         /* AVX-512: Op code 0f 3a 3e */
2172
2173         asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
2174         asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
2175
2176         /* AVX-512: Op code 0f 3a 3f */
2177
2178         asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
2179         asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
2180
2181         /* AVX-512: Op code 0f 3a 42 */
2182
2183         asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
2184         asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
2185
2186         /* AVX-512: Op code 0f 3a 43 */
2187
2188         asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
2189         asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
2190
2191         /* AVX-512: Op code 0f 3a 50 */
2192
2193         asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
2194         asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
2195
2196         /* AVX-512: Op code 0f 3a 51 */
2197
2198         asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
2199         asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
2200
2201         /* AVX-512: Op code 0f 3a 54 */
2202
2203         asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
2204         asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
2205
2206         /* AVX-512: Op code 0f 3a 55 */
2207
2208         asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2209         asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2210
2211         /* AVX-512: Op code 0f 3a 56 */
2212
2213         asm volatile("vreduceps $0x12,%zmm6,%zmm7");
2214         asm volatile("vreducepd $0x12,%zmm6,%zmm7");
2215
2216         /* AVX-512: Op code 0f 3a 57 */
2217
2218         asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
2219         asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
2220
2221         /* AVX-512: Op code 0f 3a 66 */
2222
2223         asm volatile("vfpclassps $0x12,%zmm7,%k5");
2224         asm volatile("vfpclasspd $0x12,%zmm7,%k5");
2225
2226         /* AVX-512: Op code 0f 3a 67 */
2227
2228         asm volatile("vfpclassss $0x12,%xmm7,%k5");
2229         asm volatile("vfpclasssd $0x12,%xmm7,%k5");
2230
2231         /* AVX-512: Op code 0f 72 (Grp13) */
2232
2233         asm volatile("vprord $0x12,%zmm5,%zmm6");
2234         asm volatile("vprorq $0x12,%zmm5,%zmm6");
2235         asm volatile("vprold $0x12,%zmm5,%zmm6");
2236         asm volatile("vprolq $0x12,%zmm5,%zmm6");
2237         asm volatile("psrad  $0x2,%mm6");
2238         asm volatile("vpsrad $0x5,%ymm6,%ymm2");
2239         asm volatile("vpsrad $0x5,%zmm6,%zmm2");
2240         asm volatile("vpsraq $0x5,%zmm6,%zmm2");
2241
2242         /* AVX-512: Op code 0f 38 c6 (Grp18) */
2243
2244         asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
2245         asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
2246         asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
2247         asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
2248         asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
2249         asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
2250         asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
2251         asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
2252
2253         /* AVX-512: Op code 0f 38 c7 (Grp19) */
2254
2255         asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
2256         asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
2257         asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
2258         asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
2259         asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
2260         asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
2261         asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
2262         asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
2263
2264         /* AVX-512: Examples */
2265
2266         asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
2267         asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
2268         asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
2269         asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
2270         asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
2271         asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
2272         asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
2273         asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
2274         asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
2275         asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
2276         asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
2277         asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
2278         asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
2279         asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
2280         asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
2281         asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
2282
2283         /* bndmk m32, bnd */
2284
2285         asm volatile("bndmk (%eax), %bnd0");
2286         asm volatile("bndmk (0x12345678), %bnd0");
2287         asm volatile("bndmk (%eax), %bnd3");
2288         asm volatile("bndmk (%ecx,%eax,1), %bnd0");
2289         asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
2290         asm volatile("bndmk (%eax,%ecx,1), %bnd0");
2291         asm volatile("bndmk (%eax,%ecx,8), %bnd0");
2292         asm volatile("bndmk 0x12(%eax), %bnd0");
2293         asm volatile("bndmk 0x12(%ebp), %bnd0");
2294         asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
2295         asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
2296         asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
2297         asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
2298         asm volatile("bndmk 0x12345678(%eax), %bnd0");
2299         asm volatile("bndmk 0x12345678(%ebp), %bnd0");
2300         asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
2301         asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
2302         asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
2303         asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
2304
2305         /* bndcl r/m32, bnd */
2306
2307         asm volatile("bndcl (%eax), %bnd0");
2308         asm volatile("bndcl (0x12345678), %bnd0");
2309         asm volatile("bndcl (%eax), %bnd3");
2310         asm volatile("bndcl (%ecx,%eax,1), %bnd0");
2311         asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
2312         asm volatile("bndcl (%eax,%ecx,1), %bnd0");
2313         asm volatile("bndcl (%eax,%ecx,8), %bnd0");
2314         asm volatile("bndcl 0x12(%eax), %bnd0");
2315         asm volatile("bndcl 0x12(%ebp), %bnd0");
2316         asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
2317         asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
2318         asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
2319         asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
2320         asm volatile("bndcl 0x12345678(%eax), %bnd0");
2321         asm volatile("bndcl 0x12345678(%ebp), %bnd0");
2322         asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
2323         asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
2324         asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
2325         asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
2326         asm volatile("bndcl %eax, %bnd0");
2327
2328         /* bndcu r/m32, bnd */
2329
2330         asm volatile("bndcu (%eax), %bnd0");
2331         asm volatile("bndcu (0x12345678), %bnd0");
2332         asm volatile("bndcu (%eax), %bnd3");
2333         asm volatile("bndcu (%ecx,%eax,1), %bnd0");
2334         asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
2335         asm volatile("bndcu (%eax,%ecx,1), %bnd0");
2336         asm volatile("bndcu (%eax,%ecx,8), %bnd0");
2337         asm volatile("bndcu 0x12(%eax), %bnd0");
2338         asm volatile("bndcu 0x12(%ebp), %bnd0");
2339         asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
2340         asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
2341         asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
2342         asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
2343         asm volatile("bndcu 0x12345678(%eax), %bnd0");
2344         asm volatile("bndcu 0x12345678(%ebp), %bnd0");
2345         asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
2346         asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
2347         asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
2348         asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
2349         asm volatile("bndcu %eax, %bnd0");
2350
2351         /* bndcn r/m32, bnd */
2352
2353         asm volatile("bndcn (%eax), %bnd0");
2354         asm volatile("bndcn (0x12345678), %bnd0");
2355         asm volatile("bndcn (%eax), %bnd3");
2356         asm volatile("bndcn (%ecx,%eax,1), %bnd0");
2357         asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
2358         asm volatile("bndcn (%eax,%ecx,1), %bnd0");
2359         asm volatile("bndcn (%eax,%ecx,8), %bnd0");
2360         asm volatile("bndcn 0x12(%eax), %bnd0");
2361         asm volatile("bndcn 0x12(%ebp), %bnd0");
2362         asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
2363         asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
2364         asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
2365         asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
2366         asm volatile("bndcn 0x12345678(%eax), %bnd0");
2367         asm volatile("bndcn 0x12345678(%ebp), %bnd0");
2368         asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
2369         asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
2370         asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
2371         asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
2372         asm volatile("bndcn %eax, %bnd0");
2373
2374         /* bndmov m64, bnd */
2375
2376         asm volatile("bndmov (%eax), %bnd0");
2377         asm volatile("bndmov (0x12345678), %bnd0");
2378         asm volatile("bndmov (%eax), %bnd3");
2379         asm volatile("bndmov (%ecx,%eax,1), %bnd0");
2380         asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
2381         asm volatile("bndmov (%eax,%ecx,1), %bnd0");
2382         asm volatile("bndmov (%eax,%ecx,8), %bnd0");
2383         asm volatile("bndmov 0x12(%eax), %bnd0");
2384         asm volatile("bndmov 0x12(%ebp), %bnd0");
2385         asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
2386         asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
2387         asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
2388         asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
2389         asm volatile("bndmov 0x12345678(%eax), %bnd0");
2390         asm volatile("bndmov 0x12345678(%ebp), %bnd0");
2391         asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
2392         asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
2393         asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
2394         asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
2395
2396         /* bndmov bnd, m64 */
2397
2398         asm volatile("bndmov %bnd0, (%eax)");
2399         asm volatile("bndmov %bnd0, (0x12345678)");
2400         asm volatile("bndmov %bnd3, (%eax)");
2401         asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
2402         asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
2403         asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
2404         asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
2405         asm volatile("bndmov %bnd0, 0x12(%eax)");
2406         asm volatile("bndmov %bnd0, 0x12(%ebp)");
2407         asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
2408         asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
2409         asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
2410         asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
2411         asm volatile("bndmov %bnd0, 0x12345678(%eax)");
2412         asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
2413         asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
2414         asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
2415         asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
2416         asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
2417
2418         /* bndmov bnd2, bnd1 */
2419
2420         asm volatile("bndmov %bnd0, %bnd1");
2421         asm volatile("bndmov %bnd1, %bnd0");
2422
2423         /* bndldx mib, bnd */
2424
2425         asm volatile("bndldx (%eax), %bnd0");
2426         asm volatile("bndldx (0x12345678), %bnd0");
2427         asm volatile("bndldx (%eax), %bnd3");
2428         asm volatile("bndldx (%ecx,%eax,1), %bnd0");
2429         asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
2430         asm volatile("bndldx (%eax,%ecx,1), %bnd0");
2431         asm volatile("bndldx 0x12(%eax), %bnd0");
2432         asm volatile("bndldx 0x12(%ebp), %bnd0");
2433         asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
2434         asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
2435         asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
2436         asm volatile("bndldx 0x12345678(%eax), %bnd0");
2437         asm volatile("bndldx 0x12345678(%ebp), %bnd0");
2438         asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
2439         asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
2440         asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
2441
2442         /* bndstx bnd, mib */
2443
2444         asm volatile("bndstx %bnd0, (%eax)");
2445         asm volatile("bndstx %bnd0, (0x12345678)");
2446         asm volatile("bndstx %bnd3, (%eax)");
2447         asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
2448         asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
2449         asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
2450         asm volatile("bndstx %bnd0, 0x12(%eax)");
2451         asm volatile("bndstx %bnd0, 0x12(%ebp)");
2452         asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
2453         asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
2454         asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
2455         asm volatile("bndstx %bnd0, 0x12345678(%eax)");
2456         asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
2457         asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
2458         asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
2459         asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
2460
2461         /* bnd prefix on call, ret, jmp and all jcc */
2462
2463         asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
2464         asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
2465         asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
2466         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2467         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2468         asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
2469         asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
2470
2471         /* sha1rnds4 imm8, xmm2/m128, xmm1 */
2472
2473         asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
2474         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
2475         asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
2476         asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
2477         asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
2478         asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
2479         asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
2480         asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
2481         asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
2482         asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
2483         asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
2484         asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
2485         asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
2486         asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
2487         asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
2488         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
2489         asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
2490         asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
2491         asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
2492         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
2493         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
2494
2495         /* sha1nexte xmm2/m128, xmm1 */
2496
2497         asm volatile("sha1nexte %xmm1, %xmm0");
2498         asm volatile("sha1nexte %xmm7, %xmm2");
2499         asm volatile("sha1nexte (%eax), %xmm0");
2500         asm volatile("sha1nexte (0x12345678), %xmm0");
2501         asm volatile("sha1nexte (%eax), %xmm3");
2502         asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
2503         asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
2504         asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
2505         asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
2506         asm volatile("sha1nexte 0x12(%eax), %xmm0");
2507         asm volatile("sha1nexte 0x12(%ebp), %xmm0");
2508         asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
2509         asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
2510         asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
2511         asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
2512         asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
2513         asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
2514         asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
2515         asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
2516         asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
2517         asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
2518
2519         /* sha1msg1 xmm2/m128, xmm1 */
2520
2521         asm volatile("sha1msg1 %xmm1, %xmm0");
2522         asm volatile("sha1msg1 %xmm7, %xmm2");
2523         asm volatile("sha1msg1 (%eax), %xmm0");
2524         asm volatile("sha1msg1 (0x12345678), %xmm0");
2525         asm volatile("sha1msg1 (%eax), %xmm3");
2526         asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
2527         asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
2528         asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
2529         asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
2530         asm volatile("sha1msg1 0x12(%eax), %xmm0");
2531         asm volatile("sha1msg1 0x12(%ebp), %xmm0");
2532         asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
2533         asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
2534         asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
2535         asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
2536         asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
2537         asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
2538         asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
2539         asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
2540         asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
2541         asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
2542
2543         /* sha1msg2 xmm2/m128, xmm1 */
2544
2545         asm volatile("sha1msg2 %xmm1, %xmm0");
2546         asm volatile("sha1msg2 %xmm7, %xmm2");
2547         asm volatile("sha1msg2 (%eax), %xmm0");
2548         asm volatile("sha1msg2 (0x12345678), %xmm0");
2549         asm volatile("sha1msg2 (%eax), %xmm3");
2550         asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
2551         asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
2552         asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
2553         asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
2554         asm volatile("sha1msg2 0x12(%eax), %xmm0");
2555         asm volatile("sha1msg2 0x12(%ebp), %xmm0");
2556         asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
2557         asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
2558         asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
2559         asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
2560         asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
2561         asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
2562         asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
2563         asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
2564         asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
2565         asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
2566
2567         /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
2568         /* Note sha256rnds2 has an implicit operand 'xmm0' */
2569
2570         asm volatile("sha256rnds2 %xmm4, %xmm1");
2571         asm volatile("sha256rnds2 %xmm7, %xmm2");
2572         asm volatile("sha256rnds2 (%eax), %xmm1");
2573         asm volatile("sha256rnds2 (0x12345678), %xmm1");
2574         asm volatile("sha256rnds2 (%eax), %xmm3");
2575         asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
2576         asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
2577         asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
2578         asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
2579         asm volatile("sha256rnds2 0x12(%eax), %xmm1");
2580         asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
2581         asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
2582         asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
2583         asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
2584         asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
2585         asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
2586         asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
2587         asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
2588         asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
2589         asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
2590         asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
2591
2592         /* sha256msg1 xmm2/m128, xmm1 */
2593
2594         asm volatile("sha256msg1 %xmm1, %xmm0");
2595         asm volatile("sha256msg1 %xmm7, %xmm2");
2596         asm volatile("sha256msg1 (%eax), %xmm0");
2597         asm volatile("sha256msg1 (0x12345678), %xmm0");
2598         asm volatile("sha256msg1 (%eax), %xmm3");
2599         asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
2600         asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
2601         asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
2602         asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
2603         asm volatile("sha256msg1 0x12(%eax), %xmm0");
2604         asm volatile("sha256msg1 0x12(%ebp), %xmm0");
2605         asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
2606         asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
2607         asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
2608         asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
2609         asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
2610         asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
2611         asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
2612         asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
2613         asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
2614         asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
2615
2616         /* sha256msg2 xmm2/m128, xmm1 */
2617
2618         asm volatile("sha256msg2 %xmm1, %xmm0");
2619         asm volatile("sha256msg2 %xmm7, %xmm2");
2620         asm volatile("sha256msg2 (%eax), %xmm0");
2621         asm volatile("sha256msg2 (0x12345678), %xmm0");
2622         asm volatile("sha256msg2 (%eax), %xmm3");
2623         asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
2624         asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
2625         asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
2626         asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
2627         asm volatile("sha256msg2 0x12(%eax), %xmm0");
2628         asm volatile("sha256msg2 0x12(%ebp), %xmm0");
2629         asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
2630         asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
2631         asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
2632         asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
2633         asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
2634         asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
2635         asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
2636         asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
2637         asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
2638         asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
2639
2640         /* clflushopt m8 */
2641
2642         asm volatile("clflushopt (%eax)");
2643         asm volatile("clflushopt (0x12345678)");
2644         asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
2645         /* Also check instructions in the same group encoding as clflushopt */
2646         asm volatile("clflush (%eax)");
2647         asm volatile("sfence");
2648
2649         /* clwb m8 */
2650
2651         asm volatile("clwb (%eax)");
2652         asm volatile("clwb (0x12345678)");
2653         asm volatile("clwb 0x12345678(%eax,%ecx,8)");
2654         /* Also check instructions in the same group encoding as clwb */
2655         asm volatile("xsaveopt (%eax)");
2656         asm volatile("mfence");
2657
2658         /* xsavec mem */
2659
2660         asm volatile("xsavec (%eax)");
2661         asm volatile("xsavec (0x12345678)");
2662         asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
2663
2664         /* xsaves mem */
2665
2666         asm volatile("xsaves (%eax)");
2667         asm volatile("xsaves (0x12345678)");
2668         asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
2669
2670         /* xrstors mem */
2671
2672         asm volatile("xrstors (%eax)");
2673         asm volatile("xrstors (0x12345678)");
2674         asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
2675
2676         /* ptwrite */
2677
2678         asm volatile("ptwrite (%eax)");
2679         asm volatile("ptwrite (0x12345678)");
2680         asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
2681
2682         asm volatile("ptwritel (%eax)");
2683         asm volatile("ptwritel (0x12345678)");
2684         asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
2685
2686 #endif /* #ifndef __x86_64__ */
2687
2688         /* Following line is a marker for the awk script - do not change */
2689         asm volatile("rdtsc"); /* Stop here */
2690
2691         return 0;
2692 }