Merge tag 'libnvdimm-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm...
[cascardo/linux.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 #else  /* #ifdef __x86_64__ */
1347
1348         /* bound r32, mem (same op code as EVEX prefix) */
1349
1350         asm volatile("bound %eax, 0x12345678(%ecx)");
1351         asm volatile("bound %ecx, 0x12345678(%eax)");
1352         asm volatile("bound %edx, 0x12345678(%eax)");
1353         asm volatile("bound %ebx, 0x12345678(%eax)");
1354         asm volatile("bound %esp, 0x12345678(%eax)");
1355         asm volatile("bound %ebp, 0x12345678(%eax)");
1356         asm volatile("bound %esi, 0x12345678(%eax)");
1357         asm volatile("bound %edi, 0x12345678(%eax)");
1358         asm volatile("bound %ecx, (%eax)");
1359         asm volatile("bound %eax, (0x12345678)");
1360         asm volatile("bound %edx, (%ecx,%eax,1)");
1361         asm volatile("bound %edx, 0x12345678(,%eax,1)");
1362         asm volatile("bound %edx, (%eax,%ecx,1)");
1363         asm volatile("bound %edx, (%eax,%ecx,8)");
1364         asm volatile("bound %edx, 0x12(%eax)");
1365         asm volatile("bound %edx, 0x12(%ebp)");
1366         asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
1367         asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
1368         asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
1369         asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
1370         asm volatile("bound %edx, 0x12345678(%eax)");
1371         asm volatile("bound %edx, 0x12345678(%ebp)");
1372         asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
1373         asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
1374         asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
1375         asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
1376
1377         /* bound r16, mem (same op code as EVEX prefix) */
1378
1379         asm volatile("bound %ax, 0x12345678(%ecx)");
1380         asm volatile("bound %cx, 0x12345678(%eax)");
1381         asm volatile("bound %dx, 0x12345678(%eax)");
1382         asm volatile("bound %bx, 0x12345678(%eax)");
1383         asm volatile("bound %sp, 0x12345678(%eax)");
1384         asm volatile("bound %bp, 0x12345678(%eax)");
1385         asm volatile("bound %si, 0x12345678(%eax)");
1386         asm volatile("bound %di, 0x12345678(%eax)");
1387         asm volatile("bound %cx, (%eax)");
1388         asm volatile("bound %ax, (0x12345678)");
1389         asm volatile("bound %dx, (%ecx,%eax,1)");
1390         asm volatile("bound %dx, 0x12345678(,%eax,1)");
1391         asm volatile("bound %dx, (%eax,%ecx,1)");
1392         asm volatile("bound %dx, (%eax,%ecx,8)");
1393         asm volatile("bound %dx, 0x12(%eax)");
1394         asm volatile("bound %dx, 0x12(%ebp)");
1395         asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
1396         asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
1397         asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
1398         asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
1399         asm volatile("bound %dx, 0x12345678(%eax)");
1400         asm volatile("bound %dx, 0x12345678(%ebp)");
1401         asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
1402         asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
1403         asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
1404         asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
1405
1406         /* AVX-512: Instructions with the same op codes as Mask Instructions  */
1407
1408         asm volatile("cmovno %eax,%ebx");
1409         asm volatile("cmovno 0x12345678(%eax),%ecx");
1410         asm volatile("cmovno 0x12345678(%eax),%cx");
1411
1412         asm volatile("cmove  %eax,%ebx");
1413         asm volatile("cmove 0x12345678(%eax),%ecx");
1414         asm volatile("cmove 0x12345678(%eax),%cx");
1415
1416         asm volatile("seto    0x12345678(%eax)");
1417         asm volatile("setno   0x12345678(%eax)");
1418         asm volatile("setb    0x12345678(%eax)");
1419         asm volatile("setc    0x12345678(%eax)");
1420         asm volatile("setnae  0x12345678(%eax)");
1421         asm volatile("setae   0x12345678(%eax)");
1422         asm volatile("setnb   0x12345678(%eax)");
1423         asm volatile("setnc   0x12345678(%eax)");
1424         asm volatile("sets    0x12345678(%eax)");
1425         asm volatile("setns   0x12345678(%eax)");
1426
1427         /* AVX-512: Mask Instructions */
1428
1429         asm volatile("kandw  %k7,%k6,%k5");
1430         asm volatile("kandq  %k7,%k6,%k5");
1431         asm volatile("kandb  %k7,%k6,%k5");
1432         asm volatile("kandd  %k7,%k6,%k5");
1433
1434         asm volatile("kandnw  %k7,%k6,%k5");
1435         asm volatile("kandnq  %k7,%k6,%k5");
1436         asm volatile("kandnb  %k7,%k6,%k5");
1437         asm volatile("kandnd  %k7,%k6,%k5");
1438
1439         asm volatile("knotw  %k7,%k6");
1440         asm volatile("knotq  %k7,%k6");
1441         asm volatile("knotb  %k7,%k6");
1442         asm volatile("knotd  %k7,%k6");
1443
1444         asm volatile("korw  %k7,%k6,%k5");
1445         asm volatile("korq  %k7,%k6,%k5");
1446         asm volatile("korb  %k7,%k6,%k5");
1447         asm volatile("kord  %k7,%k6,%k5");
1448
1449         asm volatile("kxnorw  %k7,%k6,%k5");
1450         asm volatile("kxnorq  %k7,%k6,%k5");
1451         asm volatile("kxnorb  %k7,%k6,%k5");
1452         asm volatile("kxnord  %k7,%k6,%k5");
1453
1454         asm volatile("kxorw  %k7,%k6,%k5");
1455         asm volatile("kxorq  %k7,%k6,%k5");
1456         asm volatile("kxorb  %k7,%k6,%k5");
1457         asm volatile("kxord  %k7,%k6,%k5");
1458
1459         asm volatile("kaddw  %k7,%k6,%k5");
1460         asm volatile("kaddq  %k7,%k6,%k5");
1461         asm volatile("kaddb  %k7,%k6,%k5");
1462         asm volatile("kaddd  %k7,%k6,%k5");
1463
1464         asm volatile("kunpckbw %k7,%k6,%k5");
1465         asm volatile("kunpckwd %k7,%k6,%k5");
1466         asm volatile("kunpckdq %k7,%k6,%k5");
1467
1468         asm volatile("kmovw  %k6,%k5");
1469         asm volatile("kmovw  (%ecx),%k5");
1470         asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
1471         asm volatile("kmovw  %k5,(%ecx)");
1472         asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
1473         asm volatile("kmovw  %eax,%k5");
1474         asm volatile("kmovw  %ebp,%k5");
1475         asm volatile("kmovw  %k5,%eax");
1476         asm volatile("kmovw  %k5,%ebp");
1477
1478         asm volatile("kmovq  %k6,%k5");
1479         asm volatile("kmovq  (%ecx),%k5");
1480         asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
1481         asm volatile("kmovq  %k5,(%ecx)");
1482         asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
1483
1484         asm volatile("kmovb  %k6,%k5");
1485         asm volatile("kmovb  (%ecx),%k5");
1486         asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
1487         asm volatile("kmovb  %k5,(%ecx)");
1488         asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
1489         asm volatile("kmovb  %eax,%k5");
1490         asm volatile("kmovb  %ebp,%k5");
1491         asm volatile("kmovb  %k5,%eax");
1492         asm volatile("kmovb  %k5,%ebp");
1493
1494         asm volatile("kmovd  %k6,%k5");
1495         asm volatile("kmovd  (%ecx),%k5");
1496         asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
1497         asm volatile("kmovd  %k5,(%ecx)");
1498         asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
1499         asm volatile("kmovd  %eax,%k5");
1500         asm volatile("kmovd  %ebp,%k5");
1501         asm volatile("kmovd  %k5,%eax");
1502         asm volatile("kmovd  %k5,%ebp");
1503
1504         asm volatile("kortestw %k6,%k5");
1505         asm volatile("kortestq %k6,%k5");
1506         asm volatile("kortestb %k6,%k5");
1507         asm volatile("kortestd %k6,%k5");
1508
1509         asm volatile("ktestw %k6,%k5");
1510         asm volatile("ktestq %k6,%k5");
1511         asm volatile("ktestb %k6,%k5");
1512         asm volatile("ktestd %k6,%k5");
1513
1514         asm volatile("kshiftrw $0x12,%k6,%k5");
1515         asm volatile("kshiftrq $0x5b,%k6,%k5");
1516         asm volatile("kshiftlw $0x12,%k6,%k5");
1517         asm volatile("kshiftlq $0x5b,%k6,%k5");
1518
1519         /* AVX-512: Op code 0f 5b */
1520         asm volatile("vcvtdq2ps %xmm5,%xmm6");
1521         asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
1522         asm volatile("vcvtps2dq %xmm5,%xmm6");
1523         asm volatile("vcvttps2dq %xmm5,%xmm6");
1524
1525         /* AVX-512: Op code 0f 6f */
1526
1527         asm volatile("movq   %mm0,%mm4");
1528         asm volatile("vmovdqa %ymm4,%ymm6");
1529         asm volatile("vmovdqa32 %zmm5,%zmm6");
1530         asm volatile("vmovdqa64 %zmm5,%zmm6");
1531         asm volatile("vmovdqu %ymm4,%ymm6");
1532         asm volatile("vmovdqu32 %zmm5,%zmm6");
1533         asm volatile("vmovdqu64 %zmm5,%zmm6");
1534         asm volatile("vmovdqu8 %zmm5,%zmm6");
1535         asm volatile("vmovdqu16 %zmm5,%zmm6");
1536
1537         /* AVX-512: Op code 0f 78 */
1538
1539         asm volatile("vmread %eax,%ebx");
1540         asm volatile("vcvttps2udq %zmm5,%zmm6");
1541         asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
1542         asm volatile("vcvttsd2usi %xmm6,%eax");
1543         asm volatile("vcvttss2usi %xmm6,%eax");
1544         asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
1545         asm volatile("vcvttpd2uqq %zmm5,%zmm6");
1546
1547         /* AVX-512: Op code 0f 79 */
1548
1549         asm volatile("vmwrite %eax,%ebx");
1550         asm volatile("vcvtps2udq %zmm5,%zmm6");
1551         asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
1552         asm volatile("vcvtsd2usi %xmm6,%eax");
1553         asm volatile("vcvtss2usi %xmm6,%eax");
1554         asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
1555         asm volatile("vcvtpd2uqq %zmm5,%zmm6");
1556
1557         /* AVX-512: Op code 0f 7a */
1558
1559         asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
1560         asm volatile("vcvtuqq2pd %zmm5,%zmm6");
1561         asm volatile("vcvtudq2ps %zmm5,%zmm6");
1562         asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
1563         asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
1564         asm volatile("vcvttpd2qq %zmm5,%zmm6");
1565
1566         /* AVX-512: Op code 0f 7b */
1567
1568         asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
1569         asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
1570         asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
1571         asm volatile("vcvtpd2qq %zmm5,%zmm6");
1572
1573         /* AVX-512: Op code 0f 7f */
1574
1575         asm volatile("movq.s  %mm0,%mm4");
1576         asm volatile("vmovdqa.s %ymm5,%ymm6");
1577         asm volatile("vmovdqa32.s %zmm5,%zmm6");
1578         asm volatile("vmovdqa64.s %zmm5,%zmm6");
1579         asm volatile("vmovdqu.s %ymm5,%ymm6");
1580         asm volatile("vmovdqu32.s %zmm5,%zmm6");
1581         asm volatile("vmovdqu64.s %zmm5,%zmm6");
1582         asm volatile("vmovdqu8.s %zmm5,%zmm6");
1583         asm volatile("vmovdqu16.s %zmm5,%zmm6");
1584
1585         /* AVX-512: Op code 0f db */
1586
1587         asm volatile("pand  %mm1,%mm2");
1588         asm volatile("pand  %xmm1,%xmm2");
1589         asm volatile("vpand  %ymm4,%ymm6,%ymm2");
1590         asm volatile("vpandd %zmm4,%zmm5,%zmm6");
1591         asm volatile("vpandq %zmm4,%zmm5,%zmm6");
1592
1593         /* AVX-512: Op code 0f df */
1594
1595         asm volatile("pandn  %mm1,%mm2");
1596         asm volatile("pandn  %xmm1,%xmm2");
1597         asm volatile("vpandn %ymm4,%ymm6,%ymm2");
1598         asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
1599         asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
1600
1601         /* AVX-512: Op code 0f e6 */
1602
1603         asm volatile("vcvttpd2dq %xmm1,%xmm2");
1604         asm volatile("vcvtdq2pd %xmm5,%xmm6");
1605         asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
1606         asm volatile("vcvtqq2pd %zmm5,%zmm6");
1607         asm volatile("vcvtpd2dq %xmm1,%xmm2");
1608
1609         /* AVX-512: Op code 0f eb */
1610
1611         asm volatile("por   %mm4,%mm6");
1612         asm volatile("vpor   %ymm4,%ymm6,%ymm2");
1613         asm volatile("vpord  %zmm4,%zmm5,%zmm6");
1614         asm volatile("vporq  %zmm4,%zmm5,%zmm6");
1615
1616         /* AVX-512: Op code 0f ef */
1617
1618         asm volatile("pxor   %mm4,%mm6");
1619         asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
1620         asm volatile("vpxord %zmm4,%zmm5,%zmm6");
1621         asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
1622
1623         /* AVX-512: Op code 0f 38 10 */
1624
1625         asm volatile("pblendvb %xmm1,%xmm0");
1626         asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
1627         asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
1628
1629         /* AVX-512: Op code 0f 38 11 */
1630
1631         asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
1632         asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
1633
1634         /* AVX-512: Op code 0f 38 12 */
1635
1636         asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
1637         asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
1638
1639         /* AVX-512: Op code 0f 38 13 */
1640
1641         asm volatile("vcvtph2ps %xmm3,%ymm5");
1642         asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
1643         asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
1644
1645         /* AVX-512: Op code 0f 38 14 */
1646
1647         asm volatile("blendvps %xmm1,%xmm0");
1648         asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
1649         asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
1650         asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
1651
1652         /* AVX-512: Op code 0f 38 15 */
1653
1654         asm volatile("blendvpd %xmm1,%xmm0");
1655         asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
1656         asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
1657         asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
1658
1659         /* AVX-512: Op code 0f 38 16 */
1660
1661         asm volatile("vpermps %ymm4,%ymm6,%ymm2");
1662         asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
1663         asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
1664
1665         /* AVX-512: Op code 0f 38 19 */
1666
1667         asm volatile("vbroadcastsd %xmm4,%ymm6");
1668         asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
1669
1670         /* AVX-512: Op code 0f 38 1a */
1671
1672         asm volatile("vbroadcastf128 (%ecx),%ymm4");
1673         asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
1674         asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
1675
1676         /* AVX-512: Op code 0f 38 1b */
1677
1678         asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
1679         asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
1680
1681         /* AVX-512: Op code 0f 38 1f */
1682
1683         asm volatile("vpabsq %zmm4,%zmm6");
1684
1685         /* AVX-512: Op code 0f 38 20 */
1686
1687         asm volatile("vpmovsxbw %xmm4,%xmm5");
1688         asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
1689
1690         /* AVX-512: Op code 0f 38 21 */
1691
1692         asm volatile("vpmovsxbd %xmm4,%ymm6");
1693         asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
1694
1695         /* AVX-512: Op code 0f 38 22 */
1696
1697         asm volatile("vpmovsxbq %xmm4,%ymm4");
1698         asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
1699
1700         /* AVX-512: Op code 0f 38 23 */
1701
1702         asm volatile("vpmovsxwd %xmm4,%ymm4");
1703         asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
1704
1705         /* AVX-512: Op code 0f 38 24 */
1706
1707         asm volatile("vpmovsxwq %xmm4,%ymm6");
1708         asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
1709
1710         /* AVX-512: Op code 0f 38 25 */
1711
1712         asm volatile("vpmovsxdq %xmm4,%ymm4");
1713         asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
1714
1715         /* AVX-512: Op code 0f 38 26 */
1716
1717         asm volatile("vptestmb %zmm5,%zmm6,%k5");
1718         asm volatile("vptestmw %zmm5,%zmm6,%k5");
1719         asm volatile("vptestnmb %zmm4,%zmm5,%k5");
1720         asm volatile("vptestnmw %zmm4,%zmm5,%k5");
1721
1722         /* AVX-512: Op code 0f 38 27 */
1723
1724         asm volatile("vptestmd %zmm5,%zmm6,%k5");
1725         asm volatile("vptestmq %zmm5,%zmm6,%k5");
1726         asm volatile("vptestnmd %zmm4,%zmm5,%k5");
1727         asm volatile("vptestnmq %zmm4,%zmm5,%k5");
1728
1729         /* AVX-512: Op code 0f 38 28 */
1730
1731         asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
1732         asm volatile("vpmovm2b %k5,%zmm6");
1733         asm volatile("vpmovm2w %k5,%zmm6");
1734
1735         /* AVX-512: Op code 0f 38 29 */
1736
1737         asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
1738         asm volatile("vpmovb2m %zmm6,%k5");
1739         asm volatile("vpmovw2m %zmm6,%k5");
1740
1741         /* AVX-512: Op code 0f 38 2a */
1742
1743         asm volatile("vmovntdqa (%ecx),%ymm4");
1744         asm volatile("vpbroadcastmb2q %k6,%zmm1");
1745
1746         /* AVX-512: Op code 0f 38 2c */
1747
1748         asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
1749         asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
1750         asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
1751
1752         /* AVX-512: Op code 0f 38 2d */
1753
1754         asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
1755         asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
1756         asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
1757
1758         /* AVX-512: Op code 0f 38 30 */
1759
1760         asm volatile("vpmovzxbw %xmm4,%ymm4");
1761         asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
1762
1763         /* AVX-512: Op code 0f 38 31 */
1764
1765         asm volatile("vpmovzxbd %xmm4,%ymm6");
1766         asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
1767
1768         /* AVX-512: Op code 0f 38 32 */
1769
1770         asm volatile("vpmovzxbq %xmm4,%ymm4");
1771         asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
1772
1773         /* AVX-512: Op code 0f 38 33 */
1774
1775         asm volatile("vpmovzxwd %xmm4,%ymm4");
1776         asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
1777
1778         /* AVX-512: Op code 0f 38 34 */
1779
1780         asm volatile("vpmovzxwq %xmm4,%ymm6");
1781         asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
1782
1783         /* AVX-512: Op code 0f 38 35 */
1784
1785         asm volatile("vpmovzxdq %xmm4,%ymm4");
1786         asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
1787
1788         /* AVX-512: Op code 0f 38 36 */
1789
1790         asm volatile("vpermd %ymm4,%ymm6,%ymm2");
1791         asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
1792         asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
1793
1794         /* AVX-512: Op code 0f 38 38 */
1795
1796         asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
1797         asm volatile("vpmovm2d %k5,%zmm6");
1798         asm volatile("vpmovm2q %k5,%zmm6");
1799
1800         /* AVX-512: Op code 0f 38 39 */
1801
1802         asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
1803         asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
1804         asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
1805         asm volatile("vpmovd2m %zmm6,%k5");
1806         asm volatile("vpmovq2m %zmm6,%k5");
1807
1808         /* AVX-512: Op code 0f 38 3a */
1809
1810         asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
1811         asm volatile("vpbroadcastmw2d %k6,%zmm6");
1812
1813         /* AVX-512: Op code 0f 38 3b */
1814
1815         asm volatile("vpminud %ymm4,%ymm6,%ymm2");
1816         asm volatile("vpminud %zmm4,%zmm5,%zmm6");
1817         asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
1818
1819         /* AVX-512: Op code 0f 38 3d */
1820
1821         asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
1822         asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
1823         asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
1824
1825         /* AVX-512: Op code 0f 38 3f */
1826
1827         asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
1828         asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
1829         asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
1830
1831         /* AVX-512: Op code 0f 38 40 */
1832
1833         asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
1834         asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
1835         asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
1836
1837         /* AVX-512: Op code 0f 38 42 */
1838
1839         asm volatile("vgetexpps %zmm5,%zmm6");
1840         asm volatile("vgetexppd %zmm5,%zmm6");
1841
1842         /* AVX-512: Op code 0f 38 43 */
1843
1844         asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
1845         asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
1846
1847         /* AVX-512: Op code 0f 38 44 */
1848
1849         asm volatile("vplzcntd %zmm5,%zmm6");
1850         asm volatile("vplzcntq %zmm5,%zmm6");
1851
1852         /* AVX-512: Op code 0f 38 46 */
1853
1854         asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
1855         asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
1856         asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
1857
1858         /* AVX-512: Op code 0f 38 4c */
1859
1860         asm volatile("vrcp14ps %zmm5,%zmm6");
1861         asm volatile("vrcp14pd %zmm5,%zmm6");
1862
1863         /* AVX-512: Op code 0f 38 4d */
1864
1865         asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
1866         asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
1867
1868         /* AVX-512: Op code 0f 38 4e */
1869
1870         asm volatile("vrsqrt14ps %zmm5,%zmm6");
1871         asm volatile("vrsqrt14pd %zmm5,%zmm6");
1872
1873         /* AVX-512: Op code 0f 38 4f */
1874
1875         asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
1876         asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
1877
1878         /* AVX-512: Op code 0f 38 59 */
1879
1880         asm volatile("vpbroadcastq %xmm4,%xmm6");
1881         asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
1882
1883         /* AVX-512: Op code 0f 38 5a */
1884
1885         asm volatile("vbroadcasti128 (%ecx),%ymm4");
1886         asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
1887         asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
1888
1889         /* AVX-512: Op code 0f 38 5b */
1890
1891         asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
1892         asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
1893
1894         /* AVX-512: Op code 0f 38 64 */
1895
1896         asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
1897         asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
1898
1899         /* AVX-512: Op code 0f 38 65 */
1900
1901         asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
1902         asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
1903
1904         /* AVX-512: Op code 0f 38 66 */
1905
1906         asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
1907         asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
1908
1909         /* AVX-512: Op code 0f 38 75 */
1910
1911         asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
1912         asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
1913
1914         /* AVX-512: Op code 0f 38 76 */
1915
1916         asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
1917         asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
1918
1919         /* AVX-512: Op code 0f 38 77 */
1920
1921         asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
1922         asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
1923
1924         /* AVX-512: Op code 0f 38 7a */
1925
1926         asm volatile("vpbroadcastb %eax,%xmm3");
1927
1928         /* AVX-512: Op code 0f 38 7b */
1929
1930         asm volatile("vpbroadcastw %eax,%xmm3");
1931
1932         /* AVX-512: Op code 0f 38 7c */
1933
1934         asm volatile("vpbroadcastd %eax,%xmm3");
1935
1936         /* AVX-512: Op code 0f 38 7d */
1937
1938         asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
1939         asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
1940
1941         /* AVX-512: Op code 0f 38 7e */
1942
1943         asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
1944         asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
1945
1946         /* AVX-512: Op code 0f 38 7f */
1947
1948         asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
1949         asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
1950
1951         /* AVX-512: Op code 0f 38 83 */
1952
1953         asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
1954
1955         /* AVX-512: Op code 0f 38 88 */
1956
1957         asm volatile("vexpandps (%ecx),%zmm6");
1958         asm volatile("vexpandpd (%ecx),%zmm6");
1959
1960         /* AVX-512: Op code 0f 38 89 */
1961
1962         asm volatile("vpexpandd (%ecx),%zmm6");
1963         asm volatile("vpexpandq (%ecx),%zmm6");
1964
1965         /* AVX-512: Op code 0f 38 8a */
1966
1967         asm volatile("vcompressps %zmm6,(%ecx)");
1968         asm volatile("vcompresspd %zmm6,(%ecx)");
1969
1970         /* AVX-512: Op code 0f 38 8b */
1971
1972         asm volatile("vpcompressd %zmm6,(%ecx)");
1973         asm volatile("vpcompressq %zmm6,(%ecx)");
1974
1975         /* AVX-512: Op code 0f 38 8d */
1976
1977         asm volatile("vpermb %zmm4,%zmm5,%zmm6");
1978         asm volatile("vpermw %zmm4,%zmm5,%zmm6");
1979
1980         /* AVX-512: Op code 0f 38 90 */
1981
1982         asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
1983         asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
1984         asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
1985         asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
1986
1987         /* AVX-512: Op code 0f 38 91 */
1988
1989         asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
1990         asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
1991         asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
1992         asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
1993
1994         /* AVX-512: Op code 0f 38 a0 */
1995
1996         asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
1997         asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
1998
1999         /* AVX-512: Op code 0f 38 a1 */
2000
2001         asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2002         asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
2003
2004         /* AVX-512: Op code 0f 38 a2 */
2005
2006         asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2007         asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
2008
2009         /* AVX-512: Op code 0f 38 a3 */
2010
2011         asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
2012         asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
2013
2014         /* AVX-512: Op code 0f 38 b4 */
2015
2016         asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
2017
2018         /* AVX-512: Op code 0f 38 b5 */
2019
2020         asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
2021
2022         /* AVX-512: Op code 0f 38 c4 */
2023
2024         asm volatile("vpconflictd %zmm5,%zmm6");
2025         asm volatile("vpconflictq %zmm5,%zmm6");
2026
2027         /* AVX-512: Op code 0f 38 c8 */
2028
2029         asm volatile("vexp2ps %zmm6,%zmm7");
2030         asm volatile("vexp2pd %zmm6,%zmm7");
2031
2032         /* AVX-512: Op code 0f 38 ca */
2033
2034         asm volatile("vrcp28ps %zmm6,%zmm7");
2035         asm volatile("vrcp28pd %zmm6,%zmm7");
2036
2037         /* AVX-512: Op code 0f 38 cb */
2038
2039         asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
2040         asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
2041
2042         /* AVX-512: Op code 0f 38 cc */
2043
2044         asm volatile("vrsqrt28ps %zmm6,%zmm7");
2045         asm volatile("vrsqrt28pd %zmm6,%zmm7");
2046
2047         /* AVX-512: Op code 0f 38 cd */
2048
2049         asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
2050         asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
2051
2052         /* AVX-512: Op code 0f 3a 03 */
2053
2054         asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
2055         asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
2056
2057         /* AVX-512: Op code 0f 3a 08 */
2058
2059         asm volatile("vroundps $0x5,%ymm6,%ymm2");
2060         asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
2061
2062         /* AVX-512: Op code 0f 3a 09 */
2063
2064         asm volatile("vroundpd $0x5,%ymm6,%ymm2");
2065         asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
2066
2067         /* AVX-512: Op code 0f 3a 0a */
2068
2069         asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
2070         asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2071
2072         /* AVX-512: Op code 0f 3a 0b */
2073
2074         asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
2075         asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
2076
2077         /* AVX-512: Op code 0f 3a 18 */
2078
2079         asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
2080         asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2081         asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2082
2083         /* AVX-512: Op code 0f 3a 19 */
2084
2085         asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
2086         asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
2087         asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
2088
2089         /* AVX-512: Op code 0f 3a 1a */
2090
2091         asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2092         asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2093
2094         /* AVX-512: Op code 0f 3a 1b */
2095
2096         asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
2097         asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
2098
2099         /* AVX-512: Op code 0f 3a 1e */
2100
2101         asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
2102         asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
2103
2104         /* AVX-512: Op code 0f 3a 1f */
2105
2106         asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
2107         asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
2108
2109         /* AVX-512: Op code 0f 3a 23 */
2110
2111         asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
2112         asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
2113
2114         /* AVX-512: Op code 0f 3a 25 */
2115
2116         asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
2117         asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
2118
2119         /* AVX-512: Op code 0f 3a 26 */
2120
2121         asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
2122         asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
2123
2124         /* AVX-512: Op code 0f 3a 27 */
2125
2126         asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2127         asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2128
2129         /* AVX-512: Op code 0f 3a 38 */
2130
2131         asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
2132         asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2133         asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
2134
2135         /* AVX-512: Op code 0f 3a 39 */
2136
2137         asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
2138         asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
2139         asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
2140
2141         /* AVX-512: Op code 0f 3a 3a */
2142
2143         asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2144         asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
2145
2146         /* AVX-512: Op code 0f 3a 3b */
2147
2148         asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
2149         asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
2150
2151         /* AVX-512: Op code 0f 3a 3e */
2152
2153         asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
2154         asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
2155
2156         /* AVX-512: Op code 0f 3a 3f */
2157
2158         asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
2159         asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
2160
2161         /* AVX-512: Op code 0f 3a 42 */
2162
2163         asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
2164         asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
2165
2166         /* AVX-512: Op code 0f 3a 43 */
2167
2168         asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
2169         asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
2170
2171         /* AVX-512: Op code 0f 3a 50 */
2172
2173         asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
2174         asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
2175
2176         /* AVX-512: Op code 0f 3a 51 */
2177
2178         asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
2179         asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
2180
2181         /* AVX-512: Op code 0f 3a 54 */
2182
2183         asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
2184         asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
2185
2186         /* AVX-512: Op code 0f 3a 55 */
2187
2188         asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2189         asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
2190
2191         /* AVX-512: Op code 0f 3a 56 */
2192
2193         asm volatile("vreduceps $0x12,%zmm6,%zmm7");
2194         asm volatile("vreducepd $0x12,%zmm6,%zmm7");
2195
2196         /* AVX-512: Op code 0f 3a 57 */
2197
2198         asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
2199         asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
2200
2201         /* AVX-512: Op code 0f 3a 66 */
2202
2203         asm volatile("vfpclassps $0x12,%zmm7,%k5");
2204         asm volatile("vfpclasspd $0x12,%zmm7,%k5");
2205
2206         /* AVX-512: Op code 0f 3a 67 */
2207
2208         asm volatile("vfpclassss $0x12,%xmm7,%k5");
2209         asm volatile("vfpclasssd $0x12,%xmm7,%k5");
2210
2211         /* AVX-512: Op code 0f 72 (Grp13) */
2212
2213         asm volatile("vprord $0x12,%zmm5,%zmm6");
2214         asm volatile("vprorq $0x12,%zmm5,%zmm6");
2215         asm volatile("vprold $0x12,%zmm5,%zmm6");
2216         asm volatile("vprolq $0x12,%zmm5,%zmm6");
2217         asm volatile("psrad  $0x2,%mm6");
2218         asm volatile("vpsrad $0x5,%ymm6,%ymm2");
2219         asm volatile("vpsrad $0x5,%zmm6,%zmm2");
2220         asm volatile("vpsraq $0x5,%zmm6,%zmm2");
2221
2222         /* AVX-512: Op code 0f 38 c6 (Grp18) */
2223
2224         asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
2225         asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
2226         asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
2227         asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
2228         asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
2229         asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
2230         asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
2231         asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
2232
2233         /* AVX-512: Op code 0f 38 c7 (Grp19) */
2234
2235         asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
2236         asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
2237         asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
2238         asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
2239         asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
2240         asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
2241         asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
2242         asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
2243
2244         /* AVX-512: Examples */
2245
2246         asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
2247         asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
2248         asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
2249         asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
2250         asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
2251         asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
2252         asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
2253         asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
2254         asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
2255         asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
2256         asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
2257         asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
2258         asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
2259         asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
2260         asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
2261         asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
2262
2263         /* bndmk m32, bnd */
2264
2265         asm volatile("bndmk (%eax), %bnd0");
2266         asm volatile("bndmk (0x12345678), %bnd0");
2267         asm volatile("bndmk (%eax), %bnd3");
2268         asm volatile("bndmk (%ecx,%eax,1), %bnd0");
2269         asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
2270         asm volatile("bndmk (%eax,%ecx,1), %bnd0");
2271         asm volatile("bndmk (%eax,%ecx,8), %bnd0");
2272         asm volatile("bndmk 0x12(%eax), %bnd0");
2273         asm volatile("bndmk 0x12(%ebp), %bnd0");
2274         asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
2275         asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
2276         asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
2277         asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
2278         asm volatile("bndmk 0x12345678(%eax), %bnd0");
2279         asm volatile("bndmk 0x12345678(%ebp), %bnd0");
2280         asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
2281         asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
2282         asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
2283         asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
2284
2285         /* bndcl r/m32, bnd */
2286
2287         asm volatile("bndcl (%eax), %bnd0");
2288         asm volatile("bndcl (0x12345678), %bnd0");
2289         asm volatile("bndcl (%eax), %bnd3");
2290         asm volatile("bndcl (%ecx,%eax,1), %bnd0");
2291         asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
2292         asm volatile("bndcl (%eax,%ecx,1), %bnd0");
2293         asm volatile("bndcl (%eax,%ecx,8), %bnd0");
2294         asm volatile("bndcl 0x12(%eax), %bnd0");
2295         asm volatile("bndcl 0x12(%ebp), %bnd0");
2296         asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
2297         asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
2298         asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
2299         asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
2300         asm volatile("bndcl 0x12345678(%eax), %bnd0");
2301         asm volatile("bndcl 0x12345678(%ebp), %bnd0");
2302         asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
2303         asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
2304         asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
2305         asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
2306         asm volatile("bndcl %eax, %bnd0");
2307
2308         /* bndcu r/m32, bnd */
2309
2310         asm volatile("bndcu (%eax), %bnd0");
2311         asm volatile("bndcu (0x12345678), %bnd0");
2312         asm volatile("bndcu (%eax), %bnd3");
2313         asm volatile("bndcu (%ecx,%eax,1), %bnd0");
2314         asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
2315         asm volatile("bndcu (%eax,%ecx,1), %bnd0");
2316         asm volatile("bndcu (%eax,%ecx,8), %bnd0");
2317         asm volatile("bndcu 0x12(%eax), %bnd0");
2318         asm volatile("bndcu 0x12(%ebp), %bnd0");
2319         asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
2320         asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
2321         asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
2322         asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
2323         asm volatile("bndcu 0x12345678(%eax), %bnd0");
2324         asm volatile("bndcu 0x12345678(%ebp), %bnd0");
2325         asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
2326         asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
2327         asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
2328         asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
2329         asm volatile("bndcu %eax, %bnd0");
2330
2331         /* bndcn r/m32, bnd */
2332
2333         asm volatile("bndcn (%eax), %bnd0");
2334         asm volatile("bndcn (0x12345678), %bnd0");
2335         asm volatile("bndcn (%eax), %bnd3");
2336         asm volatile("bndcn (%ecx,%eax,1), %bnd0");
2337         asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
2338         asm volatile("bndcn (%eax,%ecx,1), %bnd0");
2339         asm volatile("bndcn (%eax,%ecx,8), %bnd0");
2340         asm volatile("bndcn 0x12(%eax), %bnd0");
2341         asm volatile("bndcn 0x12(%ebp), %bnd0");
2342         asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
2343         asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
2344         asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
2345         asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
2346         asm volatile("bndcn 0x12345678(%eax), %bnd0");
2347         asm volatile("bndcn 0x12345678(%ebp), %bnd0");
2348         asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
2349         asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
2350         asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
2351         asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
2352         asm volatile("bndcn %eax, %bnd0");
2353
2354         /* bndmov m64, bnd */
2355
2356         asm volatile("bndmov (%eax), %bnd0");
2357         asm volatile("bndmov (0x12345678), %bnd0");
2358         asm volatile("bndmov (%eax), %bnd3");
2359         asm volatile("bndmov (%ecx,%eax,1), %bnd0");
2360         asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
2361         asm volatile("bndmov (%eax,%ecx,1), %bnd0");
2362         asm volatile("bndmov (%eax,%ecx,8), %bnd0");
2363         asm volatile("bndmov 0x12(%eax), %bnd0");
2364         asm volatile("bndmov 0x12(%ebp), %bnd0");
2365         asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
2366         asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
2367         asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
2368         asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
2369         asm volatile("bndmov 0x12345678(%eax), %bnd0");
2370         asm volatile("bndmov 0x12345678(%ebp), %bnd0");
2371         asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
2372         asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
2373         asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
2374         asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
2375
2376         /* bndmov bnd, m64 */
2377
2378         asm volatile("bndmov %bnd0, (%eax)");
2379         asm volatile("bndmov %bnd0, (0x12345678)");
2380         asm volatile("bndmov %bnd3, (%eax)");
2381         asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
2382         asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
2383         asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
2384         asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
2385         asm volatile("bndmov %bnd0, 0x12(%eax)");
2386         asm volatile("bndmov %bnd0, 0x12(%ebp)");
2387         asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
2388         asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
2389         asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
2390         asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
2391         asm volatile("bndmov %bnd0, 0x12345678(%eax)");
2392         asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
2393         asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
2394         asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
2395         asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
2396         asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
2397
2398         /* bndmov bnd2, bnd1 */
2399
2400         asm volatile("bndmov %bnd0, %bnd1");
2401         asm volatile("bndmov %bnd1, %bnd0");
2402
2403         /* bndldx mib, bnd */
2404
2405         asm volatile("bndldx (%eax), %bnd0");
2406         asm volatile("bndldx (0x12345678), %bnd0");
2407         asm volatile("bndldx (%eax), %bnd3");
2408         asm volatile("bndldx (%ecx,%eax,1), %bnd0");
2409         asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
2410         asm volatile("bndldx (%eax,%ecx,1), %bnd0");
2411         asm volatile("bndldx 0x12(%eax), %bnd0");
2412         asm volatile("bndldx 0x12(%ebp), %bnd0");
2413         asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
2414         asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
2415         asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
2416         asm volatile("bndldx 0x12345678(%eax), %bnd0");
2417         asm volatile("bndldx 0x12345678(%ebp), %bnd0");
2418         asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
2419         asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
2420         asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
2421
2422         /* bndstx bnd, mib */
2423
2424         asm volatile("bndstx %bnd0, (%eax)");
2425         asm volatile("bndstx %bnd0, (0x12345678)");
2426         asm volatile("bndstx %bnd3, (%eax)");
2427         asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
2428         asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
2429         asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
2430         asm volatile("bndstx %bnd0, 0x12(%eax)");
2431         asm volatile("bndstx %bnd0, 0x12(%ebp)");
2432         asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
2433         asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
2434         asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
2435         asm volatile("bndstx %bnd0, 0x12345678(%eax)");
2436         asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
2437         asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
2438         asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
2439         asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
2440
2441         /* bnd prefix on call, ret, jmp and all jcc */
2442
2443         asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
2444         asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
2445         asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
2446         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2447         asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2448         asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
2449         asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
2450
2451         /* sha1rnds4 imm8, xmm2/m128, xmm1 */
2452
2453         asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
2454         asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
2455         asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
2456         asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
2457         asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
2458         asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
2459         asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
2460         asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
2461         asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
2462         asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
2463         asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
2464         asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
2465         asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
2466         asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
2467         asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
2468         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
2469         asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
2470         asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
2471         asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
2472         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
2473         asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
2474
2475         /* sha1nexte xmm2/m128, xmm1 */
2476
2477         asm volatile("sha1nexte %xmm1, %xmm0");
2478         asm volatile("sha1nexte %xmm7, %xmm2");
2479         asm volatile("sha1nexte (%eax), %xmm0");
2480         asm volatile("sha1nexte (0x12345678), %xmm0");
2481         asm volatile("sha1nexte (%eax), %xmm3");
2482         asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
2483         asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
2484         asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
2485         asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
2486         asm volatile("sha1nexte 0x12(%eax), %xmm0");
2487         asm volatile("sha1nexte 0x12(%ebp), %xmm0");
2488         asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
2489         asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
2490         asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
2491         asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
2492         asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
2493         asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
2494         asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
2495         asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
2496         asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
2497         asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
2498
2499         /* sha1msg1 xmm2/m128, xmm1 */
2500
2501         asm volatile("sha1msg1 %xmm1, %xmm0");
2502         asm volatile("sha1msg1 %xmm7, %xmm2");
2503         asm volatile("sha1msg1 (%eax), %xmm0");
2504         asm volatile("sha1msg1 (0x12345678), %xmm0");
2505         asm volatile("sha1msg1 (%eax), %xmm3");
2506         asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
2507         asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
2508         asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
2509         asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
2510         asm volatile("sha1msg1 0x12(%eax), %xmm0");
2511         asm volatile("sha1msg1 0x12(%ebp), %xmm0");
2512         asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
2513         asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
2514         asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
2515         asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
2516         asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
2517         asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
2518         asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
2519         asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
2520         asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
2521         asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
2522
2523         /* sha1msg2 xmm2/m128, xmm1 */
2524
2525         asm volatile("sha1msg2 %xmm1, %xmm0");
2526         asm volatile("sha1msg2 %xmm7, %xmm2");
2527         asm volatile("sha1msg2 (%eax), %xmm0");
2528         asm volatile("sha1msg2 (0x12345678), %xmm0");
2529         asm volatile("sha1msg2 (%eax), %xmm3");
2530         asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
2531         asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
2532         asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
2533         asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
2534         asm volatile("sha1msg2 0x12(%eax), %xmm0");
2535         asm volatile("sha1msg2 0x12(%ebp), %xmm0");
2536         asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
2537         asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
2538         asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
2539         asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
2540         asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
2541         asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
2542         asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
2543         asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
2544         asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
2545         asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
2546
2547         /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
2548         /* Note sha256rnds2 has an implicit operand 'xmm0' */
2549
2550         asm volatile("sha256rnds2 %xmm4, %xmm1");
2551         asm volatile("sha256rnds2 %xmm7, %xmm2");
2552         asm volatile("sha256rnds2 (%eax), %xmm1");
2553         asm volatile("sha256rnds2 (0x12345678), %xmm1");
2554         asm volatile("sha256rnds2 (%eax), %xmm3");
2555         asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
2556         asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
2557         asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
2558         asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
2559         asm volatile("sha256rnds2 0x12(%eax), %xmm1");
2560         asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
2561         asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
2562         asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
2563         asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
2564         asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
2565         asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
2566         asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
2567         asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
2568         asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
2569         asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
2570         asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
2571
2572         /* sha256msg1 xmm2/m128, xmm1 */
2573
2574         asm volatile("sha256msg1 %xmm1, %xmm0");
2575         asm volatile("sha256msg1 %xmm7, %xmm2");
2576         asm volatile("sha256msg1 (%eax), %xmm0");
2577         asm volatile("sha256msg1 (0x12345678), %xmm0");
2578         asm volatile("sha256msg1 (%eax), %xmm3");
2579         asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
2580         asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
2581         asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
2582         asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
2583         asm volatile("sha256msg1 0x12(%eax), %xmm0");
2584         asm volatile("sha256msg1 0x12(%ebp), %xmm0");
2585         asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
2586         asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
2587         asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
2588         asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
2589         asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
2590         asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
2591         asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
2592         asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
2593         asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
2594         asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
2595
2596         /* sha256msg2 xmm2/m128, xmm1 */
2597
2598         asm volatile("sha256msg2 %xmm1, %xmm0");
2599         asm volatile("sha256msg2 %xmm7, %xmm2");
2600         asm volatile("sha256msg2 (%eax), %xmm0");
2601         asm volatile("sha256msg2 (0x12345678), %xmm0");
2602         asm volatile("sha256msg2 (%eax), %xmm3");
2603         asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
2604         asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
2605         asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
2606         asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
2607         asm volatile("sha256msg2 0x12(%eax), %xmm0");
2608         asm volatile("sha256msg2 0x12(%ebp), %xmm0");
2609         asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
2610         asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
2611         asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
2612         asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
2613         asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
2614         asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
2615         asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
2616         asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
2617         asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
2618         asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
2619
2620         /* clflushopt m8 */
2621
2622         asm volatile("clflushopt (%eax)");
2623         asm volatile("clflushopt (0x12345678)");
2624         asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
2625         /* Also check instructions in the same group encoding as clflushopt */
2626         asm volatile("clflush (%eax)");
2627         asm volatile("sfence");
2628
2629         /* clwb m8 */
2630
2631         asm volatile("clwb (%eax)");
2632         asm volatile("clwb (0x12345678)");
2633         asm volatile("clwb 0x12345678(%eax,%ecx,8)");
2634         /* Also check instructions in the same group encoding as clwb */
2635         asm volatile("xsaveopt (%eax)");
2636         asm volatile("mfence");
2637
2638         /* xsavec mem */
2639
2640         asm volatile("xsavec (%eax)");
2641         asm volatile("xsavec (0x12345678)");
2642         asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
2643
2644         /* xsaves mem */
2645
2646         asm volatile("xsaves (%eax)");
2647         asm volatile("xsaves (0x12345678)");
2648         asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
2649
2650         /* xrstors mem */
2651
2652         asm volatile("xrstors (%eax)");
2653         asm volatile("xrstors (0x12345678)");
2654         asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
2655
2656 #endif /* #ifndef __x86_64__ */
2657
2658         /* Following line is a marker for the awk script - do not change */
2659         asm volatile("rdtsc"); /* Stop here */
2660
2661         return 0;
2662 }