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