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