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