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