Linux Perf
insn-x86-dat-src.c
Go to the documentation of this file.
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 }
int main(void)