1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2d8b167f9SMatt Fleming /*
3d8b167f9SMatt Fleming  * This file contains instructions for testing by the test titled:
4d8b167f9SMatt Fleming  *
5d8b167f9SMatt Fleming  *         "Test x86 instruction decoder - new instructions"
6d8b167f9SMatt Fleming  *
7d8b167f9SMatt Fleming  * Note that the 'Expecting' comment lines are consumed by the
8d8b167f9SMatt Fleming  * gen-insn-x86-dat.awk script and have the format:
9d8b167f9SMatt Fleming  *
10d8b167f9SMatt Fleming  *         Expecting: <op> <branch> <rel>
11d8b167f9SMatt Fleming  *
12d8b167f9SMatt Fleming  * If this file is changed, remember to run the gen-insn-x86-dat.sh
13d8b167f9SMatt Fleming  * script and commit the result.
14d8b167f9SMatt Fleming  *
15d8b167f9SMatt Fleming  * Refer to insn-x86.c for more details.
16d8b167f9SMatt Fleming  */
17d8b167f9SMatt Fleming 
18d8b167f9SMatt Fleming int main(void)
19d8b167f9SMatt Fleming {
20d8b167f9SMatt Fleming 	/* Following line is a marker for the awk script - do not change */
21d8b167f9SMatt Fleming 	asm volatile("rdtsc"); /* Start here */
22d8b167f9SMatt Fleming 
236f6ef07fSAdrian Hunter 	/* Test fix for vcvtph2ps in x86-opcode-map.txt */
246f6ef07fSAdrian Hunter 
256f6ef07fSAdrian Hunter 	asm volatile("vcvtph2ps %xmm3,%ymm5");
266f6ef07fSAdrian Hunter 
27d8b167f9SMatt Fleming #ifdef __x86_64__
28d8b167f9SMatt Fleming 
296c4d0b41SAdrian Hunter 	/* AVX-512: Instructions with the same op codes as Mask Instructions  */
306c4d0b41SAdrian Hunter 
316c4d0b41SAdrian Hunter 	asm volatile("cmovno %rax,%rbx");
326c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%rax),%rcx");
336c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%rax),%cx");
346c4d0b41SAdrian Hunter 
356c4d0b41SAdrian Hunter 	asm volatile("cmove  %rax,%rbx");
366c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%rax),%rcx");
376c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%rax),%cx");
386c4d0b41SAdrian Hunter 
396c4d0b41SAdrian Hunter 	asm volatile("seto    0x12345678(%rax)");
406c4d0b41SAdrian Hunter 	asm volatile("setno   0x12345678(%rax)");
416c4d0b41SAdrian Hunter 	asm volatile("setb    0x12345678(%rax)");
426c4d0b41SAdrian Hunter 	asm volatile("setc    0x12345678(%rax)");
436c4d0b41SAdrian Hunter 	asm volatile("setnae  0x12345678(%rax)");
446c4d0b41SAdrian Hunter 	asm volatile("setae   0x12345678(%rax)");
456c4d0b41SAdrian Hunter 	asm volatile("setnb   0x12345678(%rax)");
466c4d0b41SAdrian Hunter 	asm volatile("setnc   0x12345678(%rax)");
476c4d0b41SAdrian Hunter 	asm volatile("sets    0x12345678(%rax)");
486c4d0b41SAdrian Hunter 	asm volatile("setns   0x12345678(%rax)");
496c4d0b41SAdrian Hunter 
506c4d0b41SAdrian Hunter 	/* AVX-512: Mask Instructions */
516c4d0b41SAdrian Hunter 
526c4d0b41SAdrian Hunter 	asm volatile("kandw  %k7,%k6,%k5");
536c4d0b41SAdrian Hunter 	asm volatile("kandq  %k7,%k6,%k5");
546c4d0b41SAdrian Hunter 	asm volatile("kandb  %k7,%k6,%k5");
556c4d0b41SAdrian Hunter 	asm volatile("kandd  %k7,%k6,%k5");
566c4d0b41SAdrian Hunter 
576c4d0b41SAdrian Hunter 	asm volatile("kandnw  %k7,%k6,%k5");
586c4d0b41SAdrian Hunter 	asm volatile("kandnq  %k7,%k6,%k5");
596c4d0b41SAdrian Hunter 	asm volatile("kandnb  %k7,%k6,%k5");
606c4d0b41SAdrian Hunter 	asm volatile("kandnd  %k7,%k6,%k5");
616c4d0b41SAdrian Hunter 
626c4d0b41SAdrian Hunter 	asm volatile("knotw  %k7,%k6");
636c4d0b41SAdrian Hunter 	asm volatile("knotq  %k7,%k6");
646c4d0b41SAdrian Hunter 	asm volatile("knotb  %k7,%k6");
656c4d0b41SAdrian Hunter 	asm volatile("knotd  %k7,%k6");
666c4d0b41SAdrian Hunter 
676c4d0b41SAdrian Hunter 	asm volatile("korw  %k7,%k6,%k5");
686c4d0b41SAdrian Hunter 	asm volatile("korq  %k7,%k6,%k5");
696c4d0b41SAdrian Hunter 	asm volatile("korb  %k7,%k6,%k5");
706c4d0b41SAdrian Hunter 	asm volatile("kord  %k7,%k6,%k5");
716c4d0b41SAdrian Hunter 
726c4d0b41SAdrian Hunter 	asm volatile("kxnorw  %k7,%k6,%k5");
736c4d0b41SAdrian Hunter 	asm volatile("kxnorq  %k7,%k6,%k5");
746c4d0b41SAdrian Hunter 	asm volatile("kxnorb  %k7,%k6,%k5");
756c4d0b41SAdrian Hunter 	asm volatile("kxnord  %k7,%k6,%k5");
766c4d0b41SAdrian Hunter 
776c4d0b41SAdrian Hunter 	asm volatile("kxorw  %k7,%k6,%k5");
786c4d0b41SAdrian Hunter 	asm volatile("kxorq  %k7,%k6,%k5");
796c4d0b41SAdrian Hunter 	asm volatile("kxorb  %k7,%k6,%k5");
806c4d0b41SAdrian Hunter 	asm volatile("kxord  %k7,%k6,%k5");
816c4d0b41SAdrian Hunter 
826c4d0b41SAdrian Hunter 	asm volatile("kaddw  %k7,%k6,%k5");
836c4d0b41SAdrian Hunter 	asm volatile("kaddq  %k7,%k6,%k5");
846c4d0b41SAdrian Hunter 	asm volatile("kaddb  %k7,%k6,%k5");
856c4d0b41SAdrian Hunter 	asm volatile("kaddd  %k7,%k6,%k5");
866c4d0b41SAdrian Hunter 
876c4d0b41SAdrian Hunter 	asm volatile("kunpckbw %k7,%k6,%k5");
886c4d0b41SAdrian Hunter 	asm volatile("kunpckwd %k7,%k6,%k5");
896c4d0b41SAdrian Hunter 	asm volatile("kunpckdq %k7,%k6,%k5");
906c4d0b41SAdrian Hunter 
916c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k6,%k5");
926c4d0b41SAdrian Hunter 	asm volatile("kmovw  (%rcx),%k5");
936c4d0b41SAdrian Hunter 	asm volatile("kmovw  0x123(%rax,%r14,8),%k5");
946c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,(%rcx)");
956c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,0x123(%rax,%r14,8)");
966c4d0b41SAdrian Hunter 	asm volatile("kmovw  %eax,%k5");
976c4d0b41SAdrian Hunter 	asm volatile("kmovw  %ebp,%k5");
986c4d0b41SAdrian Hunter 	asm volatile("kmovw  %r13d,%k5");
996c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%eax");
1006c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%ebp");
1016c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%r13d");
1026c4d0b41SAdrian Hunter 
1036c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k6,%k5");
1046c4d0b41SAdrian Hunter 	asm volatile("kmovq  (%rcx),%k5");
1056c4d0b41SAdrian Hunter 	asm volatile("kmovq  0x123(%rax,%r14,8),%k5");
1066c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,(%rcx)");
1076c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,0x123(%rax,%r14,8)");
1086c4d0b41SAdrian Hunter 	asm volatile("kmovq  %rax,%k5");
1096c4d0b41SAdrian Hunter 	asm volatile("kmovq  %rbp,%k5");
1106c4d0b41SAdrian Hunter 	asm volatile("kmovq  %r13,%k5");
1116c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,%rax");
1126c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,%rbp");
1136c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,%r13");
1146c4d0b41SAdrian Hunter 
1156c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k6,%k5");
1166c4d0b41SAdrian Hunter 	asm volatile("kmovb  (%rcx),%k5");
1176c4d0b41SAdrian Hunter 	asm volatile("kmovb  0x123(%rax,%r14,8),%k5");
1186c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,(%rcx)");
1196c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,0x123(%rax,%r14,8)");
1206c4d0b41SAdrian Hunter 	asm volatile("kmovb  %eax,%k5");
1216c4d0b41SAdrian Hunter 	asm volatile("kmovb  %ebp,%k5");
1226c4d0b41SAdrian Hunter 	asm volatile("kmovb  %r13d,%k5");
1236c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%eax");
1246c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%ebp");
1256c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%r13d");
1266c4d0b41SAdrian Hunter 
1276c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k6,%k5");
1286c4d0b41SAdrian Hunter 	asm volatile("kmovd  (%rcx),%k5");
1296c4d0b41SAdrian Hunter 	asm volatile("kmovd  0x123(%rax,%r14,8),%k5");
1306c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,(%rcx)");
1316c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,0x123(%rax,%r14,8)");
1326c4d0b41SAdrian Hunter 	asm volatile("kmovd  %eax,%k5");
1336c4d0b41SAdrian Hunter 	asm volatile("kmovd  %ebp,%k5");
1346c4d0b41SAdrian Hunter 	asm volatile("kmovd  %r13d,%k5");
1356c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%eax");
1366c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%ebp");
1376c4d0b41SAdrian Hunter 	asm volatile("kmovd %k5,%r13d");
1386c4d0b41SAdrian Hunter 
1396c4d0b41SAdrian Hunter 	asm volatile("kortestw %k6,%k5");
1406c4d0b41SAdrian Hunter 	asm volatile("kortestq %k6,%k5");
1416c4d0b41SAdrian Hunter 	asm volatile("kortestb %k6,%k5");
1426c4d0b41SAdrian Hunter 	asm volatile("kortestd %k6,%k5");
1436c4d0b41SAdrian Hunter 
1446c4d0b41SAdrian Hunter 	asm volatile("ktestw %k6,%k5");
1456c4d0b41SAdrian Hunter 	asm volatile("ktestq %k6,%k5");
1466c4d0b41SAdrian Hunter 	asm volatile("ktestb %k6,%k5");
1476c4d0b41SAdrian Hunter 	asm volatile("ktestd %k6,%k5");
1486c4d0b41SAdrian Hunter 
1496c4d0b41SAdrian Hunter 	asm volatile("kshiftrw $0x12,%k6,%k5");
1506c4d0b41SAdrian Hunter 	asm volatile("kshiftrq $0x5b,%k6,%k5");
1516c4d0b41SAdrian Hunter 	asm volatile("kshiftlw $0x12,%k6,%k5");
1526c4d0b41SAdrian Hunter 	asm volatile("kshiftlq $0x5b,%k6,%k5");
1536c4d0b41SAdrian Hunter 
1546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 5b */
1556c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2ps %xmm5,%xmm6");
1566c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2ps %zmm29,%ymm6{%k7}");
1576c4d0b41SAdrian Hunter 	asm volatile("vcvtps2dq %xmm5,%xmm6");
1586c4d0b41SAdrian Hunter 	asm volatile("vcvttps2dq %xmm5,%xmm6");
1596c4d0b41SAdrian Hunter 
1606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 6f */
1616c4d0b41SAdrian Hunter 
1626c4d0b41SAdrian Hunter 	asm volatile("movq   %mm0,%mm4");
1636c4d0b41SAdrian Hunter 	asm volatile("vmovdqa %ymm4,%ymm6");
1646c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32 %zmm25,%zmm26");
1656c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64 %zmm25,%zmm26");
1666c4d0b41SAdrian Hunter 	asm volatile("vmovdqu %ymm4,%ymm6");
1676c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32 %zmm29,%zmm30");
1686c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64 %zmm25,%zmm26");
1696c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8 %zmm29,%zmm30");
1706c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16 %zmm25,%zmm26");
1716c4d0b41SAdrian Hunter 
1726c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 78 */
1736c4d0b41SAdrian Hunter 
1746c4d0b41SAdrian Hunter 	asm volatile("vmread %rax,%rbx");
1756c4d0b41SAdrian Hunter 	asm volatile("vcvttps2udq %zmm25,%zmm26");
1766c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2udq %zmm29,%ymm6{%k7}");
1776c4d0b41SAdrian Hunter 	asm volatile("vcvttsd2usi %xmm6,%rax");
1786c4d0b41SAdrian Hunter 	asm volatile("vcvttss2usi %xmm6,%rax");
1796c4d0b41SAdrian Hunter 	asm volatile("vcvttps2uqq %ymm5,%zmm26{%k7}");
1806c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2uqq %zmm29,%zmm30");
1816c4d0b41SAdrian Hunter 
1826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 79 */
1836c4d0b41SAdrian Hunter 
1846c4d0b41SAdrian Hunter 	asm volatile("vmwrite %rax,%rbx");
1856c4d0b41SAdrian Hunter 	asm volatile("vcvtps2udq %zmm25,%zmm26");
1866c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2udq %zmm29,%ymm6{%k7}");
1876c4d0b41SAdrian Hunter 	asm volatile("vcvtsd2usi %xmm6,%rax");
1886c4d0b41SAdrian Hunter 	asm volatile("vcvtss2usi %xmm6,%rax");
1896c4d0b41SAdrian Hunter 	asm volatile("vcvtps2uqq %ymm5,%zmm26{%k7}");
1906c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2uqq %zmm29,%zmm30");
1916c4d0b41SAdrian Hunter 
1926c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7a */
1936c4d0b41SAdrian Hunter 
1946c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2pd %ymm5,%zmm29{%k7}");
1956c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2pd %zmm25,%zmm26");
1966c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2ps %zmm29,%zmm30");
1976c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2ps %zmm25,%ymm26{%k7}");
1986c4d0b41SAdrian Hunter 	asm volatile("vcvttps2qq %ymm25,%zmm26{%k7}");
1996c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2qq %zmm29,%zmm30");
2006c4d0b41SAdrian Hunter 
2016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7b */
2026c4d0b41SAdrian Hunter 
2036c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
2046c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
2056c4d0b41SAdrian Hunter 	asm volatile("vcvtps2qq %ymm5,%zmm26{%k7}");
2066c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2qq %zmm29,%zmm30");
2076c4d0b41SAdrian Hunter 
2086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7f */
2096c4d0b41SAdrian Hunter 
2106c4d0b41SAdrian Hunter 	asm volatile("movq.s  %mm0,%mm4");
2116c4d0b41SAdrian Hunter 	asm volatile("vmovdqa %ymm8,%ymm6");
2126c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32.s %zmm25,%zmm26");
2136c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64.s %zmm25,%zmm26");
2146c4d0b41SAdrian Hunter 	asm volatile("vmovdqu %ymm8,%ymm6");
2156c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32.s %zmm25,%zmm26");
2166c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64.s %zmm25,%zmm26");
2176c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8.s %zmm30,(%rcx)");
2186c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16.s %zmm25,%zmm26");
2196c4d0b41SAdrian Hunter 
2206c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f db */
2216c4d0b41SAdrian Hunter 
2226c4d0b41SAdrian Hunter 	asm volatile("pand  %mm1,%mm2");
2236c4d0b41SAdrian Hunter 	asm volatile("pand  %xmm1,%xmm2");
2246c4d0b41SAdrian Hunter 	asm volatile("vpand  %ymm4,%ymm6,%ymm2");
2256c4d0b41SAdrian Hunter 	asm volatile("vpandd %zmm24,%zmm25,%zmm26");
2266c4d0b41SAdrian Hunter 	asm volatile("vpandq %zmm24,%zmm25,%zmm26");
2276c4d0b41SAdrian Hunter 
2286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f df */
2296c4d0b41SAdrian Hunter 
2306c4d0b41SAdrian Hunter 	asm volatile("pandn  %mm1,%mm2");
2316c4d0b41SAdrian Hunter 	asm volatile("pandn  %xmm1,%xmm2");
2326c4d0b41SAdrian Hunter 	asm volatile("vpandn %ymm4,%ymm6,%ymm2");
2336c4d0b41SAdrian Hunter 	asm volatile("vpandnd %zmm24,%zmm25,%zmm26");
2346c4d0b41SAdrian Hunter 	asm volatile("vpandnq %zmm24,%zmm25,%zmm26");
2356c4d0b41SAdrian Hunter 
2366c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f e6 */
2376c4d0b41SAdrian Hunter 
2386c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2dq %xmm1,%xmm2");
2396c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %xmm5,%xmm6");
2406c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %ymm5,%zmm26{%k7}");
2416c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2pd %zmm25,%zmm26");
2426c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2dq %xmm1,%xmm2");
2436c4d0b41SAdrian Hunter 
2446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f eb */
2456c4d0b41SAdrian Hunter 
2466c4d0b41SAdrian Hunter 	asm volatile("por   %mm4,%mm6");
2476c4d0b41SAdrian Hunter 	asm volatile("vpor   %ymm4,%ymm6,%ymm2");
2486c4d0b41SAdrian Hunter 	asm volatile("vpord  %zmm24,%zmm25,%zmm26");
2496c4d0b41SAdrian Hunter 	asm volatile("vporq  %zmm24,%zmm25,%zmm26");
2506c4d0b41SAdrian Hunter 
2516c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f ef */
2526c4d0b41SAdrian Hunter 
2536c4d0b41SAdrian Hunter 	asm volatile("pxor   %mm4,%mm6");
2546c4d0b41SAdrian Hunter 	asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
2556c4d0b41SAdrian Hunter 	asm volatile("vpxord %zmm24,%zmm25,%zmm26");
2566c4d0b41SAdrian Hunter 	asm volatile("vpxorq %zmm24,%zmm25,%zmm26");
2576c4d0b41SAdrian Hunter 
2586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 10 */
2596c4d0b41SAdrian Hunter 
2606c4d0b41SAdrian Hunter 	asm volatile("pblendvb %xmm1,%xmm0");
2616c4d0b41SAdrian Hunter 	asm volatile("vpsrlvw %zmm27,%zmm28,%zmm29");
2626c4d0b41SAdrian Hunter 	asm volatile("vpmovuswb %zmm28,%ymm6{%k7}");
2636c4d0b41SAdrian Hunter 
2646c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 11 */
2656c4d0b41SAdrian Hunter 
2666c4d0b41SAdrian Hunter 	asm volatile("vpmovusdb %zmm28,%xmm6{%k7}");
2676c4d0b41SAdrian Hunter 	asm volatile("vpsravw %zmm27,%zmm28,%zmm29");
2686c4d0b41SAdrian Hunter 
2696c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 12 */
2706c4d0b41SAdrian Hunter 
2716c4d0b41SAdrian Hunter 	asm volatile("vpmovusqb %zmm27,%xmm6{%k7}");
2726c4d0b41SAdrian Hunter 	asm volatile("vpsllvw %zmm27,%zmm28,%zmm29");
2736c4d0b41SAdrian Hunter 
2746c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 13 */
2756c4d0b41SAdrian Hunter 
2766c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %xmm3,%ymm5");
2776c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %ymm5,%zmm27{%k7}");
2786c4d0b41SAdrian Hunter 	asm volatile("vpmovusdw %zmm27,%ymm6{%k7}");
2796c4d0b41SAdrian Hunter 
2806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 14 */
2816c4d0b41SAdrian Hunter 
2826c4d0b41SAdrian Hunter 	asm volatile("blendvps %xmm1,%xmm0");
2836c4d0b41SAdrian Hunter 	asm volatile("vpmovusqw %zmm27,%xmm6{%k7}");
2846c4d0b41SAdrian Hunter 	asm volatile("vprorvd %zmm27,%zmm28,%zmm29");
2856c4d0b41SAdrian Hunter 	asm volatile("vprorvq %zmm27,%zmm28,%zmm29");
2866c4d0b41SAdrian Hunter 
2876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 15 */
2886c4d0b41SAdrian Hunter 
2896c4d0b41SAdrian Hunter 	asm volatile("blendvpd %xmm1,%xmm0");
2906c4d0b41SAdrian Hunter 	asm volatile("vpmovusqd %zmm27,%ymm6{%k7}");
2916c4d0b41SAdrian Hunter 	asm volatile("vprolvd %zmm27,%zmm28,%zmm29");
2926c4d0b41SAdrian Hunter 	asm volatile("vprolvq %zmm27,%zmm28,%zmm29");
2936c4d0b41SAdrian Hunter 
2946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 16 */
2956c4d0b41SAdrian Hunter 
2966c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2");
2976c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm24,%ymm26,%ymm22{%k7}");
2986c4d0b41SAdrian Hunter 	asm volatile("vpermpd %ymm24,%ymm26,%ymm22{%k7}");
2996c4d0b41SAdrian Hunter 
3006c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 19 */
3016c4d0b41SAdrian Hunter 
3026c4d0b41SAdrian Hunter 	asm volatile("vbroadcastsd %xmm4,%ymm6");
3036c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x2 %xmm27,%zmm26");
3046c4d0b41SAdrian Hunter 
3056c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1a */
3066c4d0b41SAdrian Hunter 
3076c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf128 (%rcx),%ymm4");
3086c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x4 (%rcx),%zmm26");
3096c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x2 (%rcx),%zmm26");
3106c4d0b41SAdrian Hunter 
3116c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1b */
3126c4d0b41SAdrian Hunter 
3136c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x8 (%rcx),%zmm27");
3146c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x4 (%rcx),%zmm26");
3156c4d0b41SAdrian Hunter 
3166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1f */
3176c4d0b41SAdrian Hunter 
3186c4d0b41SAdrian Hunter 	asm volatile("vpabsq %zmm27,%zmm28");
3196c4d0b41SAdrian Hunter 
3206c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 20 */
3216c4d0b41SAdrian Hunter 
3226c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbw %xmm4,%xmm5");
3236c4d0b41SAdrian Hunter 	asm volatile("vpmovswb %zmm27,%ymm6{%k7}");
3246c4d0b41SAdrian Hunter 
3256c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 21 */
3266c4d0b41SAdrian Hunter 
3276c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbd %xmm4,%ymm6");
3286c4d0b41SAdrian Hunter 	asm volatile("vpmovsdb %zmm27,%xmm6{%k7}");
3296c4d0b41SAdrian Hunter 
3306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 22 */
3316c4d0b41SAdrian Hunter 
3326c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbq %xmm4,%ymm4");
3336c4d0b41SAdrian Hunter 	asm volatile("vpmovsqb %zmm27,%xmm6{%k7}");
3346c4d0b41SAdrian Hunter 
3356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 23 */
3366c4d0b41SAdrian Hunter 
3376c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwd %xmm4,%ymm4");
3386c4d0b41SAdrian Hunter 	asm volatile("vpmovsdw %zmm27,%ymm6{%k7}");
3396c4d0b41SAdrian Hunter 
3406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 24 */
3416c4d0b41SAdrian Hunter 
3426c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwq %xmm4,%ymm6");
3436c4d0b41SAdrian Hunter 	asm volatile("vpmovsqw %zmm27,%xmm6{%k7}");
3446c4d0b41SAdrian Hunter 
3456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 25 */
3466c4d0b41SAdrian Hunter 
3476c4d0b41SAdrian Hunter 	asm volatile("vpmovsxdq %xmm4,%ymm4");
3486c4d0b41SAdrian Hunter 	asm volatile("vpmovsqd %zmm27,%ymm6{%k7}");
3496c4d0b41SAdrian Hunter 
3506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 26 */
3516c4d0b41SAdrian Hunter 
3526c4d0b41SAdrian Hunter 	asm volatile("vptestmb %zmm27,%zmm28,%k5");
3536c4d0b41SAdrian Hunter 	asm volatile("vptestmw %zmm27,%zmm28,%k5");
3546c4d0b41SAdrian Hunter 	asm volatile("vptestnmb %zmm26,%zmm27,%k5");
3556c4d0b41SAdrian Hunter 	asm volatile("vptestnmw %zmm26,%zmm27,%k5");
3566c4d0b41SAdrian Hunter 
3576c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 27 */
3586c4d0b41SAdrian Hunter 
3596c4d0b41SAdrian Hunter 	asm volatile("vptestmd %zmm27,%zmm28,%k5");
3606c4d0b41SAdrian Hunter 	asm volatile("vptestmq %zmm27,%zmm28,%k5");
3616c4d0b41SAdrian Hunter 	asm volatile("vptestnmd %zmm26,%zmm27,%k5");
3626c4d0b41SAdrian Hunter 	asm volatile("vptestnmq %zmm26,%zmm27,%k5");
3636c4d0b41SAdrian Hunter 
3646c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 28 */
3656c4d0b41SAdrian Hunter 
3666c4d0b41SAdrian Hunter 	asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
3676c4d0b41SAdrian Hunter 	asm volatile("vpmovm2b %k5,%zmm28");
3686c4d0b41SAdrian Hunter 	asm volatile("vpmovm2w %k5,%zmm28");
3696c4d0b41SAdrian Hunter 
3706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 29 */
3716c4d0b41SAdrian Hunter 
3726c4d0b41SAdrian Hunter 	asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
3736c4d0b41SAdrian Hunter 	asm volatile("vpmovb2m %zmm28,%k5");
3746c4d0b41SAdrian Hunter 	asm volatile("vpmovw2m %zmm28,%k5");
3756c4d0b41SAdrian Hunter 
3766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2a */
3776c4d0b41SAdrian Hunter 
3786c4d0b41SAdrian Hunter 	asm volatile("vmovntdqa (%rcx),%ymm4");
3796c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmb2q %k6,%zmm30");
3806c4d0b41SAdrian Hunter 
3816c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2c */
3826c4d0b41SAdrian Hunter 
3836c4d0b41SAdrian Hunter 	asm volatile("vmaskmovps (%rcx),%ymm4,%ymm6");
3846c4d0b41SAdrian Hunter 	asm volatile("vscalefps %zmm24,%zmm25,%zmm26");
3856c4d0b41SAdrian Hunter 	asm volatile("vscalefpd %zmm24,%zmm25,%zmm26");
3866c4d0b41SAdrian Hunter 
3876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2d */
3886c4d0b41SAdrian Hunter 
3896c4d0b41SAdrian Hunter 	asm volatile("vmaskmovpd (%rcx),%ymm4,%ymm6");
3906c4d0b41SAdrian Hunter 	asm volatile("vscalefss %xmm24,%xmm25,%xmm26{%k7}");
3916c4d0b41SAdrian Hunter 	asm volatile("vscalefsd %xmm24,%xmm25,%xmm26{%k7}");
3926c4d0b41SAdrian Hunter 
3936c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 30 */
3946c4d0b41SAdrian Hunter 
3956c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbw %xmm4,%ymm4");
3966c4d0b41SAdrian Hunter 	asm volatile("vpmovwb %zmm27,%ymm6{%k7}");
3976c4d0b41SAdrian Hunter 
3986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 31 */
3996c4d0b41SAdrian Hunter 
4006c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbd %xmm4,%ymm6");
4016c4d0b41SAdrian Hunter 	asm volatile("vpmovdb %zmm27,%xmm6{%k7}");
4026c4d0b41SAdrian Hunter 
4036c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 32 */
4046c4d0b41SAdrian Hunter 
4056c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbq %xmm4,%ymm4");
4066c4d0b41SAdrian Hunter 	asm volatile("vpmovqb %zmm27,%xmm6{%k7}");
4076c4d0b41SAdrian Hunter 
4086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 33 */
4096c4d0b41SAdrian Hunter 
4106c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwd %xmm4,%ymm4");
4116c4d0b41SAdrian Hunter 	asm volatile("vpmovdw %zmm27,%ymm6{%k7}");
4126c4d0b41SAdrian Hunter 
4136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 34 */
4146c4d0b41SAdrian Hunter 
4156c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwq %xmm4,%ymm6");
4166c4d0b41SAdrian Hunter 	asm volatile("vpmovqw %zmm27,%xmm6{%k7}");
4176c4d0b41SAdrian Hunter 
4186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 35 */
4196c4d0b41SAdrian Hunter 
4206c4d0b41SAdrian Hunter 	asm volatile("vpmovzxdq %xmm4,%ymm4");
4216c4d0b41SAdrian Hunter 	asm volatile("vpmovqd %zmm27,%ymm6{%k7}");
4226c4d0b41SAdrian Hunter 
4236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 38 */
4246c4d0b41SAdrian Hunter 
4256c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2");
4266c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm24,%ymm26,%ymm22{%k7}");
4276c4d0b41SAdrian Hunter 	asm volatile("vpermq %ymm24,%ymm26,%ymm22{%k7}");
4286c4d0b41SAdrian Hunter 
4296c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 38 */
4306c4d0b41SAdrian Hunter 
4316c4d0b41SAdrian Hunter 	asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
4326c4d0b41SAdrian Hunter 	asm volatile("vpmovm2d %k5,%zmm28");
4336c4d0b41SAdrian Hunter 	asm volatile("vpmovm2q %k5,%zmm28");
4346c4d0b41SAdrian Hunter 
4356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 39 */
4366c4d0b41SAdrian Hunter 
4376c4d0b41SAdrian Hunter 	asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
4386c4d0b41SAdrian Hunter 	asm volatile("vpminsd %zmm24,%zmm25,%zmm26");
4396c4d0b41SAdrian Hunter 	asm volatile("vpminsq %zmm24,%zmm25,%zmm26");
4406c4d0b41SAdrian Hunter 	asm volatile("vpmovd2m %zmm28,%k5");
4416c4d0b41SAdrian Hunter 	asm volatile("vpmovq2m %zmm28,%k5");
4426c4d0b41SAdrian Hunter 
4436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3a */
4446c4d0b41SAdrian Hunter 
4456c4d0b41SAdrian Hunter 	asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
4466c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmw2d %k6,%zmm28");
4476c4d0b41SAdrian Hunter 
4486c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3b */
4496c4d0b41SAdrian Hunter 
4506c4d0b41SAdrian Hunter 	asm volatile("vpminud %ymm4,%ymm6,%ymm2");
4516c4d0b41SAdrian Hunter 	asm volatile("vpminud %zmm24,%zmm25,%zmm26");
4526c4d0b41SAdrian Hunter 	asm volatile("vpminuq %zmm24,%zmm25,%zmm26");
4536c4d0b41SAdrian Hunter 
4546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3d */
4556c4d0b41SAdrian Hunter 
4566c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
4576c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %zmm24,%zmm25,%zmm26");
4586c4d0b41SAdrian Hunter 	asm volatile("vpmaxsq %zmm24,%zmm25,%zmm26");
4596c4d0b41SAdrian Hunter 
4606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3f */
4616c4d0b41SAdrian Hunter 
4626c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
4636c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %zmm24,%zmm25,%zmm26");
4646c4d0b41SAdrian Hunter 	asm volatile("vpmaxuq %zmm24,%zmm25,%zmm26");
4656c4d0b41SAdrian Hunter 
4666c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 42 */
4676c4d0b41SAdrian Hunter 
4686c4d0b41SAdrian Hunter 	asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
4696c4d0b41SAdrian Hunter 	asm volatile("vpmulld %zmm24,%zmm25,%zmm26");
4706c4d0b41SAdrian Hunter 	asm volatile("vpmullq %zmm24,%zmm25,%zmm26");
4716c4d0b41SAdrian Hunter 
4726c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 42 */
4736c4d0b41SAdrian Hunter 
4746c4d0b41SAdrian Hunter 	asm volatile("vgetexpps %zmm25,%zmm26");
4756c4d0b41SAdrian Hunter 	asm volatile("vgetexppd %zmm27,%zmm28");
4766c4d0b41SAdrian Hunter 
4776c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 43 */
4786c4d0b41SAdrian Hunter 
4796c4d0b41SAdrian Hunter 	asm volatile("vgetexpss %xmm24,%xmm25,%xmm26{%k7}");
4806c4d0b41SAdrian Hunter 	asm volatile("vgetexpsd %xmm28,%xmm29,%xmm30{%k7}");
4816c4d0b41SAdrian Hunter 
4826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 44 */
4836c4d0b41SAdrian Hunter 
4846c4d0b41SAdrian Hunter 	asm volatile("vplzcntd %zmm27,%zmm28");
4856c4d0b41SAdrian Hunter 	asm volatile("vplzcntq %zmm27,%zmm28");
4866c4d0b41SAdrian Hunter 
4876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 46 */
4886c4d0b41SAdrian Hunter 
4896c4d0b41SAdrian Hunter 	asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
4906c4d0b41SAdrian Hunter 	asm volatile("vpsravd %zmm24,%zmm25,%zmm26");
4916c4d0b41SAdrian Hunter 	asm volatile("vpsravq %zmm24,%zmm25,%zmm26");
4926c4d0b41SAdrian Hunter 
4936c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4c */
4946c4d0b41SAdrian Hunter 
4956c4d0b41SAdrian Hunter 	asm volatile("vrcp14ps %zmm25,%zmm26");
4966c4d0b41SAdrian Hunter 	asm volatile("vrcp14pd %zmm27,%zmm28");
4976c4d0b41SAdrian Hunter 
4986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4d */
4996c4d0b41SAdrian Hunter 
5006c4d0b41SAdrian Hunter 	asm volatile("vrcp14ss %xmm24,%xmm25,%xmm26{%k7}");
5016c4d0b41SAdrian Hunter 	asm volatile("vrcp14sd %xmm24,%xmm25,%xmm26{%k7}");
5026c4d0b41SAdrian Hunter 
5036c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4e */
5046c4d0b41SAdrian Hunter 
5056c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ps %zmm25,%zmm26");
5066c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14pd %zmm27,%zmm28");
5076c4d0b41SAdrian Hunter 
5086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4f */
5096c4d0b41SAdrian Hunter 
5106c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ss %xmm24,%xmm25,%xmm26{%k7}");
5116c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14sd %xmm24,%xmm25,%xmm26{%k7}");
5126c4d0b41SAdrian Hunter 
5136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 59 */
5146c4d0b41SAdrian Hunter 
5156c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %xmm4,%xmm6");
5166c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x2 %xmm27,%zmm26");
5176c4d0b41SAdrian Hunter 
5186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5a */
5196c4d0b41SAdrian Hunter 
5206c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti128 (%rcx),%ymm4");
5216c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x4 (%rcx),%zmm26");
5226c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x2 (%rcx),%zmm26");
5236c4d0b41SAdrian Hunter 
5246c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5b */
5256c4d0b41SAdrian Hunter 
5266c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x8 (%rcx),%zmm28");
5276c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x4 (%rcx),%zmm26");
5286c4d0b41SAdrian Hunter 
5296c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 64 */
5306c4d0b41SAdrian Hunter 
5316c4d0b41SAdrian Hunter 	asm volatile("vpblendmd %zmm26,%zmm27,%zmm28");
5326c4d0b41SAdrian Hunter 	asm volatile("vpblendmq %zmm26,%zmm27,%zmm28");
5336c4d0b41SAdrian Hunter 
5346c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 65 */
5356c4d0b41SAdrian Hunter 
5366c4d0b41SAdrian Hunter 	asm volatile("vblendmps %zmm24,%zmm25,%zmm26");
5376c4d0b41SAdrian Hunter 	asm volatile("vblendmpd %zmm26,%zmm27,%zmm28");
5386c4d0b41SAdrian Hunter 
5396c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 66 */
5406c4d0b41SAdrian Hunter 
5416c4d0b41SAdrian Hunter 	asm volatile("vpblendmb %zmm26,%zmm27,%zmm28");
5426c4d0b41SAdrian Hunter 	asm volatile("vpblendmw %zmm26,%zmm27,%zmm28");
5436c4d0b41SAdrian Hunter 
5446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 75 */
5456c4d0b41SAdrian Hunter 
5466c4d0b41SAdrian Hunter 	asm volatile("vpermi2b %zmm24,%zmm25,%zmm26");
5476c4d0b41SAdrian Hunter 	asm volatile("vpermi2w %zmm26,%zmm27,%zmm28");
5486c4d0b41SAdrian Hunter 
5496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 76 */
5506c4d0b41SAdrian Hunter 
5516c4d0b41SAdrian Hunter 	asm volatile("vpermi2d %zmm26,%zmm27,%zmm28");
5526c4d0b41SAdrian Hunter 	asm volatile("vpermi2q %zmm26,%zmm27,%zmm28");
5536c4d0b41SAdrian Hunter 
5546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 77 */
5556c4d0b41SAdrian Hunter 
5566c4d0b41SAdrian Hunter 	asm volatile("vpermi2ps %zmm26,%zmm27,%zmm28");
5576c4d0b41SAdrian Hunter 	asm volatile("vpermi2pd %zmm26,%zmm27,%zmm28");
5586c4d0b41SAdrian Hunter 
5596c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7a */
5606c4d0b41SAdrian Hunter 
5616c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastb %eax,%xmm30");
5626c4d0b41SAdrian Hunter 
5636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7b */
5646c4d0b41SAdrian Hunter 
5656c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastw %eax,%xmm30");
5666c4d0b41SAdrian Hunter 
5676c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7c */
5686c4d0b41SAdrian Hunter 
5696c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastd %eax,%xmm30");
5706c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %rax,%zmm30");
5716c4d0b41SAdrian Hunter 
5726c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7d */
5736c4d0b41SAdrian Hunter 
5746c4d0b41SAdrian Hunter 	asm volatile("vpermt2b %zmm26,%zmm27,%zmm28");
5756c4d0b41SAdrian Hunter 	asm volatile("vpermt2w %zmm26,%zmm27,%zmm28");
5766c4d0b41SAdrian Hunter 
5776c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7e */
5786c4d0b41SAdrian Hunter 
5796c4d0b41SAdrian Hunter 	asm volatile("vpermt2d %zmm26,%zmm27,%zmm28");
5806c4d0b41SAdrian Hunter 	asm volatile("vpermt2q %zmm26,%zmm27,%zmm28");
5816c4d0b41SAdrian Hunter 
5826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7f */
5836c4d0b41SAdrian Hunter 
5846c4d0b41SAdrian Hunter 	asm volatile("vpermt2ps %zmm26,%zmm27,%zmm28");
5856c4d0b41SAdrian Hunter 	asm volatile("vpermt2pd %zmm26,%zmm27,%zmm28");
5866c4d0b41SAdrian Hunter 
5876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 83 */
5886c4d0b41SAdrian Hunter 
5896c4d0b41SAdrian Hunter 	asm volatile("vpmultishiftqb %zmm26,%zmm27,%zmm28");
5906c4d0b41SAdrian Hunter 
5916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 88 */
5926c4d0b41SAdrian Hunter 
5936c4d0b41SAdrian Hunter 	asm volatile("vexpandps (%rcx),%zmm26");
5946c4d0b41SAdrian Hunter 	asm volatile("vexpandpd (%rcx),%zmm28");
5956c4d0b41SAdrian Hunter 
5966c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 89 */
5976c4d0b41SAdrian Hunter 
5986c4d0b41SAdrian Hunter 	asm volatile("vpexpandd (%rcx),%zmm28");
5996c4d0b41SAdrian Hunter 	asm volatile("vpexpandq (%rcx),%zmm26");
6006c4d0b41SAdrian Hunter 
6016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8a */
6026c4d0b41SAdrian Hunter 
6036c4d0b41SAdrian Hunter 	asm volatile("vcompressps %zmm28,(%rcx)");
6046c4d0b41SAdrian Hunter 	asm volatile("vcompresspd %zmm28,(%rcx)");
6056c4d0b41SAdrian Hunter 
6066c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8b */
6076c4d0b41SAdrian Hunter 
6086c4d0b41SAdrian Hunter 	asm volatile("vpcompressd %zmm28,(%rcx)");
6096c4d0b41SAdrian Hunter 	asm volatile("vpcompressq %zmm26,(%rcx)");
6106c4d0b41SAdrian Hunter 
6116c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8d */
6126c4d0b41SAdrian Hunter 
6136c4d0b41SAdrian Hunter 	asm volatile("vpermb %zmm26,%zmm27,%zmm28");
6146c4d0b41SAdrian Hunter 	asm volatile("vpermw %zmm26,%zmm27,%zmm28");
6156c4d0b41SAdrian Hunter 
6166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 90 */
6176c4d0b41SAdrian Hunter 
6186c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
6196c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq %xmm2,0x04(%rbp,%xmm7,2),%xmm1");
6206c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
6216c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq 0x7b(%rbp,%ymm27,8),%zmm26{%k1}");
6226c4d0b41SAdrian Hunter 
6236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 91 */
6246c4d0b41SAdrian Hunter 
6256c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
6266c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
6276c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd 0x7b(%rbp,%zmm27,8),%ymm26{%k1}");
6286c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
6296c4d0b41SAdrian Hunter 
6306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a0 */
6316c4d0b41SAdrian Hunter 
6326c4d0b41SAdrian Hunter 	asm volatile("vpscatterdd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
6336c4d0b41SAdrian Hunter 	asm volatile("vpscatterdq %zmm26,0x7b(%rbp,%ymm27,8){%k1}");
6346c4d0b41SAdrian Hunter 
6356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a1 */
6366c4d0b41SAdrian Hunter 
6376c4d0b41SAdrian Hunter 	asm volatile("vpscatterqd %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
6386c4d0b41SAdrian Hunter 	asm volatile("vpscatterqq %ymm6,0x7b(%rbp,%ymm27,8){%k1}");
6396c4d0b41SAdrian Hunter 
6406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a2 */
6416c4d0b41SAdrian Hunter 
6426c4d0b41SAdrian Hunter 	asm volatile("vscatterdps %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
6436c4d0b41SAdrian Hunter 	asm volatile("vscatterdpd %zmm28,0x7b(%rbp,%ymm27,8){%k1}");
6446c4d0b41SAdrian Hunter 
6456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a3 */
6466c4d0b41SAdrian Hunter 
6476c4d0b41SAdrian Hunter 	asm volatile("vscatterqps %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
6486c4d0b41SAdrian Hunter 	asm volatile("vscatterqpd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
6496c4d0b41SAdrian Hunter 
6506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b4 */
6516c4d0b41SAdrian Hunter 
6526c4d0b41SAdrian Hunter 	asm volatile("vpmadd52luq %zmm26,%zmm27,%zmm28");
6536c4d0b41SAdrian Hunter 
6546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b5 */
6556c4d0b41SAdrian Hunter 
6566c4d0b41SAdrian Hunter 	asm volatile("vpmadd52huq %zmm26,%zmm27,%zmm28");
6576c4d0b41SAdrian Hunter 
6586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c4 */
6596c4d0b41SAdrian Hunter 
6606c4d0b41SAdrian Hunter 	asm volatile("vpconflictd %zmm26,%zmm27");
6616c4d0b41SAdrian Hunter 	asm volatile("vpconflictq %zmm26,%zmm27");
6626c4d0b41SAdrian Hunter 
6636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c8 */
6646c4d0b41SAdrian Hunter 
6656c4d0b41SAdrian Hunter 	asm volatile("vexp2ps %zmm29,%zmm30");
6666c4d0b41SAdrian Hunter 	asm volatile("vexp2pd %zmm26,%zmm27");
6676c4d0b41SAdrian Hunter 
6686c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 ca */
6696c4d0b41SAdrian Hunter 
6706c4d0b41SAdrian Hunter 	asm volatile("vrcp28ps %zmm29,%zmm30");
6716c4d0b41SAdrian Hunter 	asm volatile("vrcp28pd %zmm26,%zmm27");
6726c4d0b41SAdrian Hunter 
6736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cb */
6746c4d0b41SAdrian Hunter 
6756c4d0b41SAdrian Hunter 	asm volatile("vrcp28ss %xmm28,%xmm29,%xmm30{%k7}");
6766c4d0b41SAdrian Hunter 	asm volatile("vrcp28sd %xmm25,%xmm26,%xmm27{%k7}");
6776c4d0b41SAdrian Hunter 
6786c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cc */
6796c4d0b41SAdrian Hunter 
6806c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ps %zmm29,%zmm30");
6816c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28pd %zmm26,%zmm27");
6826c4d0b41SAdrian Hunter 
6836c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cd */
6846c4d0b41SAdrian Hunter 
6856c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ss %xmm28,%xmm29,%xmm30{%k7}");
6866c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28sd %xmm25,%xmm26,%xmm27{%k7}");
6876c4d0b41SAdrian Hunter 
6886c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 03 */
6896c4d0b41SAdrian Hunter 
6906c4d0b41SAdrian Hunter 	asm volatile("valignd $0x12,%zmm28,%zmm29,%zmm30");
6916c4d0b41SAdrian Hunter 	asm volatile("valignq $0x12,%zmm25,%zmm26,%zmm27");
6926c4d0b41SAdrian Hunter 
6936c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 08 */
6946c4d0b41SAdrian Hunter 
6956c4d0b41SAdrian Hunter 	asm volatile("vroundps $0x5,%ymm6,%ymm2");
6966c4d0b41SAdrian Hunter 	asm volatile("vrndscaleps $0x12,%zmm25,%zmm26");
6976c4d0b41SAdrian Hunter 
6986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 09 */
6996c4d0b41SAdrian Hunter 
7006c4d0b41SAdrian Hunter 	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
7016c4d0b41SAdrian Hunter 	asm volatile("vrndscalepd $0x12,%zmm25,%zmm26");
7026c4d0b41SAdrian Hunter 
7036c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
7046c4d0b41SAdrian Hunter 
7056c4d0b41SAdrian Hunter 	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
7066c4d0b41SAdrian Hunter 	asm volatile("vrndscaless $0x12,%xmm24,%xmm25,%xmm26{%k7}");
7076c4d0b41SAdrian Hunter 
7086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0b */
7096c4d0b41SAdrian Hunter 
7106c4d0b41SAdrian Hunter 	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
7116c4d0b41SAdrian Hunter 	asm volatile("vrndscalesd $0x12,%xmm24,%xmm25,%xmm26{%k7}");
7126c4d0b41SAdrian Hunter 
7136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 18 */
7146c4d0b41SAdrian Hunter 
7156c4d0b41SAdrian Hunter 	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
7166c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
7176c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
7186c4d0b41SAdrian Hunter 
7196c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 19 */
7206c4d0b41SAdrian Hunter 
7216c4d0b41SAdrian Hunter 	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
7226c4d0b41SAdrian Hunter 	asm volatile("vextractf32x4 $0x12,%zmm25,%xmm26{%k7}");
7236c4d0b41SAdrian Hunter 	asm volatile("vextractf64x2 $0x12,%zmm25,%xmm26{%k7}");
7246c4d0b41SAdrian Hunter 
7256c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
7266c4d0b41SAdrian Hunter 
7276c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x8 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
7286c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x4 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
7296c4d0b41SAdrian Hunter 
7306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1b */
7316c4d0b41SAdrian Hunter 
7326c4d0b41SAdrian Hunter 	asm volatile("vextractf32x8 $0x12,%zmm29,%ymm30{%k7}");
7336c4d0b41SAdrian Hunter 	asm volatile("vextractf64x4 $0x12,%zmm26,%ymm27{%k7}");
7346c4d0b41SAdrian Hunter 
7356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1e */
7366c4d0b41SAdrian Hunter 
7376c4d0b41SAdrian Hunter 	asm volatile("vpcmpud $0x12,%zmm29,%zmm30,%k5");
7386c4d0b41SAdrian Hunter 	asm volatile("vpcmpuq $0x12,%zmm26,%zmm27,%k5");
7396c4d0b41SAdrian Hunter 
7406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1f */
7416c4d0b41SAdrian Hunter 
7426c4d0b41SAdrian Hunter 	asm volatile("vpcmpd $0x12,%zmm29,%zmm30,%k5");
7436c4d0b41SAdrian Hunter 	asm volatile("vpcmpq $0x12,%zmm26,%zmm27,%k5");
7446c4d0b41SAdrian Hunter 
7456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 23 */
7466c4d0b41SAdrian Hunter 
7476c4d0b41SAdrian Hunter 	asm volatile("vshuff32x4 $0x12,%zmm28,%zmm29,%zmm30");
7486c4d0b41SAdrian Hunter 	asm volatile("vshuff64x2 $0x12,%zmm25,%zmm26,%zmm27");
7496c4d0b41SAdrian Hunter 
7506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 25 */
7516c4d0b41SAdrian Hunter 
7526c4d0b41SAdrian Hunter 	asm volatile("vpternlogd $0x12,%zmm28,%zmm29,%zmm30");
7536c4d0b41SAdrian Hunter 	asm volatile("vpternlogq $0x12,%zmm28,%zmm29,%zmm30");
7546c4d0b41SAdrian Hunter 
7556c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 26 */
7566c4d0b41SAdrian Hunter 
7576c4d0b41SAdrian Hunter 	asm volatile("vgetmantps $0x12,%zmm26,%zmm27");
7586c4d0b41SAdrian Hunter 	asm volatile("vgetmantpd $0x12,%zmm29,%zmm30");
7596c4d0b41SAdrian Hunter 
7606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 27 */
7616c4d0b41SAdrian Hunter 
7626c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x12,%xmm25,%xmm26,%xmm27{%k7}");
7636c4d0b41SAdrian Hunter 	asm volatile("vgetmantsd $0x12,%xmm28,%xmm29,%xmm30{%k7}");
7646c4d0b41SAdrian Hunter 
7656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 38 */
7666c4d0b41SAdrian Hunter 
7676c4d0b41SAdrian Hunter 	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
7686c4d0b41SAdrian Hunter 	asm volatile("vinserti32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
7696c4d0b41SAdrian Hunter 	asm volatile("vinserti64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
7706c4d0b41SAdrian Hunter 
7716c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 39 */
7726c4d0b41SAdrian Hunter 
7736c4d0b41SAdrian Hunter 	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
7746c4d0b41SAdrian Hunter 	asm volatile("vextracti32x4 $0x12,%zmm25,%xmm26{%k7}");
7756c4d0b41SAdrian Hunter 	asm volatile("vextracti64x2 $0x12,%zmm25,%xmm26{%k7}");
7766c4d0b41SAdrian Hunter 
7776c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3a */
7786c4d0b41SAdrian Hunter 
7796c4d0b41SAdrian Hunter 	asm volatile("vinserti32x8 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
7806c4d0b41SAdrian Hunter 	asm volatile("vinserti64x4 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
7816c4d0b41SAdrian Hunter 
7826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3b */
7836c4d0b41SAdrian Hunter 
7846c4d0b41SAdrian Hunter 	asm volatile("vextracti32x8 $0x12,%zmm29,%ymm30{%k7}");
7856c4d0b41SAdrian Hunter 	asm volatile("vextracti64x4 $0x12,%zmm26,%ymm27{%k7}");
7866c4d0b41SAdrian Hunter 
7876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3e */
7886c4d0b41SAdrian Hunter 
7896c4d0b41SAdrian Hunter 	asm volatile("vpcmpub $0x12,%zmm29,%zmm30,%k5");
7906c4d0b41SAdrian Hunter 	asm volatile("vpcmpuw $0x12,%zmm26,%zmm27,%k5");
7916c4d0b41SAdrian Hunter 
7926c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3f */
7936c4d0b41SAdrian Hunter 
7946c4d0b41SAdrian Hunter 	asm volatile("vpcmpb $0x12,%zmm29,%zmm30,%k5");
7956c4d0b41SAdrian Hunter 	asm volatile("vpcmpw $0x12,%zmm26,%zmm27,%k5");
7966c4d0b41SAdrian Hunter 
7976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
7986c4d0b41SAdrian Hunter 
7996c4d0b41SAdrian Hunter 	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
8006c4d0b41SAdrian Hunter 	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
8016c4d0b41SAdrian Hunter 
8026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
8036c4d0b41SAdrian Hunter 
8046c4d0b41SAdrian Hunter 	asm volatile("vshufi32x4 $0x12,%zmm25,%zmm26,%zmm27");
8056c4d0b41SAdrian Hunter 	asm volatile("vshufi64x2 $0x12,%zmm28,%zmm29,%zmm30");
8066c4d0b41SAdrian Hunter 
8076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 50 */
8086c4d0b41SAdrian Hunter 
8096c4d0b41SAdrian Hunter 	asm volatile("vrangeps $0x12,%zmm25,%zmm26,%zmm27");
8106c4d0b41SAdrian Hunter 	asm volatile("vrangepd $0x12,%zmm28,%zmm29,%zmm30");
8116c4d0b41SAdrian Hunter 
8126c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 51 */
8136c4d0b41SAdrian Hunter 
8146c4d0b41SAdrian Hunter 	asm volatile("vrangess $0x12,%xmm25,%xmm26,%xmm27");
8156c4d0b41SAdrian Hunter 	asm volatile("vrangesd $0x12,%xmm28,%xmm29,%xmm30");
8166c4d0b41SAdrian Hunter 
8176c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 54 */
8186c4d0b41SAdrian Hunter 
8196c4d0b41SAdrian Hunter 	asm volatile("vfixupimmps $0x12,%zmm28,%zmm29,%zmm30");
8206c4d0b41SAdrian Hunter 	asm volatile("vfixupimmpd $0x12,%zmm25,%zmm26,%zmm27");
8216c4d0b41SAdrian Hunter 
8226c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 55 */
8236c4d0b41SAdrian Hunter 
8246c4d0b41SAdrian Hunter 	asm volatile("vfixupimmss $0x12,%xmm28,%xmm29,%xmm30{%k7}");
8256c4d0b41SAdrian Hunter 	asm volatile("vfixupimmsd $0x12,%xmm25,%xmm26,%xmm27{%k7}");
8266c4d0b41SAdrian Hunter 
8276c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 56 */
8286c4d0b41SAdrian Hunter 
8296c4d0b41SAdrian Hunter 	asm volatile("vreduceps $0x12,%zmm26,%zmm27");
8306c4d0b41SAdrian Hunter 	asm volatile("vreducepd $0x12,%zmm29,%zmm30");
8316c4d0b41SAdrian Hunter 
8326c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 57 */
8336c4d0b41SAdrian Hunter 
8346c4d0b41SAdrian Hunter 	asm volatile("vreducess $0x12,%xmm25,%xmm26,%xmm27");
8356c4d0b41SAdrian Hunter 	asm volatile("vreducesd $0x12,%xmm28,%xmm29,%xmm30");
8366c4d0b41SAdrian Hunter 
8376c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 66 */
8386c4d0b41SAdrian Hunter 
8396c4d0b41SAdrian Hunter 	asm volatile("vfpclassps $0x12,%zmm27,%k5");
8406c4d0b41SAdrian Hunter 	asm volatile("vfpclasspd $0x12,%zmm30,%k5");
8416c4d0b41SAdrian Hunter 
8426c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 67 */
8436c4d0b41SAdrian Hunter 
8446c4d0b41SAdrian Hunter 	asm volatile("vfpclassss $0x12,%xmm27,%k5");
8456c4d0b41SAdrian Hunter 	asm volatile("vfpclasssd $0x12,%xmm30,%k5");
8466c4d0b41SAdrian Hunter 
8476c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 72 (Grp13) */
8486c4d0b41SAdrian Hunter 
8496c4d0b41SAdrian Hunter 	asm volatile("vprord $0x12,%zmm25,%zmm26");
8506c4d0b41SAdrian Hunter 	asm volatile("vprorq $0x12,%zmm25,%zmm26");
8516c4d0b41SAdrian Hunter 	asm volatile("vprold $0x12,%zmm29,%zmm30");
8526c4d0b41SAdrian Hunter 	asm volatile("vprolq $0x12,%zmm29,%zmm30");
8536c4d0b41SAdrian Hunter 	asm volatile("psrad  $0x2,%mm6");
8546c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
8556c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%zmm26,%zmm22");
8566c4d0b41SAdrian Hunter 	asm volatile("vpsraq $0x5,%zmm26,%zmm22");
8576c4d0b41SAdrian Hunter 
8586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c6 (Grp18) */
8596c4d0b41SAdrian Hunter 
8606c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dps 0x7b(%r14,%zmm31,8){%k1}");
8616c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
8626c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dps 0x7b(%r14,%zmm31,8){%k1}");
8636c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
8646c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dps 0x7b(%r14,%zmm31,8){%k1}");
8656c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
8666c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dps 0x7b(%r14,%zmm31,8){%k1}");
8676c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
8686c4d0b41SAdrian Hunter 
8696c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c7 (Grp19) */
8706c4d0b41SAdrian Hunter 
8716c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qps 0x7b(%r14,%zmm31,8){%k1}");
8726c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
8736c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qps 0x7b(%r14,%zmm31,8){%k1}");
8746c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
8756c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qps 0x7b(%r14,%zmm31,8){%k1}");
8766c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
8776c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qps 0x7b(%r14,%zmm31,8){%k1}");
8786c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
8796c4d0b41SAdrian Hunter 
8806c4d0b41SAdrian Hunter 	/* AVX-512: Examples */
8816c4d0b41SAdrian Hunter 
8826c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm28,%zmm29,%zmm30");
8836c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}");
8846c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}{z}");
8856c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rn-sae},%zmm28,%zmm29,%zmm30");
8866c4d0b41SAdrian Hunter 	asm volatile("vaddpd {ru-sae},%zmm28,%zmm29,%zmm30");
8876c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rd-sae},%zmm28,%zmm29,%zmm30");
8886c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rz-sae},%zmm28,%zmm29,%zmm30");
8896c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%rcx),%zmm29,%zmm30");
8906c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x123(%rax,%r14,8),%zmm29,%zmm30");
8916c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%rcx){1to8},%zmm29,%zmm30");
8926c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x1fc0(%rdx),%zmm29,%zmm30");
8936c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x3f8(%rdx){1to8},%zmm29,%zmm30");
8946c4d0b41SAdrian Hunter 	asm volatile("vcmpeq_uqps 0x1fc(%rdx){1to16},%zmm30,%k5");
8956c4d0b41SAdrian Hunter 	asm volatile("vcmpltsd 0x123(%rax,%r14,8),%xmm29,%k5{%k7}");
8966c4d0b41SAdrian Hunter 	asm volatile("vcmplesd {sae},%xmm28,%xmm29,%k5{%k7}");
8976c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x5b,0x123(%rax,%r14,8),%xmm29,%xmm30{%k7}");
8986c4d0b41SAdrian Hunter 
899d8b167f9SMatt Fleming 	/* bndmk m64, bnd */
900d8b167f9SMatt Fleming 
901d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax), %bnd0");
902d8b167f9SMatt Fleming 	asm volatile("bndmk (%r8), %bnd0");
903d8b167f9SMatt Fleming 	asm volatile("bndmk (0x12345678), %bnd0");
904d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax), %bnd3");
905d8b167f9SMatt Fleming 	asm volatile("bndmk (%rcx,%rax,1), %bnd0");
906d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
907d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax,%rcx,1), %bnd0");
908d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax,%rcx,8), %bnd0");
909d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rax), %bnd0");
910d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rbp), %bnd0");
911d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
912d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
913d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
914d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
915d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rax), %bnd0");
916d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rbp), %bnd0");
917d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
918d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
919d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
920d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
921d8b167f9SMatt Fleming 
922d8b167f9SMatt Fleming 	/* bndcl r/m64, bnd */
923d8b167f9SMatt Fleming 
924d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax), %bnd0");
925d8b167f9SMatt Fleming 	asm volatile("bndcl (%r8), %bnd0");
926d8b167f9SMatt Fleming 	asm volatile("bndcl (0x12345678), %bnd0");
927d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax), %bnd3");
928d8b167f9SMatt Fleming 	asm volatile("bndcl (%rcx,%rax,1), %bnd0");
929d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
930d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax,%rcx,1), %bnd0");
931d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax,%rcx,8), %bnd0");
932d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rax), %bnd0");
933d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rbp), %bnd0");
934d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
935d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
936d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
937d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
938d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rax), %bnd0");
939d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rbp), %bnd0");
940d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
941d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
942d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
943d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
944d8b167f9SMatt Fleming 	asm volatile("bndcl %rax, %bnd0");
945d8b167f9SMatt Fleming 
946d8b167f9SMatt Fleming 	/* bndcu r/m64, bnd */
947d8b167f9SMatt Fleming 
948d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax), %bnd0");
949d8b167f9SMatt Fleming 	asm volatile("bndcu (%r8), %bnd0");
950d8b167f9SMatt Fleming 	asm volatile("bndcu (0x12345678), %bnd0");
951d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax), %bnd3");
952d8b167f9SMatt Fleming 	asm volatile("bndcu (%rcx,%rax,1), %bnd0");
953d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
954d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax,%rcx,1), %bnd0");
955d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax,%rcx,8), %bnd0");
956d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rax), %bnd0");
957d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rbp), %bnd0");
958d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
959d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
960d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
961d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
962d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rax), %bnd0");
963d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rbp), %bnd0");
964d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
965d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
966d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
967d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
968d8b167f9SMatt Fleming 	asm volatile("bndcu %rax, %bnd0");
969d8b167f9SMatt Fleming 
970d8b167f9SMatt Fleming 	/* bndcn r/m64, bnd */
971d8b167f9SMatt Fleming 
972d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax), %bnd0");
973d8b167f9SMatt Fleming 	asm volatile("bndcn (%r8), %bnd0");
974d8b167f9SMatt Fleming 	asm volatile("bndcn (0x12345678), %bnd0");
975d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax), %bnd3");
976d8b167f9SMatt Fleming 	asm volatile("bndcn (%rcx,%rax,1), %bnd0");
977d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
978d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax,%rcx,1), %bnd0");
979d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax,%rcx,8), %bnd0");
980d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rax), %bnd0");
981d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rbp), %bnd0");
982d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
983d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
984d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
985d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
986d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rax), %bnd0");
987d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rbp), %bnd0");
988d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
989d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
990d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
991d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
992d8b167f9SMatt Fleming 	asm volatile("bndcn %rax, %bnd0");
993d8b167f9SMatt Fleming 
994d8b167f9SMatt Fleming 	/* bndmov m128, bnd */
995d8b167f9SMatt Fleming 
996d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax), %bnd0");
997d8b167f9SMatt Fleming 	asm volatile("bndmov (%r8), %bnd0");
998d8b167f9SMatt Fleming 	asm volatile("bndmov (0x12345678), %bnd0");
999d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax), %bnd3");
1000d8b167f9SMatt Fleming 	asm volatile("bndmov (%rcx,%rax,1), %bnd0");
1001d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
1002d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax,%rcx,1), %bnd0");
1003d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax,%rcx,8), %bnd0");
1004d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rax), %bnd0");
1005d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rbp), %bnd0");
1006d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
1007d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
1008d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
1009d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
1010d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rax), %bnd0");
1011d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rbp), %bnd0");
1012d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
1013d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
1014d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
1015d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
1016d8b167f9SMatt Fleming 
1017d8b167f9SMatt Fleming 	/* bndmov bnd, m128 */
1018d8b167f9SMatt Fleming 
1019d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rax)");
1020d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%r8)");
1021d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (0x12345678)");
1022d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd3, (%rax)");
1023d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
1024d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
1025d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
1026d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
1027d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rax)");
1028d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rbp)");
1029d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
1030d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
1031d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
1032d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
1033d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rax)");
1034d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
1035d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
1036d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
1037d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
1038d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
1039d8b167f9SMatt Fleming 
1040d8b167f9SMatt Fleming 	/* bndmov bnd2, bnd1 */
1041d8b167f9SMatt Fleming 
1042d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, %bnd1");
1043d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd1, %bnd0");
1044d8b167f9SMatt Fleming 
1045d8b167f9SMatt Fleming 	/* bndldx mib, bnd */
1046d8b167f9SMatt Fleming 
1047d8b167f9SMatt Fleming 	asm volatile("bndldx (%rax), %bnd0");
1048d8b167f9SMatt Fleming 	asm volatile("bndldx (%r8), %bnd0");
1049d8b167f9SMatt Fleming 	asm volatile("bndldx (0x12345678), %bnd0");
1050d8b167f9SMatt Fleming 	asm volatile("bndldx (%rax), %bnd3");
1051d8b167f9SMatt Fleming 	asm volatile("bndldx (%rcx,%rax,1), %bnd0");
1052d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
1053d8b167f9SMatt Fleming 	asm volatile("bndldx (%rax,%rcx,1), %bnd0");
1054d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rax), %bnd0");
1055d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rbp), %bnd0");
1056d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
1057d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
1058d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
1059d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rax), %bnd0");
1060d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rbp), %bnd0");
1061d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
1062d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
1063d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
1064d8b167f9SMatt Fleming 
1065d8b167f9SMatt Fleming 	/* bndstx bnd, mib */
1066d8b167f9SMatt Fleming 
1067d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%rax)");
1068d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%r8)");
1069d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (0x12345678)");
1070d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd3, (%rax)");
1071d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
1072d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
1073d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
1074d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rax)");
1075d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rbp)");
1076d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
1077d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
1078d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
1079d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rax)");
1080d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
1081d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
1082d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
1083d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
1084d8b167f9SMatt Fleming 
1085d8b167f9SMatt Fleming 	/* bnd prefix on call, ret, jmp and all jcc */
1086d8b167f9SMatt Fleming 
1087d8b167f9SMatt Fleming 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
1088d8b167f9SMatt Fleming 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
1089d8b167f9SMatt Fleming 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
1090d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1091d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1092d8b167f9SMatt Fleming 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
1093d8b167f9SMatt Fleming 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
1094d8b167f9SMatt Fleming 
1095d8b167f9SMatt Fleming 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
1096d8b167f9SMatt Fleming 
1097d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
1098d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
1099d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
1100d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
1101d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
1102d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
1103d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
1104d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
1105d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
1106d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
1107d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
1108d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
1109d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
1110d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
1111d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
1112d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
1113d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
1114d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
1115d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
1116d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
1117d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
1118d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
1119d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
1120d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
1121d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
1122d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
1123d8b167f9SMatt Fleming 
1124d8b167f9SMatt Fleming 	/* sha1nexte xmm2/m128, xmm1 */
1125d8b167f9SMatt Fleming 
1126d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm1, %xmm0");
1127d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm2");
1128d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm8, %xmm0");
1129d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm8");
1130d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm15, %xmm8");
1131d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax), %xmm0");
1132d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%r8), %xmm0");
1133d8b167f9SMatt Fleming 	asm volatile("sha1nexte (0x12345678), %xmm0");
1134d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax), %xmm3");
1135d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
1136d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
1137d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
1138d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
1139d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rax), %xmm0");
1140d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rbp), %xmm0");
1141d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
1142d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
1143d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
1144d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
1145d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
1146d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
1147d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
1148d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
1149d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
1150d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
1151d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
1152d8b167f9SMatt Fleming 
1153d8b167f9SMatt Fleming 	/* sha1msg1 xmm2/m128, xmm1 */
1154d8b167f9SMatt Fleming 
1155d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm1, %xmm0");
1156d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm2");
1157d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm8, %xmm0");
1158d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm8");
1159d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm15, %xmm8");
1160d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax), %xmm0");
1161d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%r8), %xmm0");
1162d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (0x12345678), %xmm0");
1163d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax), %xmm3");
1164d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
1165d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
1166d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
1167d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
1168d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rax), %xmm0");
1169d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rbp), %xmm0");
1170d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
1171d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
1172d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
1173d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
1174d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
1175d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
1176d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
1177d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
1178d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
1179d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
1180d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
1181d8b167f9SMatt Fleming 
1182d8b167f9SMatt Fleming 	/* sha1msg2 xmm2/m128, xmm1 */
1183d8b167f9SMatt Fleming 
1184d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm1, %xmm0");
1185d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm2");
1186d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm8, %xmm0");
1187d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm8");
1188d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm15, %xmm8");
1189d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax), %xmm0");
1190d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%r8), %xmm0");
1191d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (0x12345678), %xmm0");
1192d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax), %xmm3");
1193d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
1194d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
1195d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
1196d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
1197d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rax), %xmm0");
1198d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rbp), %xmm0");
1199d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
1200d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
1201d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
1202d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
1203d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
1204d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
1205d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
1206d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
1207d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
1208d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
1209d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
1210d8b167f9SMatt Fleming 
1211d8b167f9SMatt Fleming 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
1212d8b167f9SMatt Fleming 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
1213d8b167f9SMatt Fleming 
1214d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm4, %xmm1");
1215d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm2");
1216d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm8, %xmm1");
1217d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm8");
1218d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm15, %xmm8");
1219d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax), %xmm1");
1220d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%r8), %xmm1");
1221d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
1222d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax), %xmm3");
1223d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
1224d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
1225d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
1226d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
1227d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rax), %xmm1");
1228d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
1229d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
1230d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
1231d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
1232d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
1233d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
1234d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
1235d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
1236d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
1237d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
1238d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
1239d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
1240d8b167f9SMatt Fleming 
1241d8b167f9SMatt Fleming 	/* sha256msg1 xmm2/m128, xmm1 */
1242d8b167f9SMatt Fleming 
1243d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm1, %xmm0");
1244d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm2");
1245d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm8, %xmm0");
1246d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm8");
1247d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm15, %xmm8");
1248d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax), %xmm0");
1249d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%r8), %xmm0");
1250d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (0x12345678), %xmm0");
1251d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax), %xmm3");
1252d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
1253d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
1254d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
1255d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
1256d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rax), %xmm0");
1257d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rbp), %xmm0");
1258d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
1259d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
1260d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
1261d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
1262d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
1263d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
1264d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
1265d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
1266d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
1267d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
1268d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
1269d8b167f9SMatt Fleming 
1270d8b167f9SMatt Fleming 	/* sha256msg2 xmm2/m128, xmm1 */
1271d8b167f9SMatt Fleming 
1272d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm1, %xmm0");
1273d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm2");
1274d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm8, %xmm0");
1275d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm8");
1276d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm15, %xmm8");
1277d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax), %xmm0");
1278d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%r8), %xmm0");
1279d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (0x12345678), %xmm0");
1280d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax), %xmm3");
1281d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
1282d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
1283d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
1284d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
1285d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rax), %xmm0");
1286d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rbp), %xmm0");
1287d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
1288d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
1289d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
1290d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
1291d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
1292d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
1293d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
1294d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
1295d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
1296d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
1297d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
1298d8b167f9SMatt Fleming 
1299d8b167f9SMatt Fleming 	/* clflushopt m8 */
1300d8b167f9SMatt Fleming 
1301d8b167f9SMatt Fleming 	asm volatile("clflushopt (%rax)");
1302d8b167f9SMatt Fleming 	asm volatile("clflushopt (%r8)");
1303d8b167f9SMatt Fleming 	asm volatile("clflushopt (0x12345678)");
1304d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
1305d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
1306d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clflushopt */
1307d8b167f9SMatt Fleming 	asm volatile("clflush (%rax)");
1308d8b167f9SMatt Fleming 	asm volatile("clflush (%r8)");
1309d8b167f9SMatt Fleming 	asm volatile("sfence");
1310d8b167f9SMatt Fleming 
1311d8b167f9SMatt Fleming 	/* clwb m8 */
1312d8b167f9SMatt Fleming 
1313d8b167f9SMatt Fleming 	asm volatile("clwb (%rax)");
1314d8b167f9SMatt Fleming 	asm volatile("clwb (%r8)");
1315d8b167f9SMatt Fleming 	asm volatile("clwb (0x12345678)");
1316d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%rax,%rcx,8)");
1317d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%r8,%rcx,8)");
1318d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clwb */
1319d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%rax)");
1320d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%r8)");
1321d8b167f9SMatt Fleming 	asm volatile("mfence");
1322d8b167f9SMatt Fleming 
1323d8b167f9SMatt Fleming 	/* xsavec mem */
1324d8b167f9SMatt Fleming 
1325d8b167f9SMatt Fleming 	asm volatile("xsavec (%rax)");
1326d8b167f9SMatt Fleming 	asm volatile("xsavec (%r8)");
1327d8b167f9SMatt Fleming 	asm volatile("xsavec (0x12345678)");
1328d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
1329d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
1330d8b167f9SMatt Fleming 
1331d8b167f9SMatt Fleming 	/* xsaves mem */
1332d8b167f9SMatt Fleming 
1333d8b167f9SMatt Fleming 	asm volatile("xsaves (%rax)");
1334d8b167f9SMatt Fleming 	asm volatile("xsaves (%r8)");
1335d8b167f9SMatt Fleming 	asm volatile("xsaves (0x12345678)");
1336d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
1337d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
1338d8b167f9SMatt Fleming 
1339d8b167f9SMatt Fleming 	/* xrstors mem */
1340d8b167f9SMatt Fleming 
1341d8b167f9SMatt Fleming 	asm volatile("xrstors (%rax)");
1342d8b167f9SMatt Fleming 	asm volatile("xrstors (%r8)");
1343d8b167f9SMatt Fleming 	asm volatile("xrstors (0x12345678)");
1344d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
1345d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
1346d8b167f9SMatt Fleming 
1347d5b1a5f6SAdrian Hunter 	/* ptwrite */
1348d5b1a5f6SAdrian Hunter 
1349d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%rax)");
1350d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%r8)");
1351d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (0x12345678)");
1352d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%rax,%rcx,8)");
1353d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%r8,%rcx,8)");
1354d5b1a5f6SAdrian Hunter 
1355d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%rax)");
1356d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%r8)");
1357d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (0x12345678)");
1358d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%rax,%rcx,8)");
1359d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%r8,%rcx,8)");
1360d5b1a5f6SAdrian Hunter 
1361d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq (%rax)");
1362d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq (%r8)");
1363d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq (0x12345678)");
1364d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq 0x12345678(%rax,%rcx,8)");
1365d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq 0x12345678(%r8,%rcx,8)");
1366d5b1a5f6SAdrian Hunter 
1367d8b167f9SMatt Fleming #else  /* #ifdef __x86_64__ */
1368d8b167f9SMatt Fleming 
13696c4d0b41SAdrian Hunter 	/* bound r32, mem (same op code as EVEX prefix) */
13706c4d0b41SAdrian Hunter 
13716c4d0b41SAdrian Hunter 	asm volatile("bound %eax, 0x12345678(%ecx)");
13726c4d0b41SAdrian Hunter 	asm volatile("bound %ecx, 0x12345678(%eax)");
13736c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax)");
13746c4d0b41SAdrian Hunter 	asm volatile("bound %ebx, 0x12345678(%eax)");
13756c4d0b41SAdrian Hunter 	asm volatile("bound %esp, 0x12345678(%eax)");
13766c4d0b41SAdrian Hunter 	asm volatile("bound %ebp, 0x12345678(%eax)");
13776c4d0b41SAdrian Hunter 	asm volatile("bound %esi, 0x12345678(%eax)");
13786c4d0b41SAdrian Hunter 	asm volatile("bound %edi, 0x12345678(%eax)");
13796c4d0b41SAdrian Hunter 	asm volatile("bound %ecx, (%eax)");
13806c4d0b41SAdrian Hunter 	asm volatile("bound %eax, (0x12345678)");
13816c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%ecx,%eax,1)");
13826c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(,%eax,1)");
13836c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%eax,%ecx,1)");
13846c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%eax,%ecx,8)");
13856c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax)");
13866c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ebp)");
13876c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
13886c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
13896c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
13906c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
13916c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax)");
13926c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ebp)");
13936c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
13946c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
13956c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
13966c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
13976c4d0b41SAdrian Hunter 
13986c4d0b41SAdrian Hunter 	/* bound r16, mem (same op code as EVEX prefix) */
13996c4d0b41SAdrian Hunter 
14006c4d0b41SAdrian Hunter 	asm volatile("bound %ax, 0x12345678(%ecx)");
14016c4d0b41SAdrian Hunter 	asm volatile("bound %cx, 0x12345678(%eax)");
14026c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax)");
14036c4d0b41SAdrian Hunter 	asm volatile("bound %bx, 0x12345678(%eax)");
14046c4d0b41SAdrian Hunter 	asm volatile("bound %sp, 0x12345678(%eax)");
14056c4d0b41SAdrian Hunter 	asm volatile("bound %bp, 0x12345678(%eax)");
14066c4d0b41SAdrian Hunter 	asm volatile("bound %si, 0x12345678(%eax)");
14076c4d0b41SAdrian Hunter 	asm volatile("bound %di, 0x12345678(%eax)");
14086c4d0b41SAdrian Hunter 	asm volatile("bound %cx, (%eax)");
14096c4d0b41SAdrian Hunter 	asm volatile("bound %ax, (0x12345678)");
14106c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%ecx,%eax,1)");
14116c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(,%eax,1)");
14126c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%eax,%ecx,1)");
14136c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%eax,%ecx,8)");
14146c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax)");
14156c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ebp)");
14166c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
14176c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
14186c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
14196c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
14206c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax)");
14216c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ebp)");
14226c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
14236c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
14246c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
14256c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
14266c4d0b41SAdrian Hunter 
14276c4d0b41SAdrian Hunter 	/* AVX-512: Instructions with the same op codes as Mask Instructions  */
14286c4d0b41SAdrian Hunter 
14296c4d0b41SAdrian Hunter 	asm volatile("cmovno %eax,%ebx");
14306c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%eax),%ecx");
14316c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%eax),%cx");
14326c4d0b41SAdrian Hunter 
14336c4d0b41SAdrian Hunter 	asm volatile("cmove  %eax,%ebx");
14346c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%eax),%ecx");
14356c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%eax),%cx");
14366c4d0b41SAdrian Hunter 
14376c4d0b41SAdrian Hunter 	asm volatile("seto    0x12345678(%eax)");
14386c4d0b41SAdrian Hunter 	asm volatile("setno   0x12345678(%eax)");
14396c4d0b41SAdrian Hunter 	asm volatile("setb    0x12345678(%eax)");
14406c4d0b41SAdrian Hunter 	asm volatile("setc    0x12345678(%eax)");
14416c4d0b41SAdrian Hunter 	asm volatile("setnae  0x12345678(%eax)");
14426c4d0b41SAdrian Hunter 	asm volatile("setae   0x12345678(%eax)");
14436c4d0b41SAdrian Hunter 	asm volatile("setnb   0x12345678(%eax)");
14446c4d0b41SAdrian Hunter 	asm volatile("setnc   0x12345678(%eax)");
14456c4d0b41SAdrian Hunter 	asm volatile("sets    0x12345678(%eax)");
14466c4d0b41SAdrian Hunter 	asm volatile("setns   0x12345678(%eax)");
14476c4d0b41SAdrian Hunter 
14486c4d0b41SAdrian Hunter 	/* AVX-512: Mask Instructions */
14496c4d0b41SAdrian Hunter 
14506c4d0b41SAdrian Hunter 	asm volatile("kandw  %k7,%k6,%k5");
14516c4d0b41SAdrian Hunter 	asm volatile("kandq  %k7,%k6,%k5");
14526c4d0b41SAdrian Hunter 	asm volatile("kandb  %k7,%k6,%k5");
14536c4d0b41SAdrian Hunter 	asm volatile("kandd  %k7,%k6,%k5");
14546c4d0b41SAdrian Hunter 
14556c4d0b41SAdrian Hunter 	asm volatile("kandnw  %k7,%k6,%k5");
14566c4d0b41SAdrian Hunter 	asm volatile("kandnq  %k7,%k6,%k5");
14576c4d0b41SAdrian Hunter 	asm volatile("kandnb  %k7,%k6,%k5");
14586c4d0b41SAdrian Hunter 	asm volatile("kandnd  %k7,%k6,%k5");
14596c4d0b41SAdrian Hunter 
14606c4d0b41SAdrian Hunter 	asm volatile("knotw  %k7,%k6");
14616c4d0b41SAdrian Hunter 	asm volatile("knotq  %k7,%k6");
14626c4d0b41SAdrian Hunter 	asm volatile("knotb  %k7,%k6");
14636c4d0b41SAdrian Hunter 	asm volatile("knotd  %k7,%k6");
14646c4d0b41SAdrian Hunter 
14656c4d0b41SAdrian Hunter 	asm volatile("korw  %k7,%k6,%k5");
14666c4d0b41SAdrian Hunter 	asm volatile("korq  %k7,%k6,%k5");
14676c4d0b41SAdrian Hunter 	asm volatile("korb  %k7,%k6,%k5");
14686c4d0b41SAdrian Hunter 	asm volatile("kord  %k7,%k6,%k5");
14696c4d0b41SAdrian Hunter 
14706c4d0b41SAdrian Hunter 	asm volatile("kxnorw  %k7,%k6,%k5");
14716c4d0b41SAdrian Hunter 	asm volatile("kxnorq  %k7,%k6,%k5");
14726c4d0b41SAdrian Hunter 	asm volatile("kxnorb  %k7,%k6,%k5");
14736c4d0b41SAdrian Hunter 	asm volatile("kxnord  %k7,%k6,%k5");
14746c4d0b41SAdrian Hunter 
14756c4d0b41SAdrian Hunter 	asm volatile("kxorw  %k7,%k6,%k5");
14766c4d0b41SAdrian Hunter 	asm volatile("kxorq  %k7,%k6,%k5");
14776c4d0b41SAdrian Hunter 	asm volatile("kxorb  %k7,%k6,%k5");
14786c4d0b41SAdrian Hunter 	asm volatile("kxord  %k7,%k6,%k5");
14796c4d0b41SAdrian Hunter 
14806c4d0b41SAdrian Hunter 	asm volatile("kaddw  %k7,%k6,%k5");
14816c4d0b41SAdrian Hunter 	asm volatile("kaddq  %k7,%k6,%k5");
14826c4d0b41SAdrian Hunter 	asm volatile("kaddb  %k7,%k6,%k5");
14836c4d0b41SAdrian Hunter 	asm volatile("kaddd  %k7,%k6,%k5");
14846c4d0b41SAdrian Hunter 
14856c4d0b41SAdrian Hunter 	asm volatile("kunpckbw %k7,%k6,%k5");
14866c4d0b41SAdrian Hunter 	asm volatile("kunpckwd %k7,%k6,%k5");
14876c4d0b41SAdrian Hunter 	asm volatile("kunpckdq %k7,%k6,%k5");
14886c4d0b41SAdrian Hunter 
14896c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k6,%k5");
14906c4d0b41SAdrian Hunter 	asm volatile("kmovw  (%ecx),%k5");
14916c4d0b41SAdrian Hunter 	asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
14926c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,(%ecx)");
14936c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
14946c4d0b41SAdrian Hunter 	asm volatile("kmovw  %eax,%k5");
14956c4d0b41SAdrian Hunter 	asm volatile("kmovw  %ebp,%k5");
14966c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%eax");
14976c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%ebp");
14986c4d0b41SAdrian Hunter 
14996c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k6,%k5");
15006c4d0b41SAdrian Hunter 	asm volatile("kmovq  (%ecx),%k5");
15016c4d0b41SAdrian Hunter 	asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
15026c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,(%ecx)");
15036c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
15046c4d0b41SAdrian Hunter 
15056c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k6,%k5");
15066c4d0b41SAdrian Hunter 	asm volatile("kmovb  (%ecx),%k5");
15076c4d0b41SAdrian Hunter 	asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
15086c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,(%ecx)");
15096c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
15106c4d0b41SAdrian Hunter 	asm volatile("kmovb  %eax,%k5");
15116c4d0b41SAdrian Hunter 	asm volatile("kmovb  %ebp,%k5");
15126c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%eax");
15136c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%ebp");
15146c4d0b41SAdrian Hunter 
15156c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k6,%k5");
15166c4d0b41SAdrian Hunter 	asm volatile("kmovd  (%ecx),%k5");
15176c4d0b41SAdrian Hunter 	asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
15186c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,(%ecx)");
15196c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
15206c4d0b41SAdrian Hunter 	asm volatile("kmovd  %eax,%k5");
15216c4d0b41SAdrian Hunter 	asm volatile("kmovd  %ebp,%k5");
15226c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%eax");
15236c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%ebp");
15246c4d0b41SAdrian Hunter 
15256c4d0b41SAdrian Hunter 	asm volatile("kortestw %k6,%k5");
15266c4d0b41SAdrian Hunter 	asm volatile("kortestq %k6,%k5");
15276c4d0b41SAdrian Hunter 	asm volatile("kortestb %k6,%k5");
15286c4d0b41SAdrian Hunter 	asm volatile("kortestd %k6,%k5");
15296c4d0b41SAdrian Hunter 
15306c4d0b41SAdrian Hunter 	asm volatile("ktestw %k6,%k5");
15316c4d0b41SAdrian Hunter 	asm volatile("ktestq %k6,%k5");
15326c4d0b41SAdrian Hunter 	asm volatile("ktestb %k6,%k5");
15336c4d0b41SAdrian Hunter 	asm volatile("ktestd %k6,%k5");
15346c4d0b41SAdrian Hunter 
15356c4d0b41SAdrian Hunter 	asm volatile("kshiftrw $0x12,%k6,%k5");
15366c4d0b41SAdrian Hunter 	asm volatile("kshiftrq $0x5b,%k6,%k5");
15376c4d0b41SAdrian Hunter 	asm volatile("kshiftlw $0x12,%k6,%k5");
15386c4d0b41SAdrian Hunter 	asm volatile("kshiftlq $0x5b,%k6,%k5");
15396c4d0b41SAdrian Hunter 
15406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 5b */
15416c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2ps %xmm5,%xmm6");
15426c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
15436c4d0b41SAdrian Hunter 	asm volatile("vcvtps2dq %xmm5,%xmm6");
15446c4d0b41SAdrian Hunter 	asm volatile("vcvttps2dq %xmm5,%xmm6");
15456c4d0b41SAdrian Hunter 
15466c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 6f */
15476c4d0b41SAdrian Hunter 
15486c4d0b41SAdrian Hunter 	asm volatile("movq   %mm0,%mm4");
15496c4d0b41SAdrian Hunter 	asm volatile("vmovdqa %ymm4,%ymm6");
15506c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32 %zmm5,%zmm6");
15516c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64 %zmm5,%zmm6");
15526c4d0b41SAdrian Hunter 	asm volatile("vmovdqu %ymm4,%ymm6");
15536c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32 %zmm5,%zmm6");
15546c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64 %zmm5,%zmm6");
15556c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8 %zmm5,%zmm6");
15566c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16 %zmm5,%zmm6");
15576c4d0b41SAdrian Hunter 
15586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 78 */
15596c4d0b41SAdrian Hunter 
15606c4d0b41SAdrian Hunter 	asm volatile("vmread %eax,%ebx");
15616c4d0b41SAdrian Hunter 	asm volatile("vcvttps2udq %zmm5,%zmm6");
15626c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
15636c4d0b41SAdrian Hunter 	asm volatile("vcvttsd2usi %xmm6,%eax");
15646c4d0b41SAdrian Hunter 	asm volatile("vcvttss2usi %xmm6,%eax");
15656c4d0b41SAdrian Hunter 	asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
15666c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2uqq %zmm5,%zmm6");
15676c4d0b41SAdrian Hunter 
15686c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 79 */
15696c4d0b41SAdrian Hunter 
15706c4d0b41SAdrian Hunter 	asm volatile("vmwrite %eax,%ebx");
15716c4d0b41SAdrian Hunter 	asm volatile("vcvtps2udq %zmm5,%zmm6");
15726c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
15736c4d0b41SAdrian Hunter 	asm volatile("vcvtsd2usi %xmm6,%eax");
15746c4d0b41SAdrian Hunter 	asm volatile("vcvtss2usi %xmm6,%eax");
15756c4d0b41SAdrian Hunter 	asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
15766c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2uqq %zmm5,%zmm6");
15776c4d0b41SAdrian Hunter 
15786c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7a */
15796c4d0b41SAdrian Hunter 
15806c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
15816c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2pd %zmm5,%zmm6");
15826c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2ps %zmm5,%zmm6");
15836c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
15846c4d0b41SAdrian Hunter 	asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
15856c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2qq %zmm5,%zmm6");
15866c4d0b41SAdrian Hunter 
15876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7b */
15886c4d0b41SAdrian Hunter 
15896c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
15906c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
15916c4d0b41SAdrian Hunter 	asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
15926c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2qq %zmm5,%zmm6");
15936c4d0b41SAdrian Hunter 
15946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7f */
15956c4d0b41SAdrian Hunter 
15966c4d0b41SAdrian Hunter 	asm volatile("movq.s  %mm0,%mm4");
15976c4d0b41SAdrian Hunter 	asm volatile("vmovdqa.s %ymm5,%ymm6");
15986c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32.s %zmm5,%zmm6");
15996c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64.s %zmm5,%zmm6");
16006c4d0b41SAdrian Hunter 	asm volatile("vmovdqu.s %ymm5,%ymm6");
16016c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32.s %zmm5,%zmm6");
16026c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64.s %zmm5,%zmm6");
16036c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8.s %zmm5,%zmm6");
16046c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16.s %zmm5,%zmm6");
16056c4d0b41SAdrian Hunter 
16066c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f db */
16076c4d0b41SAdrian Hunter 
16086c4d0b41SAdrian Hunter 	asm volatile("pand  %mm1,%mm2");
16096c4d0b41SAdrian Hunter 	asm volatile("pand  %xmm1,%xmm2");
16106c4d0b41SAdrian Hunter 	asm volatile("vpand  %ymm4,%ymm6,%ymm2");
16116c4d0b41SAdrian Hunter 	asm volatile("vpandd %zmm4,%zmm5,%zmm6");
16126c4d0b41SAdrian Hunter 	asm volatile("vpandq %zmm4,%zmm5,%zmm6");
16136c4d0b41SAdrian Hunter 
16146c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f df */
16156c4d0b41SAdrian Hunter 
16166c4d0b41SAdrian Hunter 	asm volatile("pandn  %mm1,%mm2");
16176c4d0b41SAdrian Hunter 	asm volatile("pandn  %xmm1,%xmm2");
16186c4d0b41SAdrian Hunter 	asm volatile("vpandn %ymm4,%ymm6,%ymm2");
16196c4d0b41SAdrian Hunter 	asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
16206c4d0b41SAdrian Hunter 	asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
16216c4d0b41SAdrian Hunter 
16226c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f e6 */
16236c4d0b41SAdrian Hunter 
16246c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2dq %xmm1,%xmm2");
16256c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %xmm5,%xmm6");
16266c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
16276c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2pd %zmm5,%zmm6");
16286c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2dq %xmm1,%xmm2");
16296c4d0b41SAdrian Hunter 
16306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f eb */
16316c4d0b41SAdrian Hunter 
16326c4d0b41SAdrian Hunter 	asm volatile("por   %mm4,%mm6");
16336c4d0b41SAdrian Hunter 	asm volatile("vpor   %ymm4,%ymm6,%ymm2");
16346c4d0b41SAdrian Hunter 	asm volatile("vpord  %zmm4,%zmm5,%zmm6");
16356c4d0b41SAdrian Hunter 	asm volatile("vporq  %zmm4,%zmm5,%zmm6");
16366c4d0b41SAdrian Hunter 
16376c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f ef */
16386c4d0b41SAdrian Hunter 
16396c4d0b41SAdrian Hunter 	asm volatile("pxor   %mm4,%mm6");
16406c4d0b41SAdrian Hunter 	asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
16416c4d0b41SAdrian Hunter 	asm volatile("vpxord %zmm4,%zmm5,%zmm6");
16426c4d0b41SAdrian Hunter 	asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
16436c4d0b41SAdrian Hunter 
16446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 10 */
16456c4d0b41SAdrian Hunter 
16466c4d0b41SAdrian Hunter 	asm volatile("pblendvb %xmm1,%xmm0");
16476c4d0b41SAdrian Hunter 	asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
16486c4d0b41SAdrian Hunter 	asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
16496c4d0b41SAdrian Hunter 
16506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 11 */
16516c4d0b41SAdrian Hunter 
16526c4d0b41SAdrian Hunter 	asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
16536c4d0b41SAdrian Hunter 	asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
16546c4d0b41SAdrian Hunter 
16556c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 12 */
16566c4d0b41SAdrian Hunter 
16576c4d0b41SAdrian Hunter 	asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
16586c4d0b41SAdrian Hunter 	asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
16596c4d0b41SAdrian Hunter 
16606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 13 */
16616c4d0b41SAdrian Hunter 
16626c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %xmm3,%ymm5");
16636c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
16646c4d0b41SAdrian Hunter 	asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
16656c4d0b41SAdrian Hunter 
16666c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 14 */
16676c4d0b41SAdrian Hunter 
16686c4d0b41SAdrian Hunter 	asm volatile("blendvps %xmm1,%xmm0");
16696c4d0b41SAdrian Hunter 	asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
16706c4d0b41SAdrian Hunter 	asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
16716c4d0b41SAdrian Hunter 	asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
16726c4d0b41SAdrian Hunter 
16736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 15 */
16746c4d0b41SAdrian Hunter 
16756c4d0b41SAdrian Hunter 	asm volatile("blendvpd %xmm1,%xmm0");
16766c4d0b41SAdrian Hunter 	asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
16776c4d0b41SAdrian Hunter 	asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
16786c4d0b41SAdrian Hunter 	asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
16796c4d0b41SAdrian Hunter 
16806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 16 */
16816c4d0b41SAdrian Hunter 
16826c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2");
16836c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
16846c4d0b41SAdrian Hunter 	asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
16856c4d0b41SAdrian Hunter 
16866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 19 */
16876c4d0b41SAdrian Hunter 
16886c4d0b41SAdrian Hunter 	asm volatile("vbroadcastsd %xmm4,%ymm6");
16896c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
16906c4d0b41SAdrian Hunter 
16916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1a */
16926c4d0b41SAdrian Hunter 
16936c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf128 (%ecx),%ymm4");
16946c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
16956c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
16966c4d0b41SAdrian Hunter 
16976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1b */
16986c4d0b41SAdrian Hunter 
16996c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
17006c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
17016c4d0b41SAdrian Hunter 
17026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1f */
17036c4d0b41SAdrian Hunter 
17046c4d0b41SAdrian Hunter 	asm volatile("vpabsq %zmm4,%zmm6");
17056c4d0b41SAdrian Hunter 
17066c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 20 */
17076c4d0b41SAdrian Hunter 
17086c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbw %xmm4,%xmm5");
17096c4d0b41SAdrian Hunter 	asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
17106c4d0b41SAdrian Hunter 
17116c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 21 */
17126c4d0b41SAdrian Hunter 
17136c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbd %xmm4,%ymm6");
17146c4d0b41SAdrian Hunter 	asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
17156c4d0b41SAdrian Hunter 
17166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 22 */
17176c4d0b41SAdrian Hunter 
17186c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbq %xmm4,%ymm4");
17196c4d0b41SAdrian Hunter 	asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
17206c4d0b41SAdrian Hunter 
17216c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 23 */
17226c4d0b41SAdrian Hunter 
17236c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwd %xmm4,%ymm4");
17246c4d0b41SAdrian Hunter 	asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
17256c4d0b41SAdrian Hunter 
17266c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 24 */
17276c4d0b41SAdrian Hunter 
17286c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwq %xmm4,%ymm6");
17296c4d0b41SAdrian Hunter 	asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
17306c4d0b41SAdrian Hunter 
17316c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 25 */
17326c4d0b41SAdrian Hunter 
17336c4d0b41SAdrian Hunter 	asm volatile("vpmovsxdq %xmm4,%ymm4");
17346c4d0b41SAdrian Hunter 	asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
17356c4d0b41SAdrian Hunter 
17366c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 26 */
17376c4d0b41SAdrian Hunter 
17386c4d0b41SAdrian Hunter 	asm volatile("vptestmb %zmm5,%zmm6,%k5");
17396c4d0b41SAdrian Hunter 	asm volatile("vptestmw %zmm5,%zmm6,%k5");
17406c4d0b41SAdrian Hunter 	asm volatile("vptestnmb %zmm4,%zmm5,%k5");
17416c4d0b41SAdrian Hunter 	asm volatile("vptestnmw %zmm4,%zmm5,%k5");
17426c4d0b41SAdrian Hunter 
17436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 27 */
17446c4d0b41SAdrian Hunter 
17456c4d0b41SAdrian Hunter 	asm volatile("vptestmd %zmm5,%zmm6,%k5");
17466c4d0b41SAdrian Hunter 	asm volatile("vptestmq %zmm5,%zmm6,%k5");
17476c4d0b41SAdrian Hunter 	asm volatile("vptestnmd %zmm4,%zmm5,%k5");
17486c4d0b41SAdrian Hunter 	asm volatile("vptestnmq %zmm4,%zmm5,%k5");
17496c4d0b41SAdrian Hunter 
17506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 28 */
17516c4d0b41SAdrian Hunter 
17526c4d0b41SAdrian Hunter 	asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
17536c4d0b41SAdrian Hunter 	asm volatile("vpmovm2b %k5,%zmm6");
17546c4d0b41SAdrian Hunter 	asm volatile("vpmovm2w %k5,%zmm6");
17556c4d0b41SAdrian Hunter 
17566c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 29 */
17576c4d0b41SAdrian Hunter 
17586c4d0b41SAdrian Hunter 	asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
17596c4d0b41SAdrian Hunter 	asm volatile("vpmovb2m %zmm6,%k5");
17606c4d0b41SAdrian Hunter 	asm volatile("vpmovw2m %zmm6,%k5");
17616c4d0b41SAdrian Hunter 
17626c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2a */
17636c4d0b41SAdrian Hunter 
17646c4d0b41SAdrian Hunter 	asm volatile("vmovntdqa (%ecx),%ymm4");
17656c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmb2q %k6,%zmm1");
17666c4d0b41SAdrian Hunter 
17676c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2c */
17686c4d0b41SAdrian Hunter 
17696c4d0b41SAdrian Hunter 	asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
17706c4d0b41SAdrian Hunter 	asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
17716c4d0b41SAdrian Hunter 	asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
17726c4d0b41SAdrian Hunter 
17736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2d */
17746c4d0b41SAdrian Hunter 
17756c4d0b41SAdrian Hunter 	asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
17766c4d0b41SAdrian Hunter 	asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
17776c4d0b41SAdrian Hunter 	asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
17786c4d0b41SAdrian Hunter 
17796c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 30 */
17806c4d0b41SAdrian Hunter 
17816c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbw %xmm4,%ymm4");
17826c4d0b41SAdrian Hunter 	asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
17836c4d0b41SAdrian Hunter 
17846c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 31 */
17856c4d0b41SAdrian Hunter 
17866c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbd %xmm4,%ymm6");
17876c4d0b41SAdrian Hunter 	asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
17886c4d0b41SAdrian Hunter 
17896c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 32 */
17906c4d0b41SAdrian Hunter 
17916c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbq %xmm4,%ymm4");
17926c4d0b41SAdrian Hunter 	asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
17936c4d0b41SAdrian Hunter 
17946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 33 */
17956c4d0b41SAdrian Hunter 
17966c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwd %xmm4,%ymm4");
17976c4d0b41SAdrian Hunter 	asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
17986c4d0b41SAdrian Hunter 
17996c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 34 */
18006c4d0b41SAdrian Hunter 
18016c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwq %xmm4,%ymm6");
18026c4d0b41SAdrian Hunter 	asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
18036c4d0b41SAdrian Hunter 
18046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 35 */
18056c4d0b41SAdrian Hunter 
18066c4d0b41SAdrian Hunter 	asm volatile("vpmovzxdq %xmm4,%ymm4");
18076c4d0b41SAdrian Hunter 	asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
18086c4d0b41SAdrian Hunter 
18096c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 36 */
18106c4d0b41SAdrian Hunter 
18116c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2");
18126c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
18136c4d0b41SAdrian Hunter 	asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
18146c4d0b41SAdrian Hunter 
18156c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 38 */
18166c4d0b41SAdrian Hunter 
18176c4d0b41SAdrian Hunter 	asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
18186c4d0b41SAdrian Hunter 	asm volatile("vpmovm2d %k5,%zmm6");
18196c4d0b41SAdrian Hunter 	asm volatile("vpmovm2q %k5,%zmm6");
18206c4d0b41SAdrian Hunter 
18216c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 39 */
18226c4d0b41SAdrian Hunter 
18236c4d0b41SAdrian Hunter 	asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
18246c4d0b41SAdrian Hunter 	asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
18256c4d0b41SAdrian Hunter 	asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
18266c4d0b41SAdrian Hunter 	asm volatile("vpmovd2m %zmm6,%k5");
18276c4d0b41SAdrian Hunter 	asm volatile("vpmovq2m %zmm6,%k5");
18286c4d0b41SAdrian Hunter 
18296c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3a */
18306c4d0b41SAdrian Hunter 
18316c4d0b41SAdrian Hunter 	asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
18326c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmw2d %k6,%zmm6");
18336c4d0b41SAdrian Hunter 
18346c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3b */
18356c4d0b41SAdrian Hunter 
18366c4d0b41SAdrian Hunter 	asm volatile("vpminud %ymm4,%ymm6,%ymm2");
18376c4d0b41SAdrian Hunter 	asm volatile("vpminud %zmm4,%zmm5,%zmm6");
18386c4d0b41SAdrian Hunter 	asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
18396c4d0b41SAdrian Hunter 
18406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3d */
18416c4d0b41SAdrian Hunter 
18426c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
18436c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
18446c4d0b41SAdrian Hunter 	asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
18456c4d0b41SAdrian Hunter 
18466c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3f */
18476c4d0b41SAdrian Hunter 
18486c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
18496c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
18506c4d0b41SAdrian Hunter 	asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
18516c4d0b41SAdrian Hunter 
18526c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 40 */
18536c4d0b41SAdrian Hunter 
18546c4d0b41SAdrian Hunter 	asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
18556c4d0b41SAdrian Hunter 	asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
18566c4d0b41SAdrian Hunter 	asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
18576c4d0b41SAdrian Hunter 
18586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 42 */
18596c4d0b41SAdrian Hunter 
18606c4d0b41SAdrian Hunter 	asm volatile("vgetexpps %zmm5,%zmm6");
18616c4d0b41SAdrian Hunter 	asm volatile("vgetexppd %zmm5,%zmm6");
18626c4d0b41SAdrian Hunter 
18636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 43 */
18646c4d0b41SAdrian Hunter 
18656c4d0b41SAdrian Hunter 	asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
18666c4d0b41SAdrian Hunter 	asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
18676c4d0b41SAdrian Hunter 
18686c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 44 */
18696c4d0b41SAdrian Hunter 
18706c4d0b41SAdrian Hunter 	asm volatile("vplzcntd %zmm5,%zmm6");
18716c4d0b41SAdrian Hunter 	asm volatile("vplzcntq %zmm5,%zmm6");
18726c4d0b41SAdrian Hunter 
18736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 46 */
18746c4d0b41SAdrian Hunter 
18756c4d0b41SAdrian Hunter 	asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
18766c4d0b41SAdrian Hunter 	asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
18776c4d0b41SAdrian Hunter 	asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
18786c4d0b41SAdrian Hunter 
18796c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4c */
18806c4d0b41SAdrian Hunter 
18816c4d0b41SAdrian Hunter 	asm volatile("vrcp14ps %zmm5,%zmm6");
18826c4d0b41SAdrian Hunter 	asm volatile("vrcp14pd %zmm5,%zmm6");
18836c4d0b41SAdrian Hunter 
18846c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4d */
18856c4d0b41SAdrian Hunter 
18866c4d0b41SAdrian Hunter 	asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
18876c4d0b41SAdrian Hunter 	asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
18886c4d0b41SAdrian Hunter 
18896c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4e */
18906c4d0b41SAdrian Hunter 
18916c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ps %zmm5,%zmm6");
18926c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14pd %zmm5,%zmm6");
18936c4d0b41SAdrian Hunter 
18946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4f */
18956c4d0b41SAdrian Hunter 
18966c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
18976c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
18986c4d0b41SAdrian Hunter 
18996c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 59 */
19006c4d0b41SAdrian Hunter 
19016c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %xmm4,%xmm6");
19026c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
19036c4d0b41SAdrian Hunter 
19046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5a */
19056c4d0b41SAdrian Hunter 
19066c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti128 (%ecx),%ymm4");
19076c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
19086c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
19096c4d0b41SAdrian Hunter 
19106c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5b */
19116c4d0b41SAdrian Hunter 
19126c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
19136c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
19146c4d0b41SAdrian Hunter 
19156c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 64 */
19166c4d0b41SAdrian Hunter 
19176c4d0b41SAdrian Hunter 	asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
19186c4d0b41SAdrian Hunter 	asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
19196c4d0b41SAdrian Hunter 
19206c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 65 */
19216c4d0b41SAdrian Hunter 
19226c4d0b41SAdrian Hunter 	asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
19236c4d0b41SAdrian Hunter 	asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
19246c4d0b41SAdrian Hunter 
19256c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 66 */
19266c4d0b41SAdrian Hunter 
19276c4d0b41SAdrian Hunter 	asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
19286c4d0b41SAdrian Hunter 	asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
19296c4d0b41SAdrian Hunter 
19306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 75 */
19316c4d0b41SAdrian Hunter 
19326c4d0b41SAdrian Hunter 	asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
19336c4d0b41SAdrian Hunter 	asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
19346c4d0b41SAdrian Hunter 
19356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 76 */
19366c4d0b41SAdrian Hunter 
19376c4d0b41SAdrian Hunter 	asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
19386c4d0b41SAdrian Hunter 	asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
19396c4d0b41SAdrian Hunter 
19406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 77 */
19416c4d0b41SAdrian Hunter 
19426c4d0b41SAdrian Hunter 	asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
19436c4d0b41SAdrian Hunter 	asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
19446c4d0b41SAdrian Hunter 
19456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7a */
19466c4d0b41SAdrian Hunter 
19476c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastb %eax,%xmm3");
19486c4d0b41SAdrian Hunter 
19496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7b */
19506c4d0b41SAdrian Hunter 
19516c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastw %eax,%xmm3");
19526c4d0b41SAdrian Hunter 
19536c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7c */
19546c4d0b41SAdrian Hunter 
19556c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastd %eax,%xmm3");
19566c4d0b41SAdrian Hunter 
19576c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7d */
19586c4d0b41SAdrian Hunter 
19596c4d0b41SAdrian Hunter 	asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
19606c4d0b41SAdrian Hunter 	asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
19616c4d0b41SAdrian Hunter 
19626c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7e */
19636c4d0b41SAdrian Hunter 
19646c4d0b41SAdrian Hunter 	asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
19656c4d0b41SAdrian Hunter 	asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
19666c4d0b41SAdrian Hunter 
19676c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7f */
19686c4d0b41SAdrian Hunter 
19696c4d0b41SAdrian Hunter 	asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
19706c4d0b41SAdrian Hunter 	asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
19716c4d0b41SAdrian Hunter 
19726c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 83 */
19736c4d0b41SAdrian Hunter 
19746c4d0b41SAdrian Hunter 	asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
19756c4d0b41SAdrian Hunter 
19766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 88 */
19776c4d0b41SAdrian Hunter 
19786c4d0b41SAdrian Hunter 	asm volatile("vexpandps (%ecx),%zmm6");
19796c4d0b41SAdrian Hunter 	asm volatile("vexpandpd (%ecx),%zmm6");
19806c4d0b41SAdrian Hunter 
19816c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 89 */
19826c4d0b41SAdrian Hunter 
19836c4d0b41SAdrian Hunter 	asm volatile("vpexpandd (%ecx),%zmm6");
19846c4d0b41SAdrian Hunter 	asm volatile("vpexpandq (%ecx),%zmm6");
19856c4d0b41SAdrian Hunter 
19866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8a */
19876c4d0b41SAdrian Hunter 
19886c4d0b41SAdrian Hunter 	asm volatile("vcompressps %zmm6,(%ecx)");
19896c4d0b41SAdrian Hunter 	asm volatile("vcompresspd %zmm6,(%ecx)");
19906c4d0b41SAdrian Hunter 
19916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8b */
19926c4d0b41SAdrian Hunter 
19936c4d0b41SAdrian Hunter 	asm volatile("vpcompressd %zmm6,(%ecx)");
19946c4d0b41SAdrian Hunter 	asm volatile("vpcompressq %zmm6,(%ecx)");
19956c4d0b41SAdrian Hunter 
19966c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8d */
19976c4d0b41SAdrian Hunter 
19986c4d0b41SAdrian Hunter 	asm volatile("vpermb %zmm4,%zmm5,%zmm6");
19996c4d0b41SAdrian Hunter 	asm volatile("vpermw %zmm4,%zmm5,%zmm6");
20006c4d0b41SAdrian Hunter 
20016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 90 */
20026c4d0b41SAdrian Hunter 
20036c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
20046c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
20056c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
20066c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
20076c4d0b41SAdrian Hunter 
20086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 91 */
20096c4d0b41SAdrian Hunter 
20106c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
20116c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
20126c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
20136c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
20146c4d0b41SAdrian Hunter 
20156c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a0 */
20166c4d0b41SAdrian Hunter 
20176c4d0b41SAdrian Hunter 	asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
20186c4d0b41SAdrian Hunter 	asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
20196c4d0b41SAdrian Hunter 
20206c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a1 */
20216c4d0b41SAdrian Hunter 
20226c4d0b41SAdrian Hunter 	asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
20236c4d0b41SAdrian Hunter 	asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
20246c4d0b41SAdrian Hunter 
20256c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a2 */
20266c4d0b41SAdrian Hunter 
20276c4d0b41SAdrian Hunter 	asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
20286c4d0b41SAdrian Hunter 	asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
20296c4d0b41SAdrian Hunter 
20306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a3 */
20316c4d0b41SAdrian Hunter 
20326c4d0b41SAdrian Hunter 	asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
20336c4d0b41SAdrian Hunter 	asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
20346c4d0b41SAdrian Hunter 
20356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b4 */
20366c4d0b41SAdrian Hunter 
20376c4d0b41SAdrian Hunter 	asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
20386c4d0b41SAdrian Hunter 
20396c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b5 */
20406c4d0b41SAdrian Hunter 
20416c4d0b41SAdrian Hunter 	asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
20426c4d0b41SAdrian Hunter 
20436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c4 */
20446c4d0b41SAdrian Hunter 
20456c4d0b41SAdrian Hunter 	asm volatile("vpconflictd %zmm5,%zmm6");
20466c4d0b41SAdrian Hunter 	asm volatile("vpconflictq %zmm5,%zmm6");
20476c4d0b41SAdrian Hunter 
20486c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c8 */
20496c4d0b41SAdrian Hunter 
20506c4d0b41SAdrian Hunter 	asm volatile("vexp2ps %zmm6,%zmm7");
20516c4d0b41SAdrian Hunter 	asm volatile("vexp2pd %zmm6,%zmm7");
20526c4d0b41SAdrian Hunter 
20536c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 ca */
20546c4d0b41SAdrian Hunter 
20556c4d0b41SAdrian Hunter 	asm volatile("vrcp28ps %zmm6,%zmm7");
20566c4d0b41SAdrian Hunter 	asm volatile("vrcp28pd %zmm6,%zmm7");
20576c4d0b41SAdrian Hunter 
20586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cb */
20596c4d0b41SAdrian Hunter 
20606c4d0b41SAdrian Hunter 	asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
20616c4d0b41SAdrian Hunter 	asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
20626c4d0b41SAdrian Hunter 
20636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cc */
20646c4d0b41SAdrian Hunter 
20656c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ps %zmm6,%zmm7");
20666c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28pd %zmm6,%zmm7");
20676c4d0b41SAdrian Hunter 
20686c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cd */
20696c4d0b41SAdrian Hunter 
20706c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
20716c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
20726c4d0b41SAdrian Hunter 
20736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 03 */
20746c4d0b41SAdrian Hunter 
20756c4d0b41SAdrian Hunter 	asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
20766c4d0b41SAdrian Hunter 	asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
20776c4d0b41SAdrian Hunter 
20786c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 08 */
20796c4d0b41SAdrian Hunter 
20806c4d0b41SAdrian Hunter 	asm volatile("vroundps $0x5,%ymm6,%ymm2");
20816c4d0b41SAdrian Hunter 	asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
20826c4d0b41SAdrian Hunter 
20836c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 09 */
20846c4d0b41SAdrian Hunter 
20856c4d0b41SAdrian Hunter 	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
20866c4d0b41SAdrian Hunter 	asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
20876c4d0b41SAdrian Hunter 
20886c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0a */
20896c4d0b41SAdrian Hunter 
20906c4d0b41SAdrian Hunter 	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
20916c4d0b41SAdrian Hunter 	asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
20926c4d0b41SAdrian Hunter 
20936c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0b */
20946c4d0b41SAdrian Hunter 
20956c4d0b41SAdrian Hunter 	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
20966c4d0b41SAdrian Hunter 	asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
20976c4d0b41SAdrian Hunter 
20986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 18 */
20996c4d0b41SAdrian Hunter 
21006c4d0b41SAdrian Hunter 	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
21016c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
21026c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
21036c4d0b41SAdrian Hunter 
21046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 19 */
21056c4d0b41SAdrian Hunter 
21066c4d0b41SAdrian Hunter 	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
21076c4d0b41SAdrian Hunter 	asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
21086c4d0b41SAdrian Hunter 	asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
21096c4d0b41SAdrian Hunter 
21106c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
21116c4d0b41SAdrian Hunter 
21126c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
21136c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
21146c4d0b41SAdrian Hunter 
21156c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1b */
21166c4d0b41SAdrian Hunter 
21176c4d0b41SAdrian Hunter 	asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
21186c4d0b41SAdrian Hunter 	asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
21196c4d0b41SAdrian Hunter 
21206c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1e */
21216c4d0b41SAdrian Hunter 
21226c4d0b41SAdrian Hunter 	asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
21236c4d0b41SAdrian Hunter 	asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
21246c4d0b41SAdrian Hunter 
21256c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1f */
21266c4d0b41SAdrian Hunter 
21276c4d0b41SAdrian Hunter 	asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
21286c4d0b41SAdrian Hunter 	asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
21296c4d0b41SAdrian Hunter 
21306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 23 */
21316c4d0b41SAdrian Hunter 
21326c4d0b41SAdrian Hunter 	asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
21336c4d0b41SAdrian Hunter 	asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
21346c4d0b41SAdrian Hunter 
21356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 25 */
21366c4d0b41SAdrian Hunter 
21376c4d0b41SAdrian Hunter 	asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
21386c4d0b41SAdrian Hunter 	asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
21396c4d0b41SAdrian Hunter 
21406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 26 */
21416c4d0b41SAdrian Hunter 
21426c4d0b41SAdrian Hunter 	asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
21436c4d0b41SAdrian Hunter 	asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
21446c4d0b41SAdrian Hunter 
21456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 27 */
21466c4d0b41SAdrian Hunter 
21476c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
21486c4d0b41SAdrian Hunter 	asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
21496c4d0b41SAdrian Hunter 
21506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 38 */
21516c4d0b41SAdrian Hunter 
21526c4d0b41SAdrian Hunter 	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
21536c4d0b41SAdrian Hunter 	asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
21546c4d0b41SAdrian Hunter 	asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
21556c4d0b41SAdrian Hunter 
21566c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 39 */
21576c4d0b41SAdrian Hunter 
21586c4d0b41SAdrian Hunter 	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
21596c4d0b41SAdrian Hunter 	asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
21606c4d0b41SAdrian Hunter 	asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
21616c4d0b41SAdrian Hunter 
21626c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3a */
21636c4d0b41SAdrian Hunter 
21646c4d0b41SAdrian Hunter 	asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
21656c4d0b41SAdrian Hunter 	asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
21666c4d0b41SAdrian Hunter 
21676c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3b */
21686c4d0b41SAdrian Hunter 
21696c4d0b41SAdrian Hunter 	asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
21706c4d0b41SAdrian Hunter 	asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
21716c4d0b41SAdrian Hunter 
21726c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3e */
21736c4d0b41SAdrian Hunter 
21746c4d0b41SAdrian Hunter 	asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
21756c4d0b41SAdrian Hunter 	asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
21766c4d0b41SAdrian Hunter 
21776c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3f */
21786c4d0b41SAdrian Hunter 
21796c4d0b41SAdrian Hunter 	asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
21806c4d0b41SAdrian Hunter 	asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
21816c4d0b41SAdrian Hunter 
21826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 42 */
21836c4d0b41SAdrian Hunter 
21846c4d0b41SAdrian Hunter 	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
21856c4d0b41SAdrian Hunter 	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
21866c4d0b41SAdrian Hunter 
21876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
21886c4d0b41SAdrian Hunter 
21896c4d0b41SAdrian Hunter 	asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
21906c4d0b41SAdrian Hunter 	asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
21916c4d0b41SAdrian Hunter 
21926c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 50 */
21936c4d0b41SAdrian Hunter 
21946c4d0b41SAdrian Hunter 	asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
21956c4d0b41SAdrian Hunter 	asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
21966c4d0b41SAdrian Hunter 
21976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 51 */
21986c4d0b41SAdrian Hunter 
21996c4d0b41SAdrian Hunter 	asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
22006c4d0b41SAdrian Hunter 	asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
22016c4d0b41SAdrian Hunter 
22026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 54 */
22036c4d0b41SAdrian Hunter 
22046c4d0b41SAdrian Hunter 	asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
22056c4d0b41SAdrian Hunter 	asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
22066c4d0b41SAdrian Hunter 
22076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 55 */
22086c4d0b41SAdrian Hunter 
22096c4d0b41SAdrian Hunter 	asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
22106c4d0b41SAdrian Hunter 	asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
22116c4d0b41SAdrian Hunter 
22126c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 56 */
22136c4d0b41SAdrian Hunter 
22146c4d0b41SAdrian Hunter 	asm volatile("vreduceps $0x12,%zmm6,%zmm7");
22156c4d0b41SAdrian Hunter 	asm volatile("vreducepd $0x12,%zmm6,%zmm7");
22166c4d0b41SAdrian Hunter 
22176c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 57 */
22186c4d0b41SAdrian Hunter 
22196c4d0b41SAdrian Hunter 	asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
22206c4d0b41SAdrian Hunter 	asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
22216c4d0b41SAdrian Hunter 
22226c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 66 */
22236c4d0b41SAdrian Hunter 
22246c4d0b41SAdrian Hunter 	asm volatile("vfpclassps $0x12,%zmm7,%k5");
22256c4d0b41SAdrian Hunter 	asm volatile("vfpclasspd $0x12,%zmm7,%k5");
22266c4d0b41SAdrian Hunter 
22276c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 67 */
22286c4d0b41SAdrian Hunter 
22296c4d0b41SAdrian Hunter 	asm volatile("vfpclassss $0x12,%xmm7,%k5");
22306c4d0b41SAdrian Hunter 	asm volatile("vfpclasssd $0x12,%xmm7,%k5");
22316c4d0b41SAdrian Hunter 
22326c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 72 (Grp13) */
22336c4d0b41SAdrian Hunter 
22346c4d0b41SAdrian Hunter 	asm volatile("vprord $0x12,%zmm5,%zmm6");
22356c4d0b41SAdrian Hunter 	asm volatile("vprorq $0x12,%zmm5,%zmm6");
22366c4d0b41SAdrian Hunter 	asm volatile("vprold $0x12,%zmm5,%zmm6");
22376c4d0b41SAdrian Hunter 	asm volatile("vprolq $0x12,%zmm5,%zmm6");
22386c4d0b41SAdrian Hunter 	asm volatile("psrad  $0x2,%mm6");
22396c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
22406c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%zmm6,%zmm2");
22416c4d0b41SAdrian Hunter 	asm volatile("vpsraq $0x5,%zmm6,%zmm2");
22426c4d0b41SAdrian Hunter 
22436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c6 (Grp18) */
22446c4d0b41SAdrian Hunter 
22456c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
22466c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
22476c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
22486c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
22496c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
22506c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
22516c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
22526c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
22536c4d0b41SAdrian Hunter 
22546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c7 (Grp19) */
22556c4d0b41SAdrian Hunter 
22566c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
22576c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
22586c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
22596c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
22606c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
22616c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
22626c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
22636c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
22646c4d0b41SAdrian Hunter 
22656c4d0b41SAdrian Hunter 	/* AVX-512: Examples */
22666c4d0b41SAdrian Hunter 
22676c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
22686c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
22696c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
22706c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
22716c4d0b41SAdrian Hunter 	asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
22726c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
22736c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
22746c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
22756c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
22766c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
22776c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
22786c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
22796c4d0b41SAdrian Hunter 	asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
22806c4d0b41SAdrian Hunter 	asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
22816c4d0b41SAdrian Hunter 	asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
22826c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
22836c4d0b41SAdrian Hunter 
2284d8b167f9SMatt Fleming 	/* bndmk m32, bnd */
2285d8b167f9SMatt Fleming 
2286d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax), %bnd0");
2287d8b167f9SMatt Fleming 	asm volatile("bndmk (0x12345678), %bnd0");
2288d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax), %bnd3");
2289d8b167f9SMatt Fleming 	asm volatile("bndmk (%ecx,%eax,1), %bnd0");
2290d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
2291d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax,%ecx,1), %bnd0");
2292d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax,%ecx,8), %bnd0");
2293d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax), %bnd0");
2294d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ebp), %bnd0");
2295d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
2296d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
2297d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
2298d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
2299d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax), %bnd0");
2300d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ebp), %bnd0");
2301d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
2302d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
2303d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
2304d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
2305d8b167f9SMatt Fleming 
2306d8b167f9SMatt Fleming 	/* bndcl r/m32, bnd */
2307d8b167f9SMatt Fleming 
2308d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax), %bnd0");
2309d8b167f9SMatt Fleming 	asm volatile("bndcl (0x12345678), %bnd0");
2310d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax), %bnd3");
2311d8b167f9SMatt Fleming 	asm volatile("bndcl (%ecx,%eax,1), %bnd0");
2312d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
2313d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax,%ecx,1), %bnd0");
2314d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax,%ecx,8), %bnd0");
2315d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax), %bnd0");
2316d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ebp), %bnd0");
2317d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
2318d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
2319d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
2320d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
2321d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax), %bnd0");
2322d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ebp), %bnd0");
2323d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
2324d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
2325d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
2326d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
2327d8b167f9SMatt Fleming 	asm volatile("bndcl %eax, %bnd0");
2328d8b167f9SMatt Fleming 
2329d8b167f9SMatt Fleming 	/* bndcu r/m32, bnd */
2330d8b167f9SMatt Fleming 
2331d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax), %bnd0");
2332d8b167f9SMatt Fleming 	asm volatile("bndcu (0x12345678), %bnd0");
2333d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax), %bnd3");
2334d8b167f9SMatt Fleming 	asm volatile("bndcu (%ecx,%eax,1), %bnd0");
2335d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
2336d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax,%ecx,1), %bnd0");
2337d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax,%ecx,8), %bnd0");
2338d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax), %bnd0");
2339d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ebp), %bnd0");
2340d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
2341d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
2342d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
2343d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
2344d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax), %bnd0");
2345d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ebp), %bnd0");
2346d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
2347d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
2348d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
2349d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
2350d8b167f9SMatt Fleming 	asm volatile("bndcu %eax, %bnd0");
2351d8b167f9SMatt Fleming 
2352d8b167f9SMatt Fleming 	/* bndcn r/m32, bnd */
2353d8b167f9SMatt Fleming 
2354d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax), %bnd0");
2355d8b167f9SMatt Fleming 	asm volatile("bndcn (0x12345678), %bnd0");
2356d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax), %bnd3");
2357d8b167f9SMatt Fleming 	asm volatile("bndcn (%ecx,%eax,1), %bnd0");
2358d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
2359d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax,%ecx,1), %bnd0");
2360d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax,%ecx,8), %bnd0");
2361d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax), %bnd0");
2362d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ebp), %bnd0");
2363d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
2364d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
2365d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
2366d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
2367d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax), %bnd0");
2368d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ebp), %bnd0");
2369d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
2370d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
2371d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
2372d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
2373d8b167f9SMatt Fleming 	asm volatile("bndcn %eax, %bnd0");
2374d8b167f9SMatt Fleming 
2375d8b167f9SMatt Fleming 	/* bndmov m64, bnd */
2376d8b167f9SMatt Fleming 
2377d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax), %bnd0");
2378d8b167f9SMatt Fleming 	asm volatile("bndmov (0x12345678), %bnd0");
2379d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax), %bnd3");
2380d8b167f9SMatt Fleming 	asm volatile("bndmov (%ecx,%eax,1), %bnd0");
2381d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
2382d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax,%ecx,1), %bnd0");
2383d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax,%ecx,8), %bnd0");
2384d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax), %bnd0");
2385d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ebp), %bnd0");
2386d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
2387d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
2388d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
2389d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
2390d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax), %bnd0");
2391d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ebp), %bnd0");
2392d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
2393d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
2394d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
2395d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
2396d8b167f9SMatt Fleming 
2397d8b167f9SMatt Fleming 	/* bndmov bnd, m64 */
2398d8b167f9SMatt Fleming 
2399d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax)");
2400d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (0x12345678)");
2401d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd3, (%eax)");
2402d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
2403d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
2404d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
2405d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
2406d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax)");
2407d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ebp)");
2408d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
2409d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
2410d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
2411d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
2412d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax)");
2413d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
2414d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
2415d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
2416d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
2417d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
2418d8b167f9SMatt Fleming 
2419d8b167f9SMatt Fleming 	/* bndmov bnd2, bnd1 */
2420d8b167f9SMatt Fleming 
2421d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, %bnd1");
2422d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd1, %bnd0");
2423d8b167f9SMatt Fleming 
2424d8b167f9SMatt Fleming 	/* bndldx mib, bnd */
2425d8b167f9SMatt Fleming 
2426d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax), %bnd0");
2427d8b167f9SMatt Fleming 	asm volatile("bndldx (0x12345678), %bnd0");
2428d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax), %bnd3");
2429d8b167f9SMatt Fleming 	asm volatile("bndldx (%ecx,%eax,1), %bnd0");
2430d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
2431d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax,%ecx,1), %bnd0");
2432d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%eax), %bnd0");
2433d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ebp), %bnd0");
2434d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
2435d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
2436d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
2437d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%eax), %bnd0");
2438d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ebp), %bnd0");
2439d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
2440d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
2441d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
2442d8b167f9SMatt Fleming 
2443d8b167f9SMatt Fleming 	/* bndstx bnd, mib */
2444d8b167f9SMatt Fleming 
2445d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%eax)");
2446d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (0x12345678)");
2447d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd3, (%eax)");
2448d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
2449d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
2450d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
2451d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%eax)");
2452d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ebp)");
2453d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
2454d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
2455d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
2456d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%eax)");
2457d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
2458d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
2459d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
2460d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
2461d8b167f9SMatt Fleming 
2462d8b167f9SMatt Fleming 	/* bnd prefix on call, ret, jmp and all jcc */
2463d8b167f9SMatt Fleming 
2464d8b167f9SMatt Fleming 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
2465d8b167f9SMatt Fleming 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
2466d8b167f9SMatt Fleming 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
2467d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2468d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
2469d8b167f9SMatt Fleming 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
2470d8b167f9SMatt Fleming 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
2471d8b167f9SMatt Fleming 
2472d8b167f9SMatt Fleming 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
2473d8b167f9SMatt Fleming 
2474d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
2475d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
2476d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
2477d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
2478d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
2479d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
2480d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
2481d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
2482d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
2483d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
2484d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
2485d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
2486d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
2487d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
2488d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
2489d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
2490d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
2491d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
2492d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
2493d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
2494d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
2495d8b167f9SMatt Fleming 
2496d8b167f9SMatt Fleming 	/* sha1nexte xmm2/m128, xmm1 */
2497d8b167f9SMatt Fleming 
2498d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm1, %xmm0");
2499d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm2");
2500d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax), %xmm0");
2501d8b167f9SMatt Fleming 	asm volatile("sha1nexte (0x12345678), %xmm0");
2502d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax), %xmm3");
2503d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
2504d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
2505d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
2506d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
2507d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax), %xmm0");
2508d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ebp), %xmm0");
2509d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
2510d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
2511d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
2512d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
2513d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
2514d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
2515d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
2516d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
2517d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
2518d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
2519d8b167f9SMatt Fleming 
2520d8b167f9SMatt Fleming 	/* sha1msg1 xmm2/m128, xmm1 */
2521d8b167f9SMatt Fleming 
2522d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm1, %xmm0");
2523d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm2");
2524d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax), %xmm0");
2525d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (0x12345678), %xmm0");
2526d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax), %xmm3");
2527d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
2528d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
2529d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
2530d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
2531d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax), %xmm0");
2532d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ebp), %xmm0");
2533d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
2534d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
2535d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
2536d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
2537d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
2538d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
2539d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
2540d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
2541d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
2542d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
2543d8b167f9SMatt Fleming 
2544d8b167f9SMatt Fleming 	/* sha1msg2 xmm2/m128, xmm1 */
2545d8b167f9SMatt Fleming 
2546d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm1, %xmm0");
2547d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm2");
2548d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax), %xmm0");
2549d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (0x12345678), %xmm0");
2550d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax), %xmm3");
2551d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
2552d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
2553d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
2554d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
2555d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax), %xmm0");
2556d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ebp), %xmm0");
2557d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
2558d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
2559d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
2560d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
2561d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
2562d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
2563d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
2564d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
2565d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
2566d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
2567d8b167f9SMatt Fleming 
2568d8b167f9SMatt Fleming 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
2569d8b167f9SMatt Fleming 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
2570d8b167f9SMatt Fleming 
2571d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm4, %xmm1");
2572d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm2");
2573d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax), %xmm1");
2574d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
2575d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax), %xmm3");
2576d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
2577d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
2578d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
2579d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
2580d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax), %xmm1");
2581d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
2582d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
2583d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
2584d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
2585d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
2586d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
2587d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
2588d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
2589d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
2590d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
2591d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
2592d8b167f9SMatt Fleming 
2593d8b167f9SMatt Fleming 	/* sha256msg1 xmm2/m128, xmm1 */
2594d8b167f9SMatt Fleming 
2595d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm1, %xmm0");
2596d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm2");
2597d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax), %xmm0");
2598d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (0x12345678), %xmm0");
2599d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax), %xmm3");
2600d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
2601d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
2602d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
2603d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
2604d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax), %xmm0");
2605d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ebp), %xmm0");
2606d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
2607d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
2608d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
2609d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
2610d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
2611d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
2612d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
2613d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
2614d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
2615d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
2616d8b167f9SMatt Fleming 
2617d8b167f9SMatt Fleming 	/* sha256msg2 xmm2/m128, xmm1 */
2618d8b167f9SMatt Fleming 
2619d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm1, %xmm0");
2620d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm2");
2621d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax), %xmm0");
2622d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (0x12345678), %xmm0");
2623d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax), %xmm3");
2624d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
2625d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
2626d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
2627d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
2628d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax), %xmm0");
2629d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ebp), %xmm0");
2630d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
2631d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
2632d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
2633d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
2634d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
2635d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
2636d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
2637d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
2638d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
2639d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
2640d8b167f9SMatt Fleming 
2641d8b167f9SMatt Fleming 	/* clflushopt m8 */
2642d8b167f9SMatt Fleming 
2643d8b167f9SMatt Fleming 	asm volatile("clflushopt (%eax)");
2644d8b167f9SMatt Fleming 	asm volatile("clflushopt (0x12345678)");
2645d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
2646d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clflushopt */
2647d8b167f9SMatt Fleming 	asm volatile("clflush (%eax)");
2648d8b167f9SMatt Fleming 	asm volatile("sfence");
2649d8b167f9SMatt Fleming 
2650d8b167f9SMatt Fleming 	/* clwb m8 */
2651d8b167f9SMatt Fleming 
2652d8b167f9SMatt Fleming 	asm volatile("clwb (%eax)");
2653d8b167f9SMatt Fleming 	asm volatile("clwb (0x12345678)");
2654d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%eax,%ecx,8)");
2655d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clwb */
2656d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%eax)");
2657d8b167f9SMatt Fleming 	asm volatile("mfence");
2658d8b167f9SMatt Fleming 
2659d8b167f9SMatt Fleming 	/* xsavec mem */
2660d8b167f9SMatt Fleming 
2661d8b167f9SMatt Fleming 	asm volatile("xsavec (%eax)");
2662d8b167f9SMatt Fleming 	asm volatile("xsavec (0x12345678)");
2663d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
2664d8b167f9SMatt Fleming 
2665d8b167f9SMatt Fleming 	/* xsaves mem */
2666d8b167f9SMatt Fleming 
2667d8b167f9SMatt Fleming 	asm volatile("xsaves (%eax)");
2668d8b167f9SMatt Fleming 	asm volatile("xsaves (0x12345678)");
2669d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
2670d8b167f9SMatt Fleming 
2671d8b167f9SMatt Fleming 	/* xrstors mem */
2672d8b167f9SMatt Fleming 
2673d8b167f9SMatt Fleming 	asm volatile("xrstors (%eax)");
2674d8b167f9SMatt Fleming 	asm volatile("xrstors (0x12345678)");
2675d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
2676d8b167f9SMatt Fleming 
2677d5b1a5f6SAdrian Hunter 	/* ptwrite */
2678d5b1a5f6SAdrian Hunter 
2679d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%eax)");
2680d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (0x12345678)");
2681d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
2682d5b1a5f6SAdrian Hunter 
2683d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%eax)");
2684d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (0x12345678)");
2685d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
2686d5b1a5f6SAdrian Hunter 
2687d8b167f9SMatt Fleming #endif /* #ifndef __x86_64__ */
2688d8b167f9SMatt Fleming 
2689d8b167f9SMatt Fleming 	/* Following line is a marker for the awk script - do not change */
2690d8b167f9SMatt Fleming 	asm volatile("rdtsc"); /* Stop here */
2691d8b167f9SMatt Fleming 
2692d8b167f9SMatt Fleming 	return 0;
2693d8b167f9SMatt Fleming }
2694