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 
5139adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 50 */
5149adab034SAdrian Hunter 
5159adab034SAdrian Hunter 	asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
5169adab034SAdrian Hunter 	asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
5179adab034SAdrian Hunter 	asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
5189adab034SAdrian Hunter 	asm volatile("vpdpbusd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
5199adab034SAdrian Hunter 	asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
5209adab034SAdrian Hunter 
5219adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 51 */
5229adab034SAdrian Hunter 
5239adab034SAdrian Hunter 	asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
5249adab034SAdrian Hunter 	asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
5259adab034SAdrian Hunter 	asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
5269adab034SAdrian Hunter 	asm volatile("vpdpbusds 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
5279adab034SAdrian Hunter 	asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
5289adab034SAdrian Hunter 
5299adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 52 */
5309adab034SAdrian Hunter 
5319adab034SAdrian Hunter 	asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
5329adab034SAdrian Hunter 	asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
5339adab034SAdrian Hunter 	asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
5349adab034SAdrian Hunter 	asm volatile("vdpbf16ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
5359adab034SAdrian Hunter 	asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
5369adab034SAdrian Hunter 
5379adab034SAdrian Hunter 	asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
5389adab034SAdrian Hunter 	asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
5399adab034SAdrian Hunter 	asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
5409adab034SAdrian Hunter 	asm volatile("vpdpwssd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
5419adab034SAdrian Hunter 	asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
5429adab034SAdrian Hunter 
5439adab034SAdrian Hunter 	asm volatile("vp4dpwssd (%rax), %zmm0, %zmm4");
5449adab034SAdrian Hunter 	asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
5459adab034SAdrian Hunter 	asm volatile("vp4dpwssd 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
5469adab034SAdrian Hunter 	asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
5479adab034SAdrian Hunter 
5489adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 53 */
5499adab034SAdrian Hunter 
5509adab034SAdrian Hunter 	asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
5519adab034SAdrian Hunter 	asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
5529adab034SAdrian Hunter 	asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
5539adab034SAdrian Hunter 	asm volatile("vpdpwssds 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
5549adab034SAdrian Hunter 	asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
5559adab034SAdrian Hunter 
5569adab034SAdrian Hunter 	asm volatile("vp4dpwssds (%rax), %zmm0, %zmm4");
5579adab034SAdrian Hunter 	asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
5589adab034SAdrian Hunter 	asm volatile("vp4dpwssds 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
5599adab034SAdrian Hunter 	asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
5609adab034SAdrian Hunter 
5619adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 54 */
5629adab034SAdrian Hunter 
5639adab034SAdrian Hunter 	asm volatile("vpopcntb %xmm1, %xmm2");
5649adab034SAdrian Hunter 	asm volatile("vpopcntb %ymm1, %ymm2");
5659adab034SAdrian Hunter 	asm volatile("vpopcntb %zmm1, %zmm2");
5669adab034SAdrian Hunter 	asm volatile("vpopcntb 0x12345678(%rax,%rcx,8),%zmm2");
5679adab034SAdrian Hunter 	asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
5689adab034SAdrian Hunter 
5699adab034SAdrian Hunter 	asm volatile("vpopcntw %xmm1, %xmm2");
5709adab034SAdrian Hunter 	asm volatile("vpopcntw %ymm1, %ymm2");
5719adab034SAdrian Hunter 	asm volatile("vpopcntw %zmm1, %zmm2");
5729adab034SAdrian Hunter 	asm volatile("vpopcntw 0x12345678(%rax,%rcx,8),%zmm2");
5739adab034SAdrian Hunter 	asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
5749adab034SAdrian Hunter 
5759adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 55 */
5769adab034SAdrian Hunter 
5779adab034SAdrian Hunter 	asm volatile("vpopcntd %xmm1, %xmm2");
5789adab034SAdrian Hunter 	asm volatile("vpopcntd %ymm1, %ymm2");
5799adab034SAdrian Hunter 	asm volatile("vpopcntd %zmm1, %zmm2");
5809adab034SAdrian Hunter 	asm volatile("vpopcntd 0x12345678(%rax,%rcx,8),%zmm2");
5819adab034SAdrian Hunter 	asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
5829adab034SAdrian Hunter 
5839adab034SAdrian Hunter 	asm volatile("vpopcntq %xmm1, %xmm2");
5849adab034SAdrian Hunter 	asm volatile("vpopcntq %ymm1, %ymm2");
5859adab034SAdrian Hunter 	asm volatile("vpopcntq %zmm1, %zmm2");
5869adab034SAdrian Hunter 	asm volatile("vpopcntq 0x12345678(%rax,%rcx,8),%zmm2");
5879adab034SAdrian Hunter 	asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
5889adab034SAdrian Hunter 
5896c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 59 */
5906c4d0b41SAdrian Hunter 
5916c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %xmm4,%xmm6");
5926c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x2 %xmm27,%zmm26");
5936c4d0b41SAdrian Hunter 
5946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5a */
5956c4d0b41SAdrian Hunter 
5966c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti128 (%rcx),%ymm4");
5976c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x4 (%rcx),%zmm26");
5986c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x2 (%rcx),%zmm26");
5996c4d0b41SAdrian Hunter 
6006c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5b */
6016c4d0b41SAdrian Hunter 
6026c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x8 (%rcx),%zmm28");
6036c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x4 (%rcx),%zmm26");
6046c4d0b41SAdrian Hunter 
6059adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 62 */
6069adab034SAdrian Hunter 
6079adab034SAdrian Hunter 	asm volatile("vpexpandb %xmm1, %xmm2");
6089adab034SAdrian Hunter 	asm volatile("vpexpandb %ymm1, %ymm2");
6099adab034SAdrian Hunter 	asm volatile("vpexpandb %zmm1, %zmm2");
6109adab034SAdrian Hunter 	asm volatile("vpexpandb 0x12345678(%rax,%rcx,8),%zmm2");
6119adab034SAdrian Hunter 	asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
6129adab034SAdrian Hunter 
6139adab034SAdrian Hunter 	asm volatile("vpexpandw %xmm1, %xmm2");
6149adab034SAdrian Hunter 	asm volatile("vpexpandw %ymm1, %ymm2");
6159adab034SAdrian Hunter 	asm volatile("vpexpandw %zmm1, %zmm2");
6169adab034SAdrian Hunter 	asm volatile("vpexpandw 0x12345678(%rax,%rcx,8),%zmm2");
6179adab034SAdrian Hunter 	asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
6189adab034SAdrian Hunter 
6199adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 63 */
6209adab034SAdrian Hunter 
6219adab034SAdrian Hunter 	asm volatile("vpcompressb %xmm1, %xmm2");
6229adab034SAdrian Hunter 	asm volatile("vpcompressb %ymm1, %ymm2");
6239adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm1, %zmm2");
6249adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm2,0x12345678(%rax,%rcx,8)");
6259adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
6269adab034SAdrian Hunter 
6279adab034SAdrian Hunter 	asm volatile("vpcompressw %xmm1, %xmm2");
6289adab034SAdrian Hunter 	asm volatile("vpcompressw %ymm1, %ymm2");
6299adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm1, %zmm2");
6309adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm2,0x12345678(%rax,%rcx,8)");
6319adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
6329adab034SAdrian Hunter 
6336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 64 */
6346c4d0b41SAdrian Hunter 
6356c4d0b41SAdrian Hunter 	asm volatile("vpblendmd %zmm26,%zmm27,%zmm28");
6366c4d0b41SAdrian Hunter 	asm volatile("vpblendmq %zmm26,%zmm27,%zmm28");
6376c4d0b41SAdrian Hunter 
6386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 65 */
6396c4d0b41SAdrian Hunter 
6406c4d0b41SAdrian Hunter 	asm volatile("vblendmps %zmm24,%zmm25,%zmm26");
6416c4d0b41SAdrian Hunter 	asm volatile("vblendmpd %zmm26,%zmm27,%zmm28");
6426c4d0b41SAdrian Hunter 
6436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 66 */
6446c4d0b41SAdrian Hunter 
6456c4d0b41SAdrian Hunter 	asm volatile("vpblendmb %zmm26,%zmm27,%zmm28");
6466c4d0b41SAdrian Hunter 	asm volatile("vpblendmw %zmm26,%zmm27,%zmm28");
6476c4d0b41SAdrian Hunter 
6489adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 68 */
6499adab034SAdrian Hunter 
6509adab034SAdrian Hunter 	asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
6519adab034SAdrian Hunter 	asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
6529adab034SAdrian Hunter 	asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
6539adab034SAdrian Hunter 	asm volatile("vp2intersectd 0x12345678(%rax,%rcx,8),%zmm2,%k3");
6549adab034SAdrian Hunter 	asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
6559adab034SAdrian Hunter 
6569adab034SAdrian Hunter 	asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
6579adab034SAdrian Hunter 	asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
6589adab034SAdrian Hunter 	asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
6599adab034SAdrian Hunter 	asm volatile("vp2intersectq 0x12345678(%rax,%rcx,8),%zmm2,%k3");
6609adab034SAdrian Hunter 	asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
6619adab034SAdrian Hunter 
6629adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 70 */
6639adab034SAdrian Hunter 
6649adab034SAdrian Hunter 	asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
6659adab034SAdrian Hunter 	asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
6669adab034SAdrian Hunter 	asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
6679adab034SAdrian Hunter 	asm volatile("vpshldvw 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
6689adab034SAdrian Hunter 	asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
6699adab034SAdrian Hunter 
6709adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 71 */
6719adab034SAdrian Hunter 
6729adab034SAdrian Hunter 	asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
6739adab034SAdrian Hunter 	asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
6749adab034SAdrian Hunter 	asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
6759adab034SAdrian Hunter 	asm volatile("vpshldvd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
6769adab034SAdrian Hunter 	asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
6779adab034SAdrian Hunter 
6789adab034SAdrian Hunter 	asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
6799adab034SAdrian Hunter 	asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
6809adab034SAdrian Hunter 	asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
6819adab034SAdrian Hunter 	asm volatile("vpshldvq 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
6829adab034SAdrian Hunter 	asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
6839adab034SAdrian Hunter 
6849adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 72 */
6859adab034SAdrian Hunter 
6869adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
6879adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
6889adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
6899adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
6909adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
6919adab034SAdrian Hunter 
6929adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
6939adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
6949adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
6959adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 0x12345678(%rax,%rcx,8),%ymm2");
6969adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
6979adab034SAdrian Hunter 
6989adab034SAdrian Hunter 	asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
6999adab034SAdrian Hunter 	asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
7009adab034SAdrian Hunter 	asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
7019adab034SAdrian Hunter 	asm volatile("vpshrdvw 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
7029adab034SAdrian Hunter 	asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
7039adab034SAdrian Hunter 
7049adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 73 */
7059adab034SAdrian Hunter 
7069adab034SAdrian Hunter 	asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
7079adab034SAdrian Hunter 	asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
7089adab034SAdrian Hunter 	asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
7099adab034SAdrian Hunter 	asm volatile("vpshrdvd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
7109adab034SAdrian Hunter 	asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
7119adab034SAdrian Hunter 
7129adab034SAdrian Hunter 	asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
7139adab034SAdrian Hunter 	asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
7149adab034SAdrian Hunter 	asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
7159adab034SAdrian Hunter 	asm volatile("vpshrdvq 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
7169adab034SAdrian Hunter 	asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
7179adab034SAdrian Hunter 
7186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 75 */
7196c4d0b41SAdrian Hunter 
7206c4d0b41SAdrian Hunter 	asm volatile("vpermi2b %zmm24,%zmm25,%zmm26");
7216c4d0b41SAdrian Hunter 	asm volatile("vpermi2w %zmm26,%zmm27,%zmm28");
7226c4d0b41SAdrian Hunter 
7236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 76 */
7246c4d0b41SAdrian Hunter 
7256c4d0b41SAdrian Hunter 	asm volatile("vpermi2d %zmm26,%zmm27,%zmm28");
7266c4d0b41SAdrian Hunter 	asm volatile("vpermi2q %zmm26,%zmm27,%zmm28");
7276c4d0b41SAdrian Hunter 
7286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 77 */
7296c4d0b41SAdrian Hunter 
7306c4d0b41SAdrian Hunter 	asm volatile("vpermi2ps %zmm26,%zmm27,%zmm28");
7316c4d0b41SAdrian Hunter 	asm volatile("vpermi2pd %zmm26,%zmm27,%zmm28");
7326c4d0b41SAdrian Hunter 
7336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7a */
7346c4d0b41SAdrian Hunter 
7356c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastb %eax,%xmm30");
7366c4d0b41SAdrian Hunter 
7376c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7b */
7386c4d0b41SAdrian Hunter 
7396c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastw %eax,%xmm30");
7406c4d0b41SAdrian Hunter 
7416c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7c */
7426c4d0b41SAdrian Hunter 
7436c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastd %eax,%xmm30");
7446c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %rax,%zmm30");
7456c4d0b41SAdrian Hunter 
7466c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7d */
7476c4d0b41SAdrian Hunter 
7486c4d0b41SAdrian Hunter 	asm volatile("vpermt2b %zmm26,%zmm27,%zmm28");
7496c4d0b41SAdrian Hunter 	asm volatile("vpermt2w %zmm26,%zmm27,%zmm28");
7506c4d0b41SAdrian Hunter 
7516c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7e */
7526c4d0b41SAdrian Hunter 
7536c4d0b41SAdrian Hunter 	asm volatile("vpermt2d %zmm26,%zmm27,%zmm28");
7546c4d0b41SAdrian Hunter 	asm volatile("vpermt2q %zmm26,%zmm27,%zmm28");
7556c4d0b41SAdrian Hunter 
7566c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7f */
7576c4d0b41SAdrian Hunter 
7586c4d0b41SAdrian Hunter 	asm volatile("vpermt2ps %zmm26,%zmm27,%zmm28");
7596c4d0b41SAdrian Hunter 	asm volatile("vpermt2pd %zmm26,%zmm27,%zmm28");
7606c4d0b41SAdrian Hunter 
7616c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 83 */
7626c4d0b41SAdrian Hunter 
7636c4d0b41SAdrian Hunter 	asm volatile("vpmultishiftqb %zmm26,%zmm27,%zmm28");
7646c4d0b41SAdrian Hunter 
7656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 88 */
7666c4d0b41SAdrian Hunter 
7676c4d0b41SAdrian Hunter 	asm volatile("vexpandps (%rcx),%zmm26");
7686c4d0b41SAdrian Hunter 	asm volatile("vexpandpd (%rcx),%zmm28");
7696c4d0b41SAdrian Hunter 
7706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 89 */
7716c4d0b41SAdrian Hunter 
7726c4d0b41SAdrian Hunter 	asm volatile("vpexpandd (%rcx),%zmm28");
7736c4d0b41SAdrian Hunter 	asm volatile("vpexpandq (%rcx),%zmm26");
7746c4d0b41SAdrian Hunter 
7756c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8a */
7766c4d0b41SAdrian Hunter 
7776c4d0b41SAdrian Hunter 	asm volatile("vcompressps %zmm28,(%rcx)");
7786c4d0b41SAdrian Hunter 	asm volatile("vcompresspd %zmm28,(%rcx)");
7796c4d0b41SAdrian Hunter 
7806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8b */
7816c4d0b41SAdrian Hunter 
7826c4d0b41SAdrian Hunter 	asm volatile("vpcompressd %zmm28,(%rcx)");
7836c4d0b41SAdrian Hunter 	asm volatile("vpcompressq %zmm26,(%rcx)");
7846c4d0b41SAdrian Hunter 
7856c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8d */
7866c4d0b41SAdrian Hunter 
7876c4d0b41SAdrian Hunter 	asm volatile("vpermb %zmm26,%zmm27,%zmm28");
7886c4d0b41SAdrian Hunter 	asm volatile("vpermw %zmm26,%zmm27,%zmm28");
7896c4d0b41SAdrian Hunter 
7909adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 8f */
7919adab034SAdrian Hunter 
7929adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
7939adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
7949adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
7959adab034SAdrian Hunter 	asm volatile("vpshufbitqmb 0x12345678(%rax,%rcx,8),%zmm2,%k3");
7969adab034SAdrian Hunter 	asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
7979adab034SAdrian Hunter 
7986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 90 */
7996c4d0b41SAdrian Hunter 
8006c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
8016c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq %xmm2,0x04(%rbp,%xmm7,2),%xmm1");
8026c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
8036c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq 0x7b(%rbp,%ymm27,8),%zmm26{%k1}");
8046c4d0b41SAdrian Hunter 
8056c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 91 */
8066c4d0b41SAdrian Hunter 
8076c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
8086c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq %xmm2,0x02(%rbp,%xmm7,2),%xmm1");
8096c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd 0x7b(%rbp,%zmm27,8),%ymm26{%k1}");
8106c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq 0x7b(%rbp,%zmm27,8),%zmm26{%k1}");
8116c4d0b41SAdrian Hunter 
8129adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 9a */
8139adab034SAdrian Hunter 
8149adab034SAdrian Hunter 	asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
8159adab034SAdrian Hunter 	asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
8169adab034SAdrian Hunter 	asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
8179adab034SAdrian Hunter 	asm volatile("vfmsub132ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
8189adab034SAdrian Hunter 	asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
8199adab034SAdrian Hunter 
8209adab034SAdrian Hunter 	asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
8219adab034SAdrian Hunter 	asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
8229adab034SAdrian Hunter 	asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
8239adab034SAdrian Hunter 	asm volatile("vfmsub132pd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
8249adab034SAdrian Hunter 	asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
8259adab034SAdrian Hunter 
8269adab034SAdrian Hunter 	asm volatile("v4fmaddps (%rax), %zmm0, %zmm4");
8279adab034SAdrian Hunter 	asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
8289adab034SAdrian Hunter 	asm volatile("v4fmaddps 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
8299adab034SAdrian Hunter 	asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
8309adab034SAdrian Hunter 
8319adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 9b */
8329adab034SAdrian Hunter 
8339adab034SAdrian Hunter 	asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
8349adab034SAdrian Hunter 	asm volatile("vfmsub132ss 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
8359adab034SAdrian Hunter 	asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
8369adab034SAdrian Hunter 
8379adab034SAdrian Hunter 	asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
8389adab034SAdrian Hunter 	asm volatile("vfmsub132sd 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
8399adab034SAdrian Hunter 	asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
8409adab034SAdrian Hunter 
8419adab034SAdrian Hunter 	asm volatile("v4fmaddss (%rax), %xmm0, %xmm4");
8429adab034SAdrian Hunter 	asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
8439adab034SAdrian Hunter 	asm volatile("v4fmaddss 0x12345678(%rax,%rcx,8),%xmm0,%xmm4");
8449adab034SAdrian Hunter 	asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
8459adab034SAdrian Hunter 
8466c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a0 */
8476c4d0b41SAdrian Hunter 
8486c4d0b41SAdrian Hunter 	asm volatile("vpscatterdd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
8496c4d0b41SAdrian Hunter 	asm volatile("vpscatterdq %zmm26,0x7b(%rbp,%ymm27,8){%k1}");
8506c4d0b41SAdrian Hunter 
8516c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a1 */
8526c4d0b41SAdrian Hunter 
8536c4d0b41SAdrian Hunter 	asm volatile("vpscatterqd %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
8546c4d0b41SAdrian Hunter 	asm volatile("vpscatterqq %ymm6,0x7b(%rbp,%ymm27,8){%k1}");
8556c4d0b41SAdrian Hunter 
8566c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a2 */
8576c4d0b41SAdrian Hunter 
8586c4d0b41SAdrian Hunter 	asm volatile("vscatterdps %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
8596c4d0b41SAdrian Hunter 	asm volatile("vscatterdpd %zmm28,0x7b(%rbp,%ymm27,8){%k1}");
8606c4d0b41SAdrian Hunter 
8616c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a3 */
8626c4d0b41SAdrian Hunter 
8636c4d0b41SAdrian Hunter 	asm volatile("vscatterqps %ymm6,0x7b(%rbp,%zmm29,8){%k1}");
8646c4d0b41SAdrian Hunter 	asm volatile("vscatterqpd %zmm28,0x7b(%rbp,%zmm29,8){%k1}");
8656c4d0b41SAdrian Hunter 
8669adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 aa */
8679adab034SAdrian Hunter 
8689adab034SAdrian Hunter 	asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
8699adab034SAdrian Hunter 	asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
8709adab034SAdrian Hunter 	asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
8719adab034SAdrian Hunter 	asm volatile("vfmsub213ps 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
8729adab034SAdrian Hunter 	asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
8739adab034SAdrian Hunter 
8749adab034SAdrian Hunter 	asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
8759adab034SAdrian Hunter 	asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
8769adab034SAdrian Hunter 	asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
8779adab034SAdrian Hunter 	asm volatile("vfmsub213pd 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
8789adab034SAdrian Hunter 	asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
8799adab034SAdrian Hunter 
8809adab034SAdrian Hunter 	asm volatile("v4fnmaddps (%rax), %zmm0, %zmm4");
8819adab034SAdrian Hunter 	asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
8829adab034SAdrian Hunter 	asm volatile("v4fnmaddps 0x12345678(%rax,%rcx,8),%zmm0,%zmm4");
8839adab034SAdrian Hunter 	asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
8849adab034SAdrian Hunter 
8859adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 ab */
8869adab034SAdrian Hunter 
8879adab034SAdrian Hunter 	asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
8889adab034SAdrian Hunter 	asm volatile("vfmsub213ss 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
8899adab034SAdrian Hunter 	asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
8909adab034SAdrian Hunter 
8919adab034SAdrian Hunter 	asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
8929adab034SAdrian Hunter 	asm volatile("vfmsub213sd 0x12345678(%rax,%rcx,8),%xmm2,%xmm3");
8939adab034SAdrian Hunter 	asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
8949adab034SAdrian Hunter 
8959adab034SAdrian Hunter 	asm volatile("v4fnmaddss (%rax), %xmm0, %xmm4");
8969adab034SAdrian Hunter 	asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
8979adab034SAdrian Hunter 	asm volatile("v4fnmaddss 0x12345678(%rax,%rcx,8),%xmm0,%xmm4");
8989adab034SAdrian Hunter 	asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
8999adab034SAdrian Hunter 
9006c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b4 */
9016c4d0b41SAdrian Hunter 
9026c4d0b41SAdrian Hunter 	asm volatile("vpmadd52luq %zmm26,%zmm27,%zmm28");
9036c4d0b41SAdrian Hunter 
9046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b5 */
9056c4d0b41SAdrian Hunter 
9066c4d0b41SAdrian Hunter 	asm volatile("vpmadd52huq %zmm26,%zmm27,%zmm28");
9076c4d0b41SAdrian Hunter 
9086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c4 */
9096c4d0b41SAdrian Hunter 
9106c4d0b41SAdrian Hunter 	asm volatile("vpconflictd %zmm26,%zmm27");
9116c4d0b41SAdrian Hunter 	asm volatile("vpconflictq %zmm26,%zmm27");
9126c4d0b41SAdrian Hunter 
9136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c8 */
9146c4d0b41SAdrian Hunter 
9156c4d0b41SAdrian Hunter 	asm volatile("vexp2ps %zmm29,%zmm30");
9166c4d0b41SAdrian Hunter 	asm volatile("vexp2pd %zmm26,%zmm27");
9176c4d0b41SAdrian Hunter 
9186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 ca */
9196c4d0b41SAdrian Hunter 
9206c4d0b41SAdrian Hunter 	asm volatile("vrcp28ps %zmm29,%zmm30");
9216c4d0b41SAdrian Hunter 	asm volatile("vrcp28pd %zmm26,%zmm27");
9226c4d0b41SAdrian Hunter 
9236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cb */
9246c4d0b41SAdrian Hunter 
9256c4d0b41SAdrian Hunter 	asm volatile("vrcp28ss %xmm28,%xmm29,%xmm30{%k7}");
9266c4d0b41SAdrian Hunter 	asm volatile("vrcp28sd %xmm25,%xmm26,%xmm27{%k7}");
9276c4d0b41SAdrian Hunter 
9286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cc */
9296c4d0b41SAdrian Hunter 
9306c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ps %zmm29,%zmm30");
9316c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28pd %zmm26,%zmm27");
9326c4d0b41SAdrian Hunter 
9336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cd */
9346c4d0b41SAdrian Hunter 
9356c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ss %xmm28,%xmm29,%xmm30{%k7}");
9366c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28sd %xmm25,%xmm26,%xmm27{%k7}");
9376c4d0b41SAdrian Hunter 
9389adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 cf */
9399adab034SAdrian Hunter 
9409adab034SAdrian Hunter 	asm volatile("gf2p8mulb %xmm1, %xmm3");
9419adab034SAdrian Hunter 	asm volatile("gf2p8mulb 0x12345678(%rax,%rcx,8),%xmm3");
9429adab034SAdrian Hunter 	asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
9439adab034SAdrian Hunter 
9449adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
9459adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
9469adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
9479adab034SAdrian Hunter 	asm volatile("vgf2p8mulb 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
9489adab034SAdrian Hunter 	asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
9499adab034SAdrian Hunter 
9509adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 dc */
9519adab034SAdrian Hunter 
9529adab034SAdrian Hunter 	asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
9539adab034SAdrian Hunter 	asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
9549adab034SAdrian Hunter 	asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
9559adab034SAdrian Hunter 	asm volatile("vaesenc 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
9569adab034SAdrian Hunter 	asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
9579adab034SAdrian Hunter 
9589adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 dd */
9599adab034SAdrian Hunter 
9609adab034SAdrian Hunter 	asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
9619adab034SAdrian Hunter 	asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
9629adab034SAdrian Hunter 	asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
9639adab034SAdrian Hunter 	asm volatile("vaesenclast 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
9649adab034SAdrian Hunter 	asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
9659adab034SAdrian Hunter 
9669adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 de */
9679adab034SAdrian Hunter 
9689adab034SAdrian Hunter 	asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
9699adab034SAdrian Hunter 	asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
9709adab034SAdrian Hunter 	asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
9719adab034SAdrian Hunter 	asm volatile("vaesdec 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
9729adab034SAdrian Hunter 	asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
9739adab034SAdrian Hunter 
9749adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 df */
9759adab034SAdrian Hunter 
9769adab034SAdrian Hunter 	asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
9779adab034SAdrian Hunter 	asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
9789adab034SAdrian Hunter 	asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
9799adab034SAdrian Hunter 	asm volatile("vaesdeclast 0x12345678(%rax,%rcx,8),%zmm2,%zmm3");
9809adab034SAdrian Hunter 	asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
9819adab034SAdrian Hunter 
9826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 03 */
9836c4d0b41SAdrian Hunter 
9846c4d0b41SAdrian Hunter 	asm volatile("valignd $0x12,%zmm28,%zmm29,%zmm30");
9856c4d0b41SAdrian Hunter 	asm volatile("valignq $0x12,%zmm25,%zmm26,%zmm27");
9866c4d0b41SAdrian Hunter 
9876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 08 */
9886c4d0b41SAdrian Hunter 
9896c4d0b41SAdrian Hunter 	asm volatile("vroundps $0x5,%ymm6,%ymm2");
9906c4d0b41SAdrian Hunter 	asm volatile("vrndscaleps $0x12,%zmm25,%zmm26");
9916c4d0b41SAdrian Hunter 
9926c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 09 */
9936c4d0b41SAdrian Hunter 
9946c4d0b41SAdrian Hunter 	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
9956c4d0b41SAdrian Hunter 	asm volatile("vrndscalepd $0x12,%zmm25,%zmm26");
9966c4d0b41SAdrian Hunter 
9976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
9986c4d0b41SAdrian Hunter 
9996c4d0b41SAdrian Hunter 	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
10006c4d0b41SAdrian Hunter 	asm volatile("vrndscaless $0x12,%xmm24,%xmm25,%xmm26{%k7}");
10016c4d0b41SAdrian Hunter 
10026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0b */
10036c4d0b41SAdrian Hunter 
10046c4d0b41SAdrian Hunter 	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
10056c4d0b41SAdrian Hunter 	asm volatile("vrndscalesd $0x12,%xmm24,%xmm25,%xmm26{%k7}");
10066c4d0b41SAdrian Hunter 
10076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 18 */
10086c4d0b41SAdrian Hunter 
10096c4d0b41SAdrian Hunter 	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
10106c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
10116c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
10126c4d0b41SAdrian Hunter 
10136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 19 */
10146c4d0b41SAdrian Hunter 
10156c4d0b41SAdrian Hunter 	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
10166c4d0b41SAdrian Hunter 	asm volatile("vextractf32x4 $0x12,%zmm25,%xmm26{%k7}");
10176c4d0b41SAdrian Hunter 	asm volatile("vextractf64x2 $0x12,%zmm25,%xmm26{%k7}");
10186c4d0b41SAdrian Hunter 
10196c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
10206c4d0b41SAdrian Hunter 
10216c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x8 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
10226c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x4 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
10236c4d0b41SAdrian Hunter 
10246c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1b */
10256c4d0b41SAdrian Hunter 
10266c4d0b41SAdrian Hunter 	asm volatile("vextractf32x8 $0x12,%zmm29,%ymm30{%k7}");
10276c4d0b41SAdrian Hunter 	asm volatile("vextractf64x4 $0x12,%zmm26,%ymm27{%k7}");
10286c4d0b41SAdrian Hunter 
10296c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1e */
10306c4d0b41SAdrian Hunter 
10316c4d0b41SAdrian Hunter 	asm volatile("vpcmpud $0x12,%zmm29,%zmm30,%k5");
10326c4d0b41SAdrian Hunter 	asm volatile("vpcmpuq $0x12,%zmm26,%zmm27,%k5");
10336c4d0b41SAdrian Hunter 
10346c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1f */
10356c4d0b41SAdrian Hunter 
10366c4d0b41SAdrian Hunter 	asm volatile("vpcmpd $0x12,%zmm29,%zmm30,%k5");
10376c4d0b41SAdrian Hunter 	asm volatile("vpcmpq $0x12,%zmm26,%zmm27,%k5");
10386c4d0b41SAdrian Hunter 
10396c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 23 */
10406c4d0b41SAdrian Hunter 
10416c4d0b41SAdrian Hunter 	asm volatile("vshuff32x4 $0x12,%zmm28,%zmm29,%zmm30");
10426c4d0b41SAdrian Hunter 	asm volatile("vshuff64x2 $0x12,%zmm25,%zmm26,%zmm27");
10436c4d0b41SAdrian Hunter 
10446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 25 */
10456c4d0b41SAdrian Hunter 
10466c4d0b41SAdrian Hunter 	asm volatile("vpternlogd $0x12,%zmm28,%zmm29,%zmm30");
10476c4d0b41SAdrian Hunter 	asm volatile("vpternlogq $0x12,%zmm28,%zmm29,%zmm30");
10486c4d0b41SAdrian Hunter 
10496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 26 */
10506c4d0b41SAdrian Hunter 
10516c4d0b41SAdrian Hunter 	asm volatile("vgetmantps $0x12,%zmm26,%zmm27");
10526c4d0b41SAdrian Hunter 	asm volatile("vgetmantpd $0x12,%zmm29,%zmm30");
10536c4d0b41SAdrian Hunter 
10546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 27 */
10556c4d0b41SAdrian Hunter 
10566c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x12,%xmm25,%xmm26,%xmm27{%k7}");
10576c4d0b41SAdrian Hunter 	asm volatile("vgetmantsd $0x12,%xmm28,%xmm29,%xmm30{%k7}");
10586c4d0b41SAdrian Hunter 
10596c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 38 */
10606c4d0b41SAdrian Hunter 
10616c4d0b41SAdrian Hunter 	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
10626c4d0b41SAdrian Hunter 	asm volatile("vinserti32x4 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
10636c4d0b41SAdrian Hunter 	asm volatile("vinserti64x2 $0x12,%xmm24,%zmm25,%zmm26{%k7}");
10646c4d0b41SAdrian Hunter 
10656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 39 */
10666c4d0b41SAdrian Hunter 
10676c4d0b41SAdrian Hunter 	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
10686c4d0b41SAdrian Hunter 	asm volatile("vextracti32x4 $0x12,%zmm25,%xmm26{%k7}");
10696c4d0b41SAdrian Hunter 	asm volatile("vextracti64x2 $0x12,%zmm25,%xmm26{%k7}");
10706c4d0b41SAdrian Hunter 
10716c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3a */
10726c4d0b41SAdrian Hunter 
10736c4d0b41SAdrian Hunter 	asm volatile("vinserti32x8 $0x12,%ymm28,%zmm29,%zmm30{%k7}");
10746c4d0b41SAdrian Hunter 	asm volatile("vinserti64x4 $0x12,%ymm25,%zmm26,%zmm27{%k7}");
10756c4d0b41SAdrian Hunter 
10766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3b */
10776c4d0b41SAdrian Hunter 
10786c4d0b41SAdrian Hunter 	asm volatile("vextracti32x8 $0x12,%zmm29,%ymm30{%k7}");
10796c4d0b41SAdrian Hunter 	asm volatile("vextracti64x4 $0x12,%zmm26,%ymm27{%k7}");
10806c4d0b41SAdrian Hunter 
10816c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3e */
10826c4d0b41SAdrian Hunter 
10836c4d0b41SAdrian Hunter 	asm volatile("vpcmpub $0x12,%zmm29,%zmm30,%k5");
10846c4d0b41SAdrian Hunter 	asm volatile("vpcmpuw $0x12,%zmm26,%zmm27,%k5");
10856c4d0b41SAdrian Hunter 
10866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3f */
10876c4d0b41SAdrian Hunter 
10886c4d0b41SAdrian Hunter 	asm volatile("vpcmpb $0x12,%zmm29,%zmm30,%k5");
10896c4d0b41SAdrian Hunter 	asm volatile("vpcmpw $0x12,%zmm26,%zmm27,%k5");
10906c4d0b41SAdrian Hunter 
10916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
10926c4d0b41SAdrian Hunter 
10936c4d0b41SAdrian Hunter 	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
10946c4d0b41SAdrian Hunter 	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
10956c4d0b41SAdrian Hunter 
10966c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
10976c4d0b41SAdrian Hunter 
10986c4d0b41SAdrian Hunter 	asm volatile("vshufi32x4 $0x12,%zmm25,%zmm26,%zmm27");
10996c4d0b41SAdrian Hunter 	asm volatile("vshufi64x2 $0x12,%zmm28,%zmm29,%zmm30");
11006c4d0b41SAdrian Hunter 
11019adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 44 */
11029adab034SAdrian Hunter 
11039adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
11049adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
11059adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
11069adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%zmm25,%zmm26,%zmm27");
11079adab034SAdrian Hunter 
11086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 50 */
11096c4d0b41SAdrian Hunter 
11106c4d0b41SAdrian Hunter 	asm volatile("vrangeps $0x12,%zmm25,%zmm26,%zmm27");
11116c4d0b41SAdrian Hunter 	asm volatile("vrangepd $0x12,%zmm28,%zmm29,%zmm30");
11126c4d0b41SAdrian Hunter 
11136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 51 */
11146c4d0b41SAdrian Hunter 
11156c4d0b41SAdrian Hunter 	asm volatile("vrangess $0x12,%xmm25,%xmm26,%xmm27");
11166c4d0b41SAdrian Hunter 	asm volatile("vrangesd $0x12,%xmm28,%xmm29,%xmm30");
11176c4d0b41SAdrian Hunter 
11186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 54 */
11196c4d0b41SAdrian Hunter 
11206c4d0b41SAdrian Hunter 	asm volatile("vfixupimmps $0x12,%zmm28,%zmm29,%zmm30");
11216c4d0b41SAdrian Hunter 	asm volatile("vfixupimmpd $0x12,%zmm25,%zmm26,%zmm27");
11226c4d0b41SAdrian Hunter 
11236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 55 */
11246c4d0b41SAdrian Hunter 
11256c4d0b41SAdrian Hunter 	asm volatile("vfixupimmss $0x12,%xmm28,%xmm29,%xmm30{%k7}");
11266c4d0b41SAdrian Hunter 	asm volatile("vfixupimmsd $0x12,%xmm25,%xmm26,%xmm27{%k7}");
11276c4d0b41SAdrian Hunter 
11286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 56 */
11296c4d0b41SAdrian Hunter 
11306c4d0b41SAdrian Hunter 	asm volatile("vreduceps $0x12,%zmm26,%zmm27");
11316c4d0b41SAdrian Hunter 	asm volatile("vreducepd $0x12,%zmm29,%zmm30");
11326c4d0b41SAdrian Hunter 
11336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 57 */
11346c4d0b41SAdrian Hunter 
11356c4d0b41SAdrian Hunter 	asm volatile("vreducess $0x12,%xmm25,%xmm26,%xmm27");
11366c4d0b41SAdrian Hunter 	asm volatile("vreducesd $0x12,%xmm28,%xmm29,%xmm30");
11376c4d0b41SAdrian Hunter 
11386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 66 */
11396c4d0b41SAdrian Hunter 
11406c4d0b41SAdrian Hunter 	asm volatile("vfpclassps $0x12,%zmm27,%k5");
11416c4d0b41SAdrian Hunter 	asm volatile("vfpclasspd $0x12,%zmm30,%k5");
11426c4d0b41SAdrian Hunter 
11436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 67 */
11446c4d0b41SAdrian Hunter 
11456c4d0b41SAdrian Hunter 	asm volatile("vfpclassss $0x12,%xmm27,%k5");
11466c4d0b41SAdrian Hunter 	asm volatile("vfpclasssd $0x12,%xmm30,%k5");
11476c4d0b41SAdrian Hunter 
11489adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 70 */
11499adab034SAdrian Hunter 
11509adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
11519adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
11529adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
11539adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%zmm25,%zmm26,%zmm27");
11549adab034SAdrian Hunter 
11559adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 71 */
11569adab034SAdrian Hunter 
11579adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
11589adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
11599adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
11609adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%zmm25,%zmm26,%zmm27");
11619adab034SAdrian Hunter 
11629adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
11639adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
11649adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
11659adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%zmm25,%zmm26,%zmm27");
11669adab034SAdrian Hunter 
11679adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 72 */
11689adab034SAdrian Hunter 
11699adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
11709adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
11719adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
11729adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%zmm25,%zmm26,%zmm27");
11739adab034SAdrian Hunter 
11749adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 73 */
11759adab034SAdrian Hunter 
11769adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
11779adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
11789adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
11799adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%zmm25,%zmm26,%zmm27");
11809adab034SAdrian Hunter 
11819adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
11829adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
11839adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
11849adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%zmm25,%zmm26,%zmm27");
11859adab034SAdrian Hunter 
11869adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a ce */
11879adab034SAdrian Hunter 
11889adab034SAdrian Hunter 	asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
11899adab034SAdrian Hunter 
11909adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
11919adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
11929adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
11939adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%zmm25,%zmm26,%zmm27");
11949adab034SAdrian Hunter 
11959adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a cf */
11969adab034SAdrian Hunter 
11979adab034SAdrian Hunter 	asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
11989adab034SAdrian Hunter 
11999adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
12009adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
12019adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
12029adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%zmm25,%zmm26,%zmm27");
12039adab034SAdrian Hunter 
12046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 72 (Grp13) */
12056c4d0b41SAdrian Hunter 
12066c4d0b41SAdrian Hunter 	asm volatile("vprord $0x12,%zmm25,%zmm26");
12076c4d0b41SAdrian Hunter 	asm volatile("vprorq $0x12,%zmm25,%zmm26");
12086c4d0b41SAdrian Hunter 	asm volatile("vprold $0x12,%zmm29,%zmm30");
12096c4d0b41SAdrian Hunter 	asm volatile("vprolq $0x12,%zmm29,%zmm30");
12106c4d0b41SAdrian Hunter 	asm volatile("psrad  $0x2,%mm6");
12116c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
12126c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%zmm26,%zmm22");
12136c4d0b41SAdrian Hunter 	asm volatile("vpsraq $0x5,%zmm26,%zmm22");
12146c4d0b41SAdrian Hunter 
12156c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c6 (Grp18) */
12166c4d0b41SAdrian Hunter 
12176c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dps 0x7b(%r14,%zmm31,8){%k1}");
12186c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
12196c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dps 0x7b(%r14,%zmm31,8){%k1}");
12206c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
12216c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dps 0x7b(%r14,%zmm31,8){%k1}");
12226c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dpd 0x7b(%r14,%ymm31,8){%k1}");
12236c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dps 0x7b(%r14,%zmm31,8){%k1}");
12246c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dpd 0x7b(%r14,%ymm31,8){%k1}");
12256c4d0b41SAdrian Hunter 
12266c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c7 (Grp19) */
12276c4d0b41SAdrian Hunter 
12286c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qps 0x7b(%r14,%zmm31,8){%k1}");
12296c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
12306c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qps 0x7b(%r14,%zmm31,8){%k1}");
12316c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
12326c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qps 0x7b(%r14,%zmm31,8){%k1}");
12336c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qpd 0x7b(%r14,%zmm31,8){%k1}");
12346c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qps 0x7b(%r14,%zmm31,8){%k1}");
12356c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qpd 0x7b(%r14,%zmm31,8){%k1}");
12366c4d0b41SAdrian Hunter 
12376c4d0b41SAdrian Hunter 	/* AVX-512: Examples */
12386c4d0b41SAdrian Hunter 
12396c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm28,%zmm29,%zmm30");
12406c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}");
12416c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm28,%zmm29,%zmm30{%k7}{z}");
12426c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rn-sae},%zmm28,%zmm29,%zmm30");
12436c4d0b41SAdrian Hunter 	asm volatile("vaddpd {ru-sae},%zmm28,%zmm29,%zmm30");
12446c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rd-sae},%zmm28,%zmm29,%zmm30");
12456c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rz-sae},%zmm28,%zmm29,%zmm30");
12466c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%rcx),%zmm29,%zmm30");
12476c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x123(%rax,%r14,8),%zmm29,%zmm30");
12486c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%rcx){1to8},%zmm29,%zmm30");
12496c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x1fc0(%rdx),%zmm29,%zmm30");
12506c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x3f8(%rdx){1to8},%zmm29,%zmm30");
12516c4d0b41SAdrian Hunter 	asm volatile("vcmpeq_uqps 0x1fc(%rdx){1to16},%zmm30,%k5");
12526c4d0b41SAdrian Hunter 	asm volatile("vcmpltsd 0x123(%rax,%r14,8),%xmm29,%k5{%k7}");
12536c4d0b41SAdrian Hunter 	asm volatile("vcmplesd {sae},%xmm28,%xmm29,%k5{%k7}");
12546c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x5b,0x123(%rax,%r14,8),%xmm29,%xmm30{%k7}");
12556c4d0b41SAdrian Hunter 
1256d8b167f9SMatt Fleming 	/* bndmk m64, bnd */
1257d8b167f9SMatt Fleming 
1258d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax), %bnd0");
1259d8b167f9SMatt Fleming 	asm volatile("bndmk (%r8), %bnd0");
1260d8b167f9SMatt Fleming 	asm volatile("bndmk (0x12345678), %bnd0");
1261d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax), %bnd3");
1262d8b167f9SMatt Fleming 	asm volatile("bndmk (%rcx,%rax,1), %bnd0");
1263d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
1264d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax,%rcx,1), %bnd0");
1265d8b167f9SMatt Fleming 	asm volatile("bndmk (%rax,%rcx,8), %bnd0");
1266d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rax), %bnd0");
1267d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rbp), %bnd0");
1268d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
1269d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
1270d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
1271d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
1272d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rax), %bnd0");
1273d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rbp), %bnd0");
1274d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
1275d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
1276d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
1277d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
1278d8b167f9SMatt Fleming 
1279d8b167f9SMatt Fleming 	/* bndcl r/m64, bnd */
1280d8b167f9SMatt Fleming 
1281d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax), %bnd0");
1282d8b167f9SMatt Fleming 	asm volatile("bndcl (%r8), %bnd0");
1283d8b167f9SMatt Fleming 	asm volatile("bndcl (0x12345678), %bnd0");
1284d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax), %bnd3");
1285d8b167f9SMatt Fleming 	asm volatile("bndcl (%rcx,%rax,1), %bnd0");
1286d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
1287d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax,%rcx,1), %bnd0");
1288d8b167f9SMatt Fleming 	asm volatile("bndcl (%rax,%rcx,8), %bnd0");
1289d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rax), %bnd0");
1290d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rbp), %bnd0");
1291d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
1292d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
1293d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
1294d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
1295d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rax), %bnd0");
1296d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rbp), %bnd0");
1297d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
1298d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
1299d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
1300d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
1301d8b167f9SMatt Fleming 	asm volatile("bndcl %rax, %bnd0");
1302d8b167f9SMatt Fleming 
1303d8b167f9SMatt Fleming 	/* bndcu r/m64, bnd */
1304d8b167f9SMatt Fleming 
1305d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax), %bnd0");
1306d8b167f9SMatt Fleming 	asm volatile("bndcu (%r8), %bnd0");
1307d8b167f9SMatt Fleming 	asm volatile("bndcu (0x12345678), %bnd0");
1308d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax), %bnd3");
1309d8b167f9SMatt Fleming 	asm volatile("bndcu (%rcx,%rax,1), %bnd0");
1310d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
1311d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax,%rcx,1), %bnd0");
1312d8b167f9SMatt Fleming 	asm volatile("bndcu (%rax,%rcx,8), %bnd0");
1313d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rax), %bnd0");
1314d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rbp), %bnd0");
1315d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
1316d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
1317d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
1318d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
1319d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rax), %bnd0");
1320d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rbp), %bnd0");
1321d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
1322d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
1323d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
1324d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
1325d8b167f9SMatt Fleming 	asm volatile("bndcu %rax, %bnd0");
1326d8b167f9SMatt Fleming 
1327d8b167f9SMatt Fleming 	/* bndcn r/m64, bnd */
1328d8b167f9SMatt Fleming 
1329d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax), %bnd0");
1330d8b167f9SMatt Fleming 	asm volatile("bndcn (%r8), %bnd0");
1331d8b167f9SMatt Fleming 	asm volatile("bndcn (0x12345678), %bnd0");
1332d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax), %bnd3");
1333d8b167f9SMatt Fleming 	asm volatile("bndcn (%rcx,%rax,1), %bnd0");
1334d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
1335d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax,%rcx,1), %bnd0");
1336d8b167f9SMatt Fleming 	asm volatile("bndcn (%rax,%rcx,8), %bnd0");
1337d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rax), %bnd0");
1338d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rbp), %bnd0");
1339d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
1340d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
1341d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
1342d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
1343d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rax), %bnd0");
1344d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rbp), %bnd0");
1345d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
1346d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
1347d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
1348d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
1349d8b167f9SMatt Fleming 	asm volatile("bndcn %rax, %bnd0");
1350d8b167f9SMatt Fleming 
1351d8b167f9SMatt Fleming 	/* bndmov m128, bnd */
1352d8b167f9SMatt Fleming 
1353d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax), %bnd0");
1354d8b167f9SMatt Fleming 	asm volatile("bndmov (%r8), %bnd0");
1355d8b167f9SMatt Fleming 	asm volatile("bndmov (0x12345678), %bnd0");
1356d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax), %bnd3");
1357d8b167f9SMatt Fleming 	asm volatile("bndmov (%rcx,%rax,1), %bnd0");
1358d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
1359d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax,%rcx,1), %bnd0");
1360d8b167f9SMatt Fleming 	asm volatile("bndmov (%rax,%rcx,8), %bnd0");
1361d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rax), %bnd0");
1362d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rbp), %bnd0");
1363d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
1364d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
1365d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
1366d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
1367d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rax), %bnd0");
1368d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rbp), %bnd0");
1369d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
1370d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
1371d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
1372d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
1373d8b167f9SMatt Fleming 
1374d8b167f9SMatt Fleming 	/* bndmov bnd, m128 */
1375d8b167f9SMatt Fleming 
1376d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rax)");
1377d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%r8)");
1378d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (0x12345678)");
1379d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd3, (%rax)");
1380d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
1381d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
1382d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
1383d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
1384d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rax)");
1385d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rbp)");
1386d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
1387d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
1388d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
1389d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
1390d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rax)");
1391d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
1392d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
1393d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
1394d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
1395d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
1396d8b167f9SMatt Fleming 
1397d8b167f9SMatt Fleming 	/* bndmov bnd2, bnd1 */
1398d8b167f9SMatt Fleming 
1399d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, %bnd1");
1400d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd1, %bnd0");
1401d8b167f9SMatt Fleming 
1402d8b167f9SMatt Fleming 	/* bndldx mib, bnd */
1403d8b167f9SMatt Fleming 
1404d8b167f9SMatt Fleming 	asm volatile("bndldx (%rax), %bnd0");
1405d8b167f9SMatt Fleming 	asm volatile("bndldx (%r8), %bnd0");
1406d8b167f9SMatt Fleming 	asm volatile("bndldx (0x12345678), %bnd0");
1407d8b167f9SMatt Fleming 	asm volatile("bndldx (%rax), %bnd3");
1408d8b167f9SMatt Fleming 	asm volatile("bndldx (%rcx,%rax,1), %bnd0");
1409d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
1410d8b167f9SMatt Fleming 	asm volatile("bndldx (%rax,%rcx,1), %bnd0");
1411d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rax), %bnd0");
1412d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rbp), %bnd0");
1413d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
1414d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
1415d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
1416d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rax), %bnd0");
1417d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rbp), %bnd0");
1418d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
1419d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
1420d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
1421d8b167f9SMatt Fleming 
1422d8b167f9SMatt Fleming 	/* bndstx bnd, mib */
1423d8b167f9SMatt Fleming 
1424d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%rax)");
1425d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%r8)");
1426d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (0x12345678)");
1427d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd3, (%rax)");
1428d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
1429d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
1430d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
1431d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rax)");
1432d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rbp)");
1433d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
1434d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
1435d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
1436d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rax)");
1437d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
1438d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
1439d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
1440d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
1441d8b167f9SMatt Fleming 
1442d8b167f9SMatt Fleming 	/* bnd prefix on call, ret, jmp and all jcc */
1443d8b167f9SMatt Fleming 
1444d8b167f9SMatt Fleming 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
1445d8b167f9SMatt Fleming 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
1446d8b167f9SMatt Fleming 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
1447d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1448d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
1449d8b167f9SMatt Fleming 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
1450d8b167f9SMatt Fleming 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
1451d8b167f9SMatt Fleming 
1452d8b167f9SMatt Fleming 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
1453d8b167f9SMatt Fleming 
1454d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
1455d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
1456d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
1457d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
1458d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
1459d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
1460d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
1461d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
1462d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
1463d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
1464d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
1465d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
1466d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
1467d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
1468d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
1469d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
1470d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
1471d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
1472d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
1473d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
1474d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
1475d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
1476d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
1477d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
1478d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
1479d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
1480d8b167f9SMatt Fleming 
1481d8b167f9SMatt Fleming 	/* sha1nexte xmm2/m128, xmm1 */
1482d8b167f9SMatt Fleming 
1483d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm1, %xmm0");
1484d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm2");
1485d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm8, %xmm0");
1486d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm8");
1487d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm15, %xmm8");
1488d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax), %xmm0");
1489d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%r8), %xmm0");
1490d8b167f9SMatt Fleming 	asm volatile("sha1nexte (0x12345678), %xmm0");
1491d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax), %xmm3");
1492d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
1493d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
1494d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
1495d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
1496d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rax), %xmm0");
1497d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rbp), %xmm0");
1498d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
1499d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
1500d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
1501d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
1502d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
1503d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
1504d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
1505d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
1506d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
1507d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
1508d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
1509d8b167f9SMatt Fleming 
1510d8b167f9SMatt Fleming 	/* sha1msg1 xmm2/m128, xmm1 */
1511d8b167f9SMatt Fleming 
1512d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm1, %xmm0");
1513d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm2");
1514d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm8, %xmm0");
1515d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm8");
1516d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm15, %xmm8");
1517d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax), %xmm0");
1518d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%r8), %xmm0");
1519d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (0x12345678), %xmm0");
1520d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax), %xmm3");
1521d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
1522d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
1523d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
1524d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
1525d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rax), %xmm0");
1526d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rbp), %xmm0");
1527d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
1528d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
1529d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
1530d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
1531d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
1532d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
1533d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
1534d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
1535d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
1536d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
1537d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
1538d8b167f9SMatt Fleming 
1539d8b167f9SMatt Fleming 	/* sha1msg2 xmm2/m128, xmm1 */
1540d8b167f9SMatt Fleming 
1541d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm1, %xmm0");
1542d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm2");
1543d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm8, %xmm0");
1544d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm8");
1545d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm15, %xmm8");
1546d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax), %xmm0");
1547d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%r8), %xmm0");
1548d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (0x12345678), %xmm0");
1549d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax), %xmm3");
1550d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
1551d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
1552d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
1553d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
1554d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rax), %xmm0");
1555d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rbp), %xmm0");
1556d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
1557d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
1558d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
1559d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
1560d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
1561d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
1562d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
1563d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
1564d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
1565d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
1566d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
1567d8b167f9SMatt Fleming 
1568d8b167f9SMatt Fleming 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
1569d8b167f9SMatt Fleming 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
1570d8b167f9SMatt Fleming 
1571d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm4, %xmm1");
1572d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm2");
1573d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm8, %xmm1");
1574d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm8");
1575d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm15, %xmm8");
1576d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax), %xmm1");
1577d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%r8), %xmm1");
1578d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
1579d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax), %xmm3");
1580d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
1581d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
1582d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
1583d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
1584d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rax), %xmm1");
1585d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
1586d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
1587d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
1588d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
1589d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
1590d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
1591d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
1592d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
1593d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
1594d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
1595d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
1596d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
1597d8b167f9SMatt Fleming 
1598d8b167f9SMatt Fleming 	/* sha256msg1 xmm2/m128, xmm1 */
1599d8b167f9SMatt Fleming 
1600d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm1, %xmm0");
1601d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm2");
1602d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm8, %xmm0");
1603d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm8");
1604d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm15, %xmm8");
1605d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax), %xmm0");
1606d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%r8), %xmm0");
1607d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (0x12345678), %xmm0");
1608d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax), %xmm3");
1609d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
1610d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
1611d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
1612d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
1613d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rax), %xmm0");
1614d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rbp), %xmm0");
1615d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
1616d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
1617d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
1618d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
1619d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
1620d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
1621d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
1622d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
1623d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
1624d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
1625d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
1626d8b167f9SMatt Fleming 
1627d8b167f9SMatt Fleming 	/* sha256msg2 xmm2/m128, xmm1 */
1628d8b167f9SMatt Fleming 
1629d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm1, %xmm0");
1630d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm2");
1631d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm8, %xmm0");
1632d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm8");
1633d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm15, %xmm8");
1634d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax), %xmm0");
1635d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%r8), %xmm0");
1636d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (0x12345678), %xmm0");
1637d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax), %xmm3");
1638d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
1639d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
1640d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
1641d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
1642d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rax), %xmm0");
1643d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rbp), %xmm0");
1644d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
1645d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
1646d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
1647d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
1648d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
1649d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
1650d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
1651d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
1652d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
1653d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
1654d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
1655d8b167f9SMatt Fleming 
1656d8b167f9SMatt Fleming 	/* clflushopt m8 */
1657d8b167f9SMatt Fleming 
1658d8b167f9SMatt Fleming 	asm volatile("clflushopt (%rax)");
1659d8b167f9SMatt Fleming 	asm volatile("clflushopt (%r8)");
1660d8b167f9SMatt Fleming 	asm volatile("clflushopt (0x12345678)");
1661d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
1662d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
1663d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clflushopt */
1664d8b167f9SMatt Fleming 	asm volatile("clflush (%rax)");
1665d8b167f9SMatt Fleming 	asm volatile("clflush (%r8)");
1666d8b167f9SMatt Fleming 	asm volatile("sfence");
1667d8b167f9SMatt Fleming 
1668d8b167f9SMatt Fleming 	/* clwb m8 */
1669d8b167f9SMatt Fleming 
1670d8b167f9SMatt Fleming 	asm volatile("clwb (%rax)");
1671d8b167f9SMatt Fleming 	asm volatile("clwb (%r8)");
1672d8b167f9SMatt Fleming 	asm volatile("clwb (0x12345678)");
1673d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%rax,%rcx,8)");
1674d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%r8,%rcx,8)");
1675d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clwb */
1676d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%rax)");
1677d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%r8)");
1678d8b167f9SMatt Fleming 	asm volatile("mfence");
1679d8b167f9SMatt Fleming 
16801e5f0154SAdrian Hunter 	/* cldemote m8 */
16811e5f0154SAdrian Hunter 
16821e5f0154SAdrian Hunter 	asm volatile("cldemote (%rax)");
16831e5f0154SAdrian Hunter 	asm volatile("cldemote (%r8)");
16841e5f0154SAdrian Hunter 	asm volatile("cldemote (0x12345678)");
16851e5f0154SAdrian Hunter 	asm volatile("cldemote 0x12345678(%rax,%rcx,8)");
16861e5f0154SAdrian Hunter 	asm volatile("cldemote 0x12345678(%r8,%rcx,8)");
16871e5f0154SAdrian Hunter 
1688d8b167f9SMatt Fleming 	/* xsavec mem */
1689d8b167f9SMatt Fleming 
1690d8b167f9SMatt Fleming 	asm volatile("xsavec (%rax)");
1691d8b167f9SMatt Fleming 	asm volatile("xsavec (%r8)");
1692d8b167f9SMatt Fleming 	asm volatile("xsavec (0x12345678)");
1693d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
1694d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
1695d8b167f9SMatt Fleming 
1696d8b167f9SMatt Fleming 	/* xsaves mem */
1697d8b167f9SMatt Fleming 
1698d8b167f9SMatt Fleming 	asm volatile("xsaves (%rax)");
1699d8b167f9SMatt Fleming 	asm volatile("xsaves (%r8)");
1700d8b167f9SMatt Fleming 	asm volatile("xsaves (0x12345678)");
1701d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
1702d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
1703d8b167f9SMatt Fleming 
1704d8b167f9SMatt Fleming 	/* xrstors mem */
1705d8b167f9SMatt Fleming 
1706d8b167f9SMatt Fleming 	asm volatile("xrstors (%rax)");
1707d8b167f9SMatt Fleming 	asm volatile("xrstors (%r8)");
1708d8b167f9SMatt Fleming 	asm volatile("xrstors (0x12345678)");
1709d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
1710d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
1711d8b167f9SMatt Fleming 
1712d5b1a5f6SAdrian Hunter 	/* ptwrite */
1713d5b1a5f6SAdrian Hunter 
1714d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%rax)");
1715d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%r8)");
1716d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (0x12345678)");
1717d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%rax,%rcx,8)");
1718d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%r8,%rcx,8)");
1719d5b1a5f6SAdrian Hunter 
1720d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%rax)");
1721d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%r8)");
1722d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (0x12345678)");
1723d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%rax,%rcx,8)");
1724d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%r8,%rcx,8)");
1725d5b1a5f6SAdrian Hunter 
1726d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq (%rax)");
1727d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq (%r8)");
1728d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq (0x12345678)");
1729d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq 0x12345678(%rax,%rcx,8)");
1730d5b1a5f6SAdrian Hunter 	asm volatile("ptwriteq 0x12345678(%r8,%rcx,8)");
1731d5b1a5f6SAdrian Hunter 
17321e5f0154SAdrian Hunter 	/* tpause */
17331e5f0154SAdrian Hunter 
17341e5f0154SAdrian Hunter 	asm volatile("tpause %ebx");
17351e5f0154SAdrian Hunter 	asm volatile("tpause %r8d");
17361e5f0154SAdrian Hunter 
17371e5f0154SAdrian Hunter 	/* umonitor */
17381e5f0154SAdrian Hunter 
17391e5f0154SAdrian Hunter 	asm volatile("umonitor %eax");
17401e5f0154SAdrian Hunter 	asm volatile("umonitor %rax");
17411e5f0154SAdrian Hunter 	asm volatile("umonitor %r8d");
17421e5f0154SAdrian Hunter 
17431e5f0154SAdrian Hunter 	/* umwait */
17441e5f0154SAdrian Hunter 
17451e5f0154SAdrian Hunter 	asm volatile("umwait %eax");
17461e5f0154SAdrian Hunter 	asm volatile("umwait %r8d");
17471e5f0154SAdrian Hunter 
17481e5f0154SAdrian Hunter 	/* movdiri */
17491e5f0154SAdrian Hunter 
17501e5f0154SAdrian Hunter 	asm volatile("movdiri %rax,(%rbx)");
17511e5f0154SAdrian Hunter 	asm volatile("movdiri %rcx,0x12345678(%rax)");
17521e5f0154SAdrian Hunter 
17531e5f0154SAdrian Hunter 	/* movdir64b */
17541e5f0154SAdrian Hunter 
17551e5f0154SAdrian Hunter 	asm volatile("movdir64b (%rax),%rbx");
17561e5f0154SAdrian Hunter 	asm volatile("movdir64b 0x12345678(%rax),%rcx");
17571e5f0154SAdrian Hunter 	asm volatile("movdir64b (%eax),%ebx");
17581e5f0154SAdrian Hunter 	asm volatile("movdir64b 0x12345678(%eax),%ecx");
17591e5f0154SAdrian Hunter 
17601e5f0154SAdrian Hunter 	/* enqcmd */
17611e5f0154SAdrian Hunter 
17621e5f0154SAdrian Hunter 	asm volatile("enqcmd (%rax),%rbx");
17631e5f0154SAdrian Hunter 	asm volatile("enqcmd 0x12345678(%rax),%rcx");
17641e5f0154SAdrian Hunter 	asm volatile("enqcmd (%eax),%ebx");
17651e5f0154SAdrian Hunter 	asm volatile("enqcmd 0x12345678(%eax),%ecx");
17661e5f0154SAdrian Hunter 
17671e5f0154SAdrian Hunter 	/* enqcmds */
17681e5f0154SAdrian Hunter 
17691e5f0154SAdrian Hunter 	asm volatile("enqcmds (%rax),%rbx");
17701e5f0154SAdrian Hunter 	asm volatile("enqcmds 0x12345678(%rax),%rcx");
17711e5f0154SAdrian Hunter 	asm volatile("enqcmds (%eax),%ebx");
17721e5f0154SAdrian Hunter 	asm volatile("enqcmds 0x12345678(%eax),%ecx");
17731e5f0154SAdrian Hunter 
1774d8b167f9SMatt Fleming #else  /* #ifdef __x86_64__ */
1775d8b167f9SMatt Fleming 
17766c4d0b41SAdrian Hunter 	/* bound r32, mem (same op code as EVEX prefix) */
17776c4d0b41SAdrian Hunter 
17786c4d0b41SAdrian Hunter 	asm volatile("bound %eax, 0x12345678(%ecx)");
17796c4d0b41SAdrian Hunter 	asm volatile("bound %ecx, 0x12345678(%eax)");
17806c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax)");
17816c4d0b41SAdrian Hunter 	asm volatile("bound %ebx, 0x12345678(%eax)");
17826c4d0b41SAdrian Hunter 	asm volatile("bound %esp, 0x12345678(%eax)");
17836c4d0b41SAdrian Hunter 	asm volatile("bound %ebp, 0x12345678(%eax)");
17846c4d0b41SAdrian Hunter 	asm volatile("bound %esi, 0x12345678(%eax)");
17856c4d0b41SAdrian Hunter 	asm volatile("bound %edi, 0x12345678(%eax)");
17866c4d0b41SAdrian Hunter 	asm volatile("bound %ecx, (%eax)");
17876c4d0b41SAdrian Hunter 	asm volatile("bound %eax, (0x12345678)");
17886c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%ecx,%eax,1)");
17896c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(,%eax,1)");
17906c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%eax,%ecx,1)");
17916c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%eax,%ecx,8)");
17926c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax)");
17936c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ebp)");
17946c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
17956c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
17966c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
17976c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
17986c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax)");
17996c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ebp)");
18006c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
18016c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
18026c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
18036c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
18046c4d0b41SAdrian Hunter 
18056c4d0b41SAdrian Hunter 	/* bound r16, mem (same op code as EVEX prefix) */
18066c4d0b41SAdrian Hunter 
18076c4d0b41SAdrian Hunter 	asm volatile("bound %ax, 0x12345678(%ecx)");
18086c4d0b41SAdrian Hunter 	asm volatile("bound %cx, 0x12345678(%eax)");
18096c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax)");
18106c4d0b41SAdrian Hunter 	asm volatile("bound %bx, 0x12345678(%eax)");
18116c4d0b41SAdrian Hunter 	asm volatile("bound %sp, 0x12345678(%eax)");
18126c4d0b41SAdrian Hunter 	asm volatile("bound %bp, 0x12345678(%eax)");
18136c4d0b41SAdrian Hunter 	asm volatile("bound %si, 0x12345678(%eax)");
18146c4d0b41SAdrian Hunter 	asm volatile("bound %di, 0x12345678(%eax)");
18156c4d0b41SAdrian Hunter 	asm volatile("bound %cx, (%eax)");
18166c4d0b41SAdrian Hunter 	asm volatile("bound %ax, (0x12345678)");
18176c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%ecx,%eax,1)");
18186c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(,%eax,1)");
18196c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%eax,%ecx,1)");
18206c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%eax,%ecx,8)");
18216c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax)");
18226c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ebp)");
18236c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
18246c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
18256c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
18266c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
18276c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax)");
18286c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ebp)");
18296c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
18306c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
18316c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
18326c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
18336c4d0b41SAdrian Hunter 
18346c4d0b41SAdrian Hunter 	/* AVX-512: Instructions with the same op codes as Mask Instructions  */
18356c4d0b41SAdrian Hunter 
18366c4d0b41SAdrian Hunter 	asm volatile("cmovno %eax,%ebx");
18376c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%eax),%ecx");
18386c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%eax),%cx");
18396c4d0b41SAdrian Hunter 
18406c4d0b41SAdrian Hunter 	asm volatile("cmove  %eax,%ebx");
18416c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%eax),%ecx");
18426c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%eax),%cx");
18436c4d0b41SAdrian Hunter 
18446c4d0b41SAdrian Hunter 	asm volatile("seto    0x12345678(%eax)");
18456c4d0b41SAdrian Hunter 	asm volatile("setno   0x12345678(%eax)");
18466c4d0b41SAdrian Hunter 	asm volatile("setb    0x12345678(%eax)");
18476c4d0b41SAdrian Hunter 	asm volatile("setc    0x12345678(%eax)");
18486c4d0b41SAdrian Hunter 	asm volatile("setnae  0x12345678(%eax)");
18496c4d0b41SAdrian Hunter 	asm volatile("setae   0x12345678(%eax)");
18506c4d0b41SAdrian Hunter 	asm volatile("setnb   0x12345678(%eax)");
18516c4d0b41SAdrian Hunter 	asm volatile("setnc   0x12345678(%eax)");
18526c4d0b41SAdrian Hunter 	asm volatile("sets    0x12345678(%eax)");
18536c4d0b41SAdrian Hunter 	asm volatile("setns   0x12345678(%eax)");
18546c4d0b41SAdrian Hunter 
18556c4d0b41SAdrian Hunter 	/* AVX-512: Mask Instructions */
18566c4d0b41SAdrian Hunter 
18576c4d0b41SAdrian Hunter 	asm volatile("kandw  %k7,%k6,%k5");
18586c4d0b41SAdrian Hunter 	asm volatile("kandq  %k7,%k6,%k5");
18596c4d0b41SAdrian Hunter 	asm volatile("kandb  %k7,%k6,%k5");
18606c4d0b41SAdrian Hunter 	asm volatile("kandd  %k7,%k6,%k5");
18616c4d0b41SAdrian Hunter 
18626c4d0b41SAdrian Hunter 	asm volatile("kandnw  %k7,%k6,%k5");
18636c4d0b41SAdrian Hunter 	asm volatile("kandnq  %k7,%k6,%k5");
18646c4d0b41SAdrian Hunter 	asm volatile("kandnb  %k7,%k6,%k5");
18656c4d0b41SAdrian Hunter 	asm volatile("kandnd  %k7,%k6,%k5");
18666c4d0b41SAdrian Hunter 
18676c4d0b41SAdrian Hunter 	asm volatile("knotw  %k7,%k6");
18686c4d0b41SAdrian Hunter 	asm volatile("knotq  %k7,%k6");
18696c4d0b41SAdrian Hunter 	asm volatile("knotb  %k7,%k6");
18706c4d0b41SAdrian Hunter 	asm volatile("knotd  %k7,%k6");
18716c4d0b41SAdrian Hunter 
18726c4d0b41SAdrian Hunter 	asm volatile("korw  %k7,%k6,%k5");
18736c4d0b41SAdrian Hunter 	asm volatile("korq  %k7,%k6,%k5");
18746c4d0b41SAdrian Hunter 	asm volatile("korb  %k7,%k6,%k5");
18756c4d0b41SAdrian Hunter 	asm volatile("kord  %k7,%k6,%k5");
18766c4d0b41SAdrian Hunter 
18776c4d0b41SAdrian Hunter 	asm volatile("kxnorw  %k7,%k6,%k5");
18786c4d0b41SAdrian Hunter 	asm volatile("kxnorq  %k7,%k6,%k5");
18796c4d0b41SAdrian Hunter 	asm volatile("kxnorb  %k7,%k6,%k5");
18806c4d0b41SAdrian Hunter 	asm volatile("kxnord  %k7,%k6,%k5");
18816c4d0b41SAdrian Hunter 
18826c4d0b41SAdrian Hunter 	asm volatile("kxorw  %k7,%k6,%k5");
18836c4d0b41SAdrian Hunter 	asm volatile("kxorq  %k7,%k6,%k5");
18846c4d0b41SAdrian Hunter 	asm volatile("kxorb  %k7,%k6,%k5");
18856c4d0b41SAdrian Hunter 	asm volatile("kxord  %k7,%k6,%k5");
18866c4d0b41SAdrian Hunter 
18876c4d0b41SAdrian Hunter 	asm volatile("kaddw  %k7,%k6,%k5");
18886c4d0b41SAdrian Hunter 	asm volatile("kaddq  %k7,%k6,%k5");
18896c4d0b41SAdrian Hunter 	asm volatile("kaddb  %k7,%k6,%k5");
18906c4d0b41SAdrian Hunter 	asm volatile("kaddd  %k7,%k6,%k5");
18916c4d0b41SAdrian Hunter 
18926c4d0b41SAdrian Hunter 	asm volatile("kunpckbw %k7,%k6,%k5");
18936c4d0b41SAdrian Hunter 	asm volatile("kunpckwd %k7,%k6,%k5");
18946c4d0b41SAdrian Hunter 	asm volatile("kunpckdq %k7,%k6,%k5");
18956c4d0b41SAdrian Hunter 
18966c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k6,%k5");
18976c4d0b41SAdrian Hunter 	asm volatile("kmovw  (%ecx),%k5");
18986c4d0b41SAdrian Hunter 	asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
18996c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,(%ecx)");
19006c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
19016c4d0b41SAdrian Hunter 	asm volatile("kmovw  %eax,%k5");
19026c4d0b41SAdrian Hunter 	asm volatile("kmovw  %ebp,%k5");
19036c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%eax");
19046c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%ebp");
19056c4d0b41SAdrian Hunter 
19066c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k6,%k5");
19076c4d0b41SAdrian Hunter 	asm volatile("kmovq  (%ecx),%k5");
19086c4d0b41SAdrian Hunter 	asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
19096c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,(%ecx)");
19106c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
19116c4d0b41SAdrian Hunter 
19126c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k6,%k5");
19136c4d0b41SAdrian Hunter 	asm volatile("kmovb  (%ecx),%k5");
19146c4d0b41SAdrian Hunter 	asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
19156c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,(%ecx)");
19166c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
19176c4d0b41SAdrian Hunter 	asm volatile("kmovb  %eax,%k5");
19186c4d0b41SAdrian Hunter 	asm volatile("kmovb  %ebp,%k5");
19196c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%eax");
19206c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%ebp");
19216c4d0b41SAdrian Hunter 
19226c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k6,%k5");
19236c4d0b41SAdrian Hunter 	asm volatile("kmovd  (%ecx),%k5");
19246c4d0b41SAdrian Hunter 	asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
19256c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,(%ecx)");
19266c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
19276c4d0b41SAdrian Hunter 	asm volatile("kmovd  %eax,%k5");
19286c4d0b41SAdrian Hunter 	asm volatile("kmovd  %ebp,%k5");
19296c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%eax");
19306c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%ebp");
19316c4d0b41SAdrian Hunter 
19326c4d0b41SAdrian Hunter 	asm volatile("kortestw %k6,%k5");
19336c4d0b41SAdrian Hunter 	asm volatile("kortestq %k6,%k5");
19346c4d0b41SAdrian Hunter 	asm volatile("kortestb %k6,%k5");
19356c4d0b41SAdrian Hunter 	asm volatile("kortestd %k6,%k5");
19366c4d0b41SAdrian Hunter 
19376c4d0b41SAdrian Hunter 	asm volatile("ktestw %k6,%k5");
19386c4d0b41SAdrian Hunter 	asm volatile("ktestq %k6,%k5");
19396c4d0b41SAdrian Hunter 	asm volatile("ktestb %k6,%k5");
19406c4d0b41SAdrian Hunter 	asm volatile("ktestd %k6,%k5");
19416c4d0b41SAdrian Hunter 
19426c4d0b41SAdrian Hunter 	asm volatile("kshiftrw $0x12,%k6,%k5");
19436c4d0b41SAdrian Hunter 	asm volatile("kshiftrq $0x5b,%k6,%k5");
19446c4d0b41SAdrian Hunter 	asm volatile("kshiftlw $0x12,%k6,%k5");
19456c4d0b41SAdrian Hunter 	asm volatile("kshiftlq $0x5b,%k6,%k5");
19466c4d0b41SAdrian Hunter 
19476c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 5b */
19486c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2ps %xmm5,%xmm6");
19496c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
19506c4d0b41SAdrian Hunter 	asm volatile("vcvtps2dq %xmm5,%xmm6");
19516c4d0b41SAdrian Hunter 	asm volatile("vcvttps2dq %xmm5,%xmm6");
19526c4d0b41SAdrian Hunter 
19536c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 6f */
19546c4d0b41SAdrian Hunter 
19556c4d0b41SAdrian Hunter 	asm volatile("movq   %mm0,%mm4");
19566c4d0b41SAdrian Hunter 	asm volatile("vmovdqa %ymm4,%ymm6");
19576c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32 %zmm5,%zmm6");
19586c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64 %zmm5,%zmm6");
19596c4d0b41SAdrian Hunter 	asm volatile("vmovdqu %ymm4,%ymm6");
19606c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32 %zmm5,%zmm6");
19616c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64 %zmm5,%zmm6");
19626c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8 %zmm5,%zmm6");
19636c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16 %zmm5,%zmm6");
19646c4d0b41SAdrian Hunter 
19656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 78 */
19666c4d0b41SAdrian Hunter 
19676c4d0b41SAdrian Hunter 	asm volatile("vmread %eax,%ebx");
19686c4d0b41SAdrian Hunter 	asm volatile("vcvttps2udq %zmm5,%zmm6");
19696c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
19706c4d0b41SAdrian Hunter 	asm volatile("vcvttsd2usi %xmm6,%eax");
19716c4d0b41SAdrian Hunter 	asm volatile("vcvttss2usi %xmm6,%eax");
19726c4d0b41SAdrian Hunter 	asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
19736c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2uqq %zmm5,%zmm6");
19746c4d0b41SAdrian Hunter 
19756c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 79 */
19766c4d0b41SAdrian Hunter 
19776c4d0b41SAdrian Hunter 	asm volatile("vmwrite %eax,%ebx");
19786c4d0b41SAdrian Hunter 	asm volatile("vcvtps2udq %zmm5,%zmm6");
19796c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
19806c4d0b41SAdrian Hunter 	asm volatile("vcvtsd2usi %xmm6,%eax");
19816c4d0b41SAdrian Hunter 	asm volatile("vcvtss2usi %xmm6,%eax");
19826c4d0b41SAdrian Hunter 	asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
19836c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2uqq %zmm5,%zmm6");
19846c4d0b41SAdrian Hunter 
19856c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7a */
19866c4d0b41SAdrian Hunter 
19876c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
19886c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2pd %zmm5,%zmm6");
19896c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2ps %zmm5,%zmm6");
19906c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
19916c4d0b41SAdrian Hunter 	asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
19926c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2qq %zmm5,%zmm6");
19936c4d0b41SAdrian Hunter 
19946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7b */
19956c4d0b41SAdrian Hunter 
19966c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
19976c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
19986c4d0b41SAdrian Hunter 	asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
19996c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2qq %zmm5,%zmm6");
20006c4d0b41SAdrian Hunter 
20016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7f */
20026c4d0b41SAdrian Hunter 
20036c4d0b41SAdrian Hunter 	asm volatile("movq.s  %mm0,%mm4");
20046c4d0b41SAdrian Hunter 	asm volatile("vmovdqa.s %ymm5,%ymm6");
20056c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32.s %zmm5,%zmm6");
20066c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64.s %zmm5,%zmm6");
20076c4d0b41SAdrian Hunter 	asm volatile("vmovdqu.s %ymm5,%ymm6");
20086c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32.s %zmm5,%zmm6");
20096c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64.s %zmm5,%zmm6");
20106c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8.s %zmm5,%zmm6");
20116c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16.s %zmm5,%zmm6");
20126c4d0b41SAdrian Hunter 
20136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f db */
20146c4d0b41SAdrian Hunter 
20156c4d0b41SAdrian Hunter 	asm volatile("pand  %mm1,%mm2");
20166c4d0b41SAdrian Hunter 	asm volatile("pand  %xmm1,%xmm2");
20176c4d0b41SAdrian Hunter 	asm volatile("vpand  %ymm4,%ymm6,%ymm2");
20186c4d0b41SAdrian Hunter 	asm volatile("vpandd %zmm4,%zmm5,%zmm6");
20196c4d0b41SAdrian Hunter 	asm volatile("vpandq %zmm4,%zmm5,%zmm6");
20206c4d0b41SAdrian Hunter 
20216c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f df */
20226c4d0b41SAdrian Hunter 
20236c4d0b41SAdrian Hunter 	asm volatile("pandn  %mm1,%mm2");
20246c4d0b41SAdrian Hunter 	asm volatile("pandn  %xmm1,%xmm2");
20256c4d0b41SAdrian Hunter 	asm volatile("vpandn %ymm4,%ymm6,%ymm2");
20266c4d0b41SAdrian Hunter 	asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
20276c4d0b41SAdrian Hunter 	asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
20286c4d0b41SAdrian Hunter 
20296c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f e6 */
20306c4d0b41SAdrian Hunter 
20316c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2dq %xmm1,%xmm2");
20326c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %xmm5,%xmm6");
20336c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
20346c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2pd %zmm5,%zmm6");
20356c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2dq %xmm1,%xmm2");
20366c4d0b41SAdrian Hunter 
20376c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f eb */
20386c4d0b41SAdrian Hunter 
20396c4d0b41SAdrian Hunter 	asm volatile("por   %mm4,%mm6");
20406c4d0b41SAdrian Hunter 	asm volatile("vpor   %ymm4,%ymm6,%ymm2");
20416c4d0b41SAdrian Hunter 	asm volatile("vpord  %zmm4,%zmm5,%zmm6");
20426c4d0b41SAdrian Hunter 	asm volatile("vporq  %zmm4,%zmm5,%zmm6");
20436c4d0b41SAdrian Hunter 
20446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f ef */
20456c4d0b41SAdrian Hunter 
20466c4d0b41SAdrian Hunter 	asm volatile("pxor   %mm4,%mm6");
20476c4d0b41SAdrian Hunter 	asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
20486c4d0b41SAdrian Hunter 	asm volatile("vpxord %zmm4,%zmm5,%zmm6");
20496c4d0b41SAdrian Hunter 	asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
20506c4d0b41SAdrian Hunter 
20516c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 10 */
20526c4d0b41SAdrian Hunter 
20536c4d0b41SAdrian Hunter 	asm volatile("pblendvb %xmm1,%xmm0");
20546c4d0b41SAdrian Hunter 	asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
20556c4d0b41SAdrian Hunter 	asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
20566c4d0b41SAdrian Hunter 
20576c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 11 */
20586c4d0b41SAdrian Hunter 
20596c4d0b41SAdrian Hunter 	asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
20606c4d0b41SAdrian Hunter 	asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
20616c4d0b41SAdrian Hunter 
20626c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 12 */
20636c4d0b41SAdrian Hunter 
20646c4d0b41SAdrian Hunter 	asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
20656c4d0b41SAdrian Hunter 	asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
20666c4d0b41SAdrian Hunter 
20676c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 13 */
20686c4d0b41SAdrian Hunter 
20696c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %xmm3,%ymm5");
20706c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
20716c4d0b41SAdrian Hunter 	asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
20726c4d0b41SAdrian Hunter 
20736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 14 */
20746c4d0b41SAdrian Hunter 
20756c4d0b41SAdrian Hunter 	asm volatile("blendvps %xmm1,%xmm0");
20766c4d0b41SAdrian Hunter 	asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
20776c4d0b41SAdrian Hunter 	asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
20786c4d0b41SAdrian Hunter 	asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
20796c4d0b41SAdrian Hunter 
20806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 15 */
20816c4d0b41SAdrian Hunter 
20826c4d0b41SAdrian Hunter 	asm volatile("blendvpd %xmm1,%xmm0");
20836c4d0b41SAdrian Hunter 	asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
20846c4d0b41SAdrian Hunter 	asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
20856c4d0b41SAdrian Hunter 	asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
20866c4d0b41SAdrian Hunter 
20876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 16 */
20886c4d0b41SAdrian Hunter 
20896c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2");
20906c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
20916c4d0b41SAdrian Hunter 	asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
20926c4d0b41SAdrian Hunter 
20936c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 19 */
20946c4d0b41SAdrian Hunter 
20956c4d0b41SAdrian Hunter 	asm volatile("vbroadcastsd %xmm4,%ymm6");
20966c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
20976c4d0b41SAdrian Hunter 
20986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1a */
20996c4d0b41SAdrian Hunter 
21006c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf128 (%ecx),%ymm4");
21016c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
21026c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
21036c4d0b41SAdrian Hunter 
21046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1b */
21056c4d0b41SAdrian Hunter 
21066c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
21076c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
21086c4d0b41SAdrian Hunter 
21096c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1f */
21106c4d0b41SAdrian Hunter 
21116c4d0b41SAdrian Hunter 	asm volatile("vpabsq %zmm4,%zmm6");
21126c4d0b41SAdrian Hunter 
21136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 20 */
21146c4d0b41SAdrian Hunter 
21156c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbw %xmm4,%xmm5");
21166c4d0b41SAdrian Hunter 	asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
21176c4d0b41SAdrian Hunter 
21186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 21 */
21196c4d0b41SAdrian Hunter 
21206c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbd %xmm4,%ymm6");
21216c4d0b41SAdrian Hunter 	asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
21226c4d0b41SAdrian Hunter 
21236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 22 */
21246c4d0b41SAdrian Hunter 
21256c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbq %xmm4,%ymm4");
21266c4d0b41SAdrian Hunter 	asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
21276c4d0b41SAdrian Hunter 
21286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 23 */
21296c4d0b41SAdrian Hunter 
21306c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwd %xmm4,%ymm4");
21316c4d0b41SAdrian Hunter 	asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
21326c4d0b41SAdrian Hunter 
21336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 24 */
21346c4d0b41SAdrian Hunter 
21356c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwq %xmm4,%ymm6");
21366c4d0b41SAdrian Hunter 	asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
21376c4d0b41SAdrian Hunter 
21386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 25 */
21396c4d0b41SAdrian Hunter 
21406c4d0b41SAdrian Hunter 	asm volatile("vpmovsxdq %xmm4,%ymm4");
21416c4d0b41SAdrian Hunter 	asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
21426c4d0b41SAdrian Hunter 
21436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 26 */
21446c4d0b41SAdrian Hunter 
21456c4d0b41SAdrian Hunter 	asm volatile("vptestmb %zmm5,%zmm6,%k5");
21466c4d0b41SAdrian Hunter 	asm volatile("vptestmw %zmm5,%zmm6,%k5");
21476c4d0b41SAdrian Hunter 	asm volatile("vptestnmb %zmm4,%zmm5,%k5");
21486c4d0b41SAdrian Hunter 	asm volatile("vptestnmw %zmm4,%zmm5,%k5");
21496c4d0b41SAdrian Hunter 
21506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 27 */
21516c4d0b41SAdrian Hunter 
21526c4d0b41SAdrian Hunter 	asm volatile("vptestmd %zmm5,%zmm6,%k5");
21536c4d0b41SAdrian Hunter 	asm volatile("vptestmq %zmm5,%zmm6,%k5");
21546c4d0b41SAdrian Hunter 	asm volatile("vptestnmd %zmm4,%zmm5,%k5");
21556c4d0b41SAdrian Hunter 	asm volatile("vptestnmq %zmm4,%zmm5,%k5");
21566c4d0b41SAdrian Hunter 
21576c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 28 */
21586c4d0b41SAdrian Hunter 
21596c4d0b41SAdrian Hunter 	asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
21606c4d0b41SAdrian Hunter 	asm volatile("vpmovm2b %k5,%zmm6");
21616c4d0b41SAdrian Hunter 	asm volatile("vpmovm2w %k5,%zmm6");
21626c4d0b41SAdrian Hunter 
21636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 29 */
21646c4d0b41SAdrian Hunter 
21656c4d0b41SAdrian Hunter 	asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
21666c4d0b41SAdrian Hunter 	asm volatile("vpmovb2m %zmm6,%k5");
21676c4d0b41SAdrian Hunter 	asm volatile("vpmovw2m %zmm6,%k5");
21686c4d0b41SAdrian Hunter 
21696c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2a */
21706c4d0b41SAdrian Hunter 
21716c4d0b41SAdrian Hunter 	asm volatile("vmovntdqa (%ecx),%ymm4");
21726c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmb2q %k6,%zmm1");
21736c4d0b41SAdrian Hunter 
21746c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2c */
21756c4d0b41SAdrian Hunter 
21766c4d0b41SAdrian Hunter 	asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
21776c4d0b41SAdrian Hunter 	asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
21786c4d0b41SAdrian Hunter 	asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
21796c4d0b41SAdrian Hunter 
21806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2d */
21816c4d0b41SAdrian Hunter 
21826c4d0b41SAdrian Hunter 	asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
21836c4d0b41SAdrian Hunter 	asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
21846c4d0b41SAdrian Hunter 	asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
21856c4d0b41SAdrian Hunter 
21866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 30 */
21876c4d0b41SAdrian Hunter 
21886c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbw %xmm4,%ymm4");
21896c4d0b41SAdrian Hunter 	asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
21906c4d0b41SAdrian Hunter 
21916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 31 */
21926c4d0b41SAdrian Hunter 
21936c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbd %xmm4,%ymm6");
21946c4d0b41SAdrian Hunter 	asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
21956c4d0b41SAdrian Hunter 
21966c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 32 */
21976c4d0b41SAdrian Hunter 
21986c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbq %xmm4,%ymm4");
21996c4d0b41SAdrian Hunter 	asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
22006c4d0b41SAdrian Hunter 
22016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 33 */
22026c4d0b41SAdrian Hunter 
22036c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwd %xmm4,%ymm4");
22046c4d0b41SAdrian Hunter 	asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
22056c4d0b41SAdrian Hunter 
22066c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 34 */
22076c4d0b41SAdrian Hunter 
22086c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwq %xmm4,%ymm6");
22096c4d0b41SAdrian Hunter 	asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
22106c4d0b41SAdrian Hunter 
22116c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 35 */
22126c4d0b41SAdrian Hunter 
22136c4d0b41SAdrian Hunter 	asm volatile("vpmovzxdq %xmm4,%ymm4");
22146c4d0b41SAdrian Hunter 	asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
22156c4d0b41SAdrian Hunter 
22166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 36 */
22176c4d0b41SAdrian Hunter 
22186c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2");
22196c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
22206c4d0b41SAdrian Hunter 	asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
22216c4d0b41SAdrian Hunter 
22226c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 38 */
22236c4d0b41SAdrian Hunter 
22246c4d0b41SAdrian Hunter 	asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
22256c4d0b41SAdrian Hunter 	asm volatile("vpmovm2d %k5,%zmm6");
22266c4d0b41SAdrian Hunter 	asm volatile("vpmovm2q %k5,%zmm6");
22276c4d0b41SAdrian Hunter 
22286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 39 */
22296c4d0b41SAdrian Hunter 
22306c4d0b41SAdrian Hunter 	asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
22316c4d0b41SAdrian Hunter 	asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
22326c4d0b41SAdrian Hunter 	asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
22336c4d0b41SAdrian Hunter 	asm volatile("vpmovd2m %zmm6,%k5");
22346c4d0b41SAdrian Hunter 	asm volatile("vpmovq2m %zmm6,%k5");
22356c4d0b41SAdrian Hunter 
22366c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3a */
22376c4d0b41SAdrian Hunter 
22386c4d0b41SAdrian Hunter 	asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
22396c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmw2d %k6,%zmm6");
22406c4d0b41SAdrian Hunter 
22416c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3b */
22426c4d0b41SAdrian Hunter 
22436c4d0b41SAdrian Hunter 	asm volatile("vpminud %ymm4,%ymm6,%ymm2");
22446c4d0b41SAdrian Hunter 	asm volatile("vpminud %zmm4,%zmm5,%zmm6");
22456c4d0b41SAdrian Hunter 	asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
22466c4d0b41SAdrian Hunter 
22476c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3d */
22486c4d0b41SAdrian Hunter 
22496c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
22506c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
22516c4d0b41SAdrian Hunter 	asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
22526c4d0b41SAdrian Hunter 
22536c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3f */
22546c4d0b41SAdrian Hunter 
22556c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
22566c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
22576c4d0b41SAdrian Hunter 	asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
22586c4d0b41SAdrian Hunter 
22596c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 40 */
22606c4d0b41SAdrian Hunter 
22616c4d0b41SAdrian Hunter 	asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
22626c4d0b41SAdrian Hunter 	asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
22636c4d0b41SAdrian Hunter 	asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
22646c4d0b41SAdrian Hunter 
22656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 42 */
22666c4d0b41SAdrian Hunter 
22676c4d0b41SAdrian Hunter 	asm volatile("vgetexpps %zmm5,%zmm6");
22686c4d0b41SAdrian Hunter 	asm volatile("vgetexppd %zmm5,%zmm6");
22696c4d0b41SAdrian Hunter 
22706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 43 */
22716c4d0b41SAdrian Hunter 
22726c4d0b41SAdrian Hunter 	asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
22736c4d0b41SAdrian Hunter 	asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
22746c4d0b41SAdrian Hunter 
22756c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 44 */
22766c4d0b41SAdrian Hunter 
22776c4d0b41SAdrian Hunter 	asm volatile("vplzcntd %zmm5,%zmm6");
22786c4d0b41SAdrian Hunter 	asm volatile("vplzcntq %zmm5,%zmm6");
22796c4d0b41SAdrian Hunter 
22806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 46 */
22816c4d0b41SAdrian Hunter 
22826c4d0b41SAdrian Hunter 	asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
22836c4d0b41SAdrian Hunter 	asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
22846c4d0b41SAdrian Hunter 	asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
22856c4d0b41SAdrian Hunter 
22866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4c */
22876c4d0b41SAdrian Hunter 
22886c4d0b41SAdrian Hunter 	asm volatile("vrcp14ps %zmm5,%zmm6");
22896c4d0b41SAdrian Hunter 	asm volatile("vrcp14pd %zmm5,%zmm6");
22906c4d0b41SAdrian Hunter 
22916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4d */
22926c4d0b41SAdrian Hunter 
22936c4d0b41SAdrian Hunter 	asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
22946c4d0b41SAdrian Hunter 	asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
22956c4d0b41SAdrian Hunter 
22966c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4e */
22976c4d0b41SAdrian Hunter 
22986c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ps %zmm5,%zmm6");
22996c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14pd %zmm5,%zmm6");
23006c4d0b41SAdrian Hunter 
23016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4f */
23026c4d0b41SAdrian Hunter 
23036c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
23046c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
23056c4d0b41SAdrian Hunter 
23069adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 50 */
23079adab034SAdrian Hunter 
23089adab034SAdrian Hunter 	asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
23099adab034SAdrian Hunter 	asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
23109adab034SAdrian Hunter 	asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
23119adab034SAdrian Hunter 	asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
23129adab034SAdrian Hunter 
23139adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 51 */
23149adab034SAdrian Hunter 
23159adab034SAdrian Hunter 	asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
23169adab034SAdrian Hunter 	asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
23179adab034SAdrian Hunter 	asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
23189adab034SAdrian Hunter 	asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
23199adab034SAdrian Hunter 
23209adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 52 */
23219adab034SAdrian Hunter 
23229adab034SAdrian Hunter 	asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
23239adab034SAdrian Hunter 	asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
23249adab034SAdrian Hunter 	asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
23259adab034SAdrian Hunter 	asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
23269adab034SAdrian Hunter 
23279adab034SAdrian Hunter 	asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
23289adab034SAdrian Hunter 	asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
23299adab034SAdrian Hunter 	asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
23309adab034SAdrian Hunter 	asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
23319adab034SAdrian Hunter 
23329adab034SAdrian Hunter 	asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
23339adab034SAdrian Hunter 	asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
23349adab034SAdrian Hunter 
23359adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 53 */
23369adab034SAdrian Hunter 
23379adab034SAdrian Hunter 	asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
23389adab034SAdrian Hunter 	asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
23399adab034SAdrian Hunter 	asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
23409adab034SAdrian Hunter 	asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
23419adab034SAdrian Hunter 
23429adab034SAdrian Hunter 	asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
23439adab034SAdrian Hunter 	asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
23449adab034SAdrian Hunter 
23459adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 54 */
23469adab034SAdrian Hunter 
23479adab034SAdrian Hunter 	asm volatile("vpopcntb %xmm1, %xmm2");
23489adab034SAdrian Hunter 	asm volatile("vpopcntb %ymm1, %ymm2");
23499adab034SAdrian Hunter 	asm volatile("vpopcntb %zmm1, %zmm2");
23509adab034SAdrian Hunter 	asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
23519adab034SAdrian Hunter 
23529adab034SAdrian Hunter 	asm volatile("vpopcntw %xmm1, %xmm2");
23539adab034SAdrian Hunter 	asm volatile("vpopcntw %ymm1, %ymm2");
23549adab034SAdrian Hunter 	asm volatile("vpopcntw %zmm1, %zmm2");
23559adab034SAdrian Hunter 	asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
23569adab034SAdrian Hunter 
23579adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 55 */
23589adab034SAdrian Hunter 
23599adab034SAdrian Hunter 	asm volatile("vpopcntd %xmm1, %xmm2");
23609adab034SAdrian Hunter 	asm volatile("vpopcntd %ymm1, %ymm2");
23619adab034SAdrian Hunter 	asm volatile("vpopcntd %zmm1, %zmm2");
23629adab034SAdrian Hunter 	asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
23639adab034SAdrian Hunter 
23649adab034SAdrian Hunter 	asm volatile("vpopcntq %xmm1, %xmm2");
23659adab034SAdrian Hunter 	asm volatile("vpopcntq %ymm1, %ymm2");
23669adab034SAdrian Hunter 	asm volatile("vpopcntq %zmm1, %zmm2");
23679adab034SAdrian Hunter 	asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
23689adab034SAdrian Hunter 
23696c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 59 */
23706c4d0b41SAdrian Hunter 
23716c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %xmm4,%xmm6");
23726c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
23736c4d0b41SAdrian Hunter 
23746c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5a */
23756c4d0b41SAdrian Hunter 
23766c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti128 (%ecx),%ymm4");
23776c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
23786c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
23796c4d0b41SAdrian Hunter 
23806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5b */
23816c4d0b41SAdrian Hunter 
23826c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
23836c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
23846c4d0b41SAdrian Hunter 
23859adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 62 */
23869adab034SAdrian Hunter 
23879adab034SAdrian Hunter 	asm volatile("vpexpandb %xmm1, %xmm2");
23889adab034SAdrian Hunter 	asm volatile("vpexpandb %ymm1, %ymm2");
23899adab034SAdrian Hunter 	asm volatile("vpexpandb %zmm1, %zmm2");
23909adab034SAdrian Hunter 	asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
23919adab034SAdrian Hunter 
23929adab034SAdrian Hunter 	asm volatile("vpexpandw %xmm1, %xmm2");
23939adab034SAdrian Hunter 	asm volatile("vpexpandw %ymm1, %ymm2");
23949adab034SAdrian Hunter 	asm volatile("vpexpandw %zmm1, %zmm2");
23959adab034SAdrian Hunter 	asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
23969adab034SAdrian Hunter 
23979adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 63 */
23989adab034SAdrian Hunter 
23999adab034SAdrian Hunter 	asm volatile("vpcompressb %xmm1, %xmm2");
24009adab034SAdrian Hunter 	asm volatile("vpcompressb %ymm1, %ymm2");
24019adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm1, %zmm2");
24029adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
24039adab034SAdrian Hunter 
24049adab034SAdrian Hunter 	asm volatile("vpcompressw %xmm1, %xmm2");
24059adab034SAdrian Hunter 	asm volatile("vpcompressw %ymm1, %ymm2");
24069adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm1, %zmm2");
24079adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
24089adab034SAdrian Hunter 
24096c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 64 */
24106c4d0b41SAdrian Hunter 
24116c4d0b41SAdrian Hunter 	asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
24126c4d0b41SAdrian Hunter 	asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
24136c4d0b41SAdrian Hunter 
24146c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 65 */
24156c4d0b41SAdrian Hunter 
24166c4d0b41SAdrian Hunter 	asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
24176c4d0b41SAdrian Hunter 	asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
24186c4d0b41SAdrian Hunter 
24196c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 66 */
24206c4d0b41SAdrian Hunter 
24216c4d0b41SAdrian Hunter 	asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
24226c4d0b41SAdrian Hunter 	asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
24236c4d0b41SAdrian Hunter 
24249adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 68 */
24259adab034SAdrian Hunter 
24269adab034SAdrian Hunter 	asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
24279adab034SAdrian Hunter 	asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
24289adab034SAdrian Hunter 	asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
24299adab034SAdrian Hunter 	asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
24309adab034SAdrian Hunter 
24319adab034SAdrian Hunter 	asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
24329adab034SAdrian Hunter 	asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
24339adab034SAdrian Hunter 	asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
24349adab034SAdrian Hunter 	asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
24359adab034SAdrian Hunter 
24369adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 70 */
24379adab034SAdrian Hunter 
24389adab034SAdrian Hunter 	asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
24399adab034SAdrian Hunter 	asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
24409adab034SAdrian Hunter 	asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
24419adab034SAdrian Hunter 	asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24429adab034SAdrian Hunter 
24439adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 71 */
24449adab034SAdrian Hunter 
24459adab034SAdrian Hunter 	asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
24469adab034SAdrian Hunter 	asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
24479adab034SAdrian Hunter 	asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
24489adab034SAdrian Hunter 	asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24499adab034SAdrian Hunter 
24509adab034SAdrian Hunter 	asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
24519adab034SAdrian Hunter 	asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
24529adab034SAdrian Hunter 	asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
24539adab034SAdrian Hunter 	asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24549adab034SAdrian Hunter 
24559adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 72 */
24569adab034SAdrian Hunter 
24579adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
24589adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
24599adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
24609adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24619adab034SAdrian Hunter 
24629adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
24639adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
24649adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
24659adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
24669adab034SAdrian Hunter 
24679adab034SAdrian Hunter 	asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
24689adab034SAdrian Hunter 	asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
24699adab034SAdrian Hunter 	asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
24709adab034SAdrian Hunter 	asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24719adab034SAdrian Hunter 
24729adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 73 */
24739adab034SAdrian Hunter 
24749adab034SAdrian Hunter 	asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
24759adab034SAdrian Hunter 	asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
24769adab034SAdrian Hunter 	asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
24779adab034SAdrian Hunter 	asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24789adab034SAdrian Hunter 
24799adab034SAdrian Hunter 	asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
24809adab034SAdrian Hunter 	asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
24819adab034SAdrian Hunter 	asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
24829adab034SAdrian Hunter 	asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24839adab034SAdrian Hunter 
24846c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 75 */
24856c4d0b41SAdrian Hunter 
24866c4d0b41SAdrian Hunter 	asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
24876c4d0b41SAdrian Hunter 	asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
24886c4d0b41SAdrian Hunter 
24896c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 76 */
24906c4d0b41SAdrian Hunter 
24916c4d0b41SAdrian Hunter 	asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
24926c4d0b41SAdrian Hunter 	asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
24936c4d0b41SAdrian Hunter 
24946c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 77 */
24956c4d0b41SAdrian Hunter 
24966c4d0b41SAdrian Hunter 	asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
24976c4d0b41SAdrian Hunter 	asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
24986c4d0b41SAdrian Hunter 
24996c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7a */
25006c4d0b41SAdrian Hunter 
25016c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastb %eax,%xmm3");
25026c4d0b41SAdrian Hunter 
25036c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7b */
25046c4d0b41SAdrian Hunter 
25056c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastw %eax,%xmm3");
25066c4d0b41SAdrian Hunter 
25076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7c */
25086c4d0b41SAdrian Hunter 
25096c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastd %eax,%xmm3");
25106c4d0b41SAdrian Hunter 
25116c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7d */
25126c4d0b41SAdrian Hunter 
25136c4d0b41SAdrian Hunter 	asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
25146c4d0b41SAdrian Hunter 	asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
25156c4d0b41SAdrian Hunter 
25166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7e */
25176c4d0b41SAdrian Hunter 
25186c4d0b41SAdrian Hunter 	asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
25196c4d0b41SAdrian Hunter 	asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
25206c4d0b41SAdrian Hunter 
25216c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7f */
25226c4d0b41SAdrian Hunter 
25236c4d0b41SAdrian Hunter 	asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
25246c4d0b41SAdrian Hunter 	asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
25256c4d0b41SAdrian Hunter 
25266c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 83 */
25276c4d0b41SAdrian Hunter 
25286c4d0b41SAdrian Hunter 	asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
25296c4d0b41SAdrian Hunter 
25306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 88 */
25316c4d0b41SAdrian Hunter 
25326c4d0b41SAdrian Hunter 	asm volatile("vexpandps (%ecx),%zmm6");
25336c4d0b41SAdrian Hunter 	asm volatile("vexpandpd (%ecx),%zmm6");
25346c4d0b41SAdrian Hunter 
25356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 89 */
25366c4d0b41SAdrian Hunter 
25376c4d0b41SAdrian Hunter 	asm volatile("vpexpandd (%ecx),%zmm6");
25386c4d0b41SAdrian Hunter 	asm volatile("vpexpandq (%ecx),%zmm6");
25396c4d0b41SAdrian Hunter 
25406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8a */
25416c4d0b41SAdrian Hunter 
25426c4d0b41SAdrian Hunter 	asm volatile("vcompressps %zmm6,(%ecx)");
25436c4d0b41SAdrian Hunter 	asm volatile("vcompresspd %zmm6,(%ecx)");
25446c4d0b41SAdrian Hunter 
25456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8b */
25466c4d0b41SAdrian Hunter 
25476c4d0b41SAdrian Hunter 	asm volatile("vpcompressd %zmm6,(%ecx)");
25486c4d0b41SAdrian Hunter 	asm volatile("vpcompressq %zmm6,(%ecx)");
25496c4d0b41SAdrian Hunter 
25506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8d */
25516c4d0b41SAdrian Hunter 
25526c4d0b41SAdrian Hunter 	asm volatile("vpermb %zmm4,%zmm5,%zmm6");
25536c4d0b41SAdrian Hunter 	asm volatile("vpermw %zmm4,%zmm5,%zmm6");
25546c4d0b41SAdrian Hunter 
25559adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 8f */
25569adab034SAdrian Hunter 
25579adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
25589adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
25599adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
25609adab034SAdrian Hunter 	asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
25619adab034SAdrian Hunter 
25626c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 90 */
25636c4d0b41SAdrian Hunter 
25646c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
25656c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
25666c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
25676c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
25686c4d0b41SAdrian Hunter 
25696c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 91 */
25706c4d0b41SAdrian Hunter 
25716c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
25726c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
25736c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
25746c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
25756c4d0b41SAdrian Hunter 
25769adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 9a */
25779adab034SAdrian Hunter 
25789adab034SAdrian Hunter 	asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
25799adab034SAdrian Hunter 	asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
25809adab034SAdrian Hunter 	asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
25819adab034SAdrian Hunter 	asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
25829adab034SAdrian Hunter 
25839adab034SAdrian Hunter 	asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
25849adab034SAdrian Hunter 	asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
25859adab034SAdrian Hunter 	asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
25869adab034SAdrian Hunter 	asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
25879adab034SAdrian Hunter 
25889adab034SAdrian Hunter 	asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
25899adab034SAdrian Hunter 	asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
25909adab034SAdrian Hunter 
25919adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 9b */
25929adab034SAdrian Hunter 
25939adab034SAdrian Hunter 	asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
25949adab034SAdrian Hunter 	asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
25959adab034SAdrian Hunter 
25969adab034SAdrian Hunter 	asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
25979adab034SAdrian Hunter 	asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
25989adab034SAdrian Hunter 
25999adab034SAdrian Hunter 	asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
26009adab034SAdrian Hunter 	asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
26019adab034SAdrian Hunter 
26026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a0 */
26036c4d0b41SAdrian Hunter 
26046c4d0b41SAdrian Hunter 	asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
26056c4d0b41SAdrian Hunter 	asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
26066c4d0b41SAdrian Hunter 
26076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a1 */
26086c4d0b41SAdrian Hunter 
26096c4d0b41SAdrian Hunter 	asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
26106c4d0b41SAdrian Hunter 	asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
26116c4d0b41SAdrian Hunter 
26126c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a2 */
26136c4d0b41SAdrian Hunter 
26146c4d0b41SAdrian Hunter 	asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
26156c4d0b41SAdrian Hunter 	asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
26166c4d0b41SAdrian Hunter 
26176c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a3 */
26186c4d0b41SAdrian Hunter 
26196c4d0b41SAdrian Hunter 	asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
26206c4d0b41SAdrian Hunter 	asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
26216c4d0b41SAdrian Hunter 
26229adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 aa */
26239adab034SAdrian Hunter 
26249adab034SAdrian Hunter 	asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
26259adab034SAdrian Hunter 	asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
26269adab034SAdrian Hunter 	asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
26279adab034SAdrian Hunter 	asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26289adab034SAdrian Hunter 
26299adab034SAdrian Hunter 	asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
26309adab034SAdrian Hunter 	asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
26319adab034SAdrian Hunter 	asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
26329adab034SAdrian Hunter 	asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26339adab034SAdrian Hunter 
26349adab034SAdrian Hunter 	asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
26359adab034SAdrian Hunter 	asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
26369adab034SAdrian Hunter 
26379adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 ab */
26389adab034SAdrian Hunter 
26399adab034SAdrian Hunter 	asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
26409adab034SAdrian Hunter 	asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
26419adab034SAdrian Hunter 
26429adab034SAdrian Hunter 	asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
26439adab034SAdrian Hunter 	asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
26449adab034SAdrian Hunter 
26459adab034SAdrian Hunter 	asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
26469adab034SAdrian Hunter 	asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
26479adab034SAdrian Hunter 
26486c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b4 */
26496c4d0b41SAdrian Hunter 
26506c4d0b41SAdrian Hunter 	asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
26516c4d0b41SAdrian Hunter 
26526c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b5 */
26536c4d0b41SAdrian Hunter 
26546c4d0b41SAdrian Hunter 	asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
26556c4d0b41SAdrian Hunter 
26566c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c4 */
26576c4d0b41SAdrian Hunter 
26586c4d0b41SAdrian Hunter 	asm volatile("vpconflictd %zmm5,%zmm6");
26596c4d0b41SAdrian Hunter 	asm volatile("vpconflictq %zmm5,%zmm6");
26606c4d0b41SAdrian Hunter 
26616c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c8 */
26626c4d0b41SAdrian Hunter 
26636c4d0b41SAdrian Hunter 	asm volatile("vexp2ps %zmm6,%zmm7");
26646c4d0b41SAdrian Hunter 	asm volatile("vexp2pd %zmm6,%zmm7");
26656c4d0b41SAdrian Hunter 
26666c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 ca */
26676c4d0b41SAdrian Hunter 
26686c4d0b41SAdrian Hunter 	asm volatile("vrcp28ps %zmm6,%zmm7");
26696c4d0b41SAdrian Hunter 	asm volatile("vrcp28pd %zmm6,%zmm7");
26706c4d0b41SAdrian Hunter 
26716c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cb */
26726c4d0b41SAdrian Hunter 
26736c4d0b41SAdrian Hunter 	asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
26746c4d0b41SAdrian Hunter 	asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
26756c4d0b41SAdrian Hunter 
26766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cc */
26776c4d0b41SAdrian Hunter 
26786c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ps %zmm6,%zmm7");
26796c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28pd %zmm6,%zmm7");
26806c4d0b41SAdrian Hunter 
26816c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cd */
26826c4d0b41SAdrian Hunter 
26836c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
26846c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
26856c4d0b41SAdrian Hunter 
26869adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 cf */
26879adab034SAdrian Hunter 
26889adab034SAdrian Hunter 	asm volatile("gf2p8mulb %xmm1, %xmm3");
26899adab034SAdrian Hunter 	asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
26909adab034SAdrian Hunter 
26919adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
26929adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
26939adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
26949adab034SAdrian Hunter 	asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26959adab034SAdrian Hunter 
26969adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 dc */
26979adab034SAdrian Hunter 
26989adab034SAdrian Hunter 	asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
26999adab034SAdrian Hunter 	asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
27009adab034SAdrian Hunter 	asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
27019adab034SAdrian Hunter 	asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27029adab034SAdrian Hunter 
27039adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 dd */
27049adab034SAdrian Hunter 
27059adab034SAdrian Hunter 	asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
27069adab034SAdrian Hunter 	asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
27079adab034SAdrian Hunter 	asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
27089adab034SAdrian Hunter 	asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27099adab034SAdrian Hunter 
27109adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 de */
27119adab034SAdrian Hunter 
27129adab034SAdrian Hunter 	asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
27139adab034SAdrian Hunter 	asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
27149adab034SAdrian Hunter 	asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
27159adab034SAdrian Hunter 	asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27169adab034SAdrian Hunter 
27179adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 df */
27189adab034SAdrian Hunter 
27199adab034SAdrian Hunter 	asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
27209adab034SAdrian Hunter 	asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
27219adab034SAdrian Hunter 	asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
27229adab034SAdrian Hunter 	asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27239adab034SAdrian Hunter 
27246c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 03 */
27256c4d0b41SAdrian Hunter 
27266c4d0b41SAdrian Hunter 	asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
27276c4d0b41SAdrian Hunter 	asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
27286c4d0b41SAdrian Hunter 
27296c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 08 */
27306c4d0b41SAdrian Hunter 
27316c4d0b41SAdrian Hunter 	asm volatile("vroundps $0x5,%ymm6,%ymm2");
27326c4d0b41SAdrian Hunter 	asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
27336c4d0b41SAdrian Hunter 
27346c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 09 */
27356c4d0b41SAdrian Hunter 
27366c4d0b41SAdrian Hunter 	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
27376c4d0b41SAdrian Hunter 	asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
27386c4d0b41SAdrian Hunter 
27396c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0a */
27406c4d0b41SAdrian Hunter 
27416c4d0b41SAdrian Hunter 	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
27426c4d0b41SAdrian Hunter 	asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
27436c4d0b41SAdrian Hunter 
27446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0b */
27456c4d0b41SAdrian Hunter 
27466c4d0b41SAdrian Hunter 	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
27476c4d0b41SAdrian Hunter 	asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
27486c4d0b41SAdrian Hunter 
27496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 18 */
27506c4d0b41SAdrian Hunter 
27516c4d0b41SAdrian Hunter 	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
27526c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
27536c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
27546c4d0b41SAdrian Hunter 
27556c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 19 */
27566c4d0b41SAdrian Hunter 
27576c4d0b41SAdrian Hunter 	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
27586c4d0b41SAdrian Hunter 	asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
27596c4d0b41SAdrian Hunter 	asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
27606c4d0b41SAdrian Hunter 
27616c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
27626c4d0b41SAdrian Hunter 
27636c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
27646c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
27656c4d0b41SAdrian Hunter 
27666c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1b */
27676c4d0b41SAdrian Hunter 
27686c4d0b41SAdrian Hunter 	asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
27696c4d0b41SAdrian Hunter 	asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
27706c4d0b41SAdrian Hunter 
27716c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1e */
27726c4d0b41SAdrian Hunter 
27736c4d0b41SAdrian Hunter 	asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
27746c4d0b41SAdrian Hunter 	asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
27756c4d0b41SAdrian Hunter 
27766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1f */
27776c4d0b41SAdrian Hunter 
27786c4d0b41SAdrian Hunter 	asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
27796c4d0b41SAdrian Hunter 	asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
27806c4d0b41SAdrian Hunter 
27816c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 23 */
27826c4d0b41SAdrian Hunter 
27836c4d0b41SAdrian Hunter 	asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
27846c4d0b41SAdrian Hunter 	asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
27856c4d0b41SAdrian Hunter 
27866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 25 */
27876c4d0b41SAdrian Hunter 
27886c4d0b41SAdrian Hunter 	asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
27896c4d0b41SAdrian Hunter 	asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
27906c4d0b41SAdrian Hunter 
27916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 26 */
27926c4d0b41SAdrian Hunter 
27936c4d0b41SAdrian Hunter 	asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
27946c4d0b41SAdrian Hunter 	asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
27956c4d0b41SAdrian Hunter 
27966c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 27 */
27976c4d0b41SAdrian Hunter 
27986c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
27996c4d0b41SAdrian Hunter 	asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
28006c4d0b41SAdrian Hunter 
28016c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 38 */
28026c4d0b41SAdrian Hunter 
28036c4d0b41SAdrian Hunter 	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
28046c4d0b41SAdrian Hunter 	asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
28056c4d0b41SAdrian Hunter 	asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
28066c4d0b41SAdrian Hunter 
28076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 39 */
28086c4d0b41SAdrian Hunter 
28096c4d0b41SAdrian Hunter 	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
28106c4d0b41SAdrian Hunter 	asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
28116c4d0b41SAdrian Hunter 	asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
28126c4d0b41SAdrian Hunter 
28136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3a */
28146c4d0b41SAdrian Hunter 
28156c4d0b41SAdrian Hunter 	asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
28166c4d0b41SAdrian Hunter 	asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
28176c4d0b41SAdrian Hunter 
28186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3b */
28196c4d0b41SAdrian Hunter 
28206c4d0b41SAdrian Hunter 	asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
28216c4d0b41SAdrian Hunter 	asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
28226c4d0b41SAdrian Hunter 
28236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3e */
28246c4d0b41SAdrian Hunter 
28256c4d0b41SAdrian Hunter 	asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
28266c4d0b41SAdrian Hunter 	asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
28276c4d0b41SAdrian Hunter 
28286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3f */
28296c4d0b41SAdrian Hunter 
28306c4d0b41SAdrian Hunter 	asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
28316c4d0b41SAdrian Hunter 	asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
28326c4d0b41SAdrian Hunter 
28336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 42 */
28346c4d0b41SAdrian Hunter 
28356c4d0b41SAdrian Hunter 	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
28366c4d0b41SAdrian Hunter 	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
28376c4d0b41SAdrian Hunter 
28386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
28396c4d0b41SAdrian Hunter 
28406c4d0b41SAdrian Hunter 	asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
28416c4d0b41SAdrian Hunter 	asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
28426c4d0b41SAdrian Hunter 
28439adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 44 */
28449adab034SAdrian Hunter 
28459adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
28469adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
28479adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
28489adab034SAdrian Hunter 
28496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 50 */
28506c4d0b41SAdrian Hunter 
28516c4d0b41SAdrian Hunter 	asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
28526c4d0b41SAdrian Hunter 	asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
28536c4d0b41SAdrian Hunter 
28546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 51 */
28556c4d0b41SAdrian Hunter 
28566c4d0b41SAdrian Hunter 	asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
28576c4d0b41SAdrian Hunter 	asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
28586c4d0b41SAdrian Hunter 
28596c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 54 */
28606c4d0b41SAdrian Hunter 
28616c4d0b41SAdrian Hunter 	asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
28626c4d0b41SAdrian Hunter 	asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
28636c4d0b41SAdrian Hunter 
28646c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 55 */
28656c4d0b41SAdrian Hunter 
28666c4d0b41SAdrian Hunter 	asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
28676c4d0b41SAdrian Hunter 	asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
28686c4d0b41SAdrian Hunter 
28696c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 56 */
28706c4d0b41SAdrian Hunter 
28716c4d0b41SAdrian Hunter 	asm volatile("vreduceps $0x12,%zmm6,%zmm7");
28726c4d0b41SAdrian Hunter 	asm volatile("vreducepd $0x12,%zmm6,%zmm7");
28736c4d0b41SAdrian Hunter 
28746c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 57 */
28756c4d0b41SAdrian Hunter 
28766c4d0b41SAdrian Hunter 	asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
28776c4d0b41SAdrian Hunter 	asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
28786c4d0b41SAdrian Hunter 
28796c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 66 */
28806c4d0b41SAdrian Hunter 
28816c4d0b41SAdrian Hunter 	asm volatile("vfpclassps $0x12,%zmm7,%k5");
28826c4d0b41SAdrian Hunter 	asm volatile("vfpclasspd $0x12,%zmm7,%k5");
28836c4d0b41SAdrian Hunter 
28846c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 67 */
28856c4d0b41SAdrian Hunter 
28866c4d0b41SAdrian Hunter 	asm volatile("vfpclassss $0x12,%xmm7,%k5");
28876c4d0b41SAdrian Hunter 	asm volatile("vfpclasssd $0x12,%xmm7,%k5");
28886c4d0b41SAdrian Hunter 
28899adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 70 */
28909adab034SAdrian Hunter 
28919adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
28929adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
28939adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
28949adab034SAdrian Hunter 
28959adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 71 */
28969adab034SAdrian Hunter 
28979adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
28989adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
28999adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
29009adab034SAdrian Hunter 
29019adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
29029adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
29039adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
29049adab034SAdrian Hunter 
29059adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 72 */
29069adab034SAdrian Hunter 
29079adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
29089adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
29099adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
29109adab034SAdrian Hunter 
29119adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 73 */
29129adab034SAdrian Hunter 
29139adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
29149adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
29159adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
29169adab034SAdrian Hunter 
29179adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
29189adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
29199adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
29209adab034SAdrian Hunter 
29219adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a ce */
29229adab034SAdrian Hunter 
29239adab034SAdrian Hunter 	asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
29249adab034SAdrian Hunter 
29259adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
29269adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
29279adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
29289adab034SAdrian Hunter 
29299adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a cf */
29309adab034SAdrian Hunter 
29319adab034SAdrian Hunter 	asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
29329adab034SAdrian Hunter 
29339adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
29349adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
29359adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
29369adab034SAdrian Hunter 
29376c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 72 (Grp13) */
29386c4d0b41SAdrian Hunter 
29396c4d0b41SAdrian Hunter 	asm volatile("vprord $0x12,%zmm5,%zmm6");
29406c4d0b41SAdrian Hunter 	asm volatile("vprorq $0x12,%zmm5,%zmm6");
29416c4d0b41SAdrian Hunter 	asm volatile("vprold $0x12,%zmm5,%zmm6");
29426c4d0b41SAdrian Hunter 	asm volatile("vprolq $0x12,%zmm5,%zmm6");
29436c4d0b41SAdrian Hunter 	asm volatile("psrad  $0x2,%mm6");
29446c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
29456c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%zmm6,%zmm2");
29466c4d0b41SAdrian Hunter 	asm volatile("vpsraq $0x5,%zmm6,%zmm2");
29476c4d0b41SAdrian Hunter 
29486c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c6 (Grp18) */
29496c4d0b41SAdrian Hunter 
29506c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
29516c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
29526c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
29536c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
29546c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
29556c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
29566c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
29576c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
29586c4d0b41SAdrian Hunter 
29596c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c7 (Grp19) */
29606c4d0b41SAdrian Hunter 
29616c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
29626c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
29636c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
29646c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
29656c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
29666c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
29676c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
29686c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
29696c4d0b41SAdrian Hunter 
29706c4d0b41SAdrian Hunter 	/* AVX-512: Examples */
29716c4d0b41SAdrian Hunter 
29726c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
29736c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
29746c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
29756c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
29766c4d0b41SAdrian Hunter 	asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
29776c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
29786c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
29796c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
29806c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
29816c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
29826c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
29836c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
29846c4d0b41SAdrian Hunter 	asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
29856c4d0b41SAdrian Hunter 	asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
29866c4d0b41SAdrian Hunter 	asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
29876c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
29886c4d0b41SAdrian Hunter 
2989d8b167f9SMatt Fleming 	/* bndmk m32, bnd */
2990d8b167f9SMatt Fleming 
2991d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax), %bnd0");
2992d8b167f9SMatt Fleming 	asm volatile("bndmk (0x12345678), %bnd0");
2993d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax), %bnd3");
2994d8b167f9SMatt Fleming 	asm volatile("bndmk (%ecx,%eax,1), %bnd0");
2995d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
2996d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax,%ecx,1), %bnd0");
2997d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax,%ecx,8), %bnd0");
2998d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax), %bnd0");
2999d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ebp), %bnd0");
3000d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
3001d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
3002d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
3003d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
3004d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax), %bnd0");
3005d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ebp), %bnd0");
3006d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
3007d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
3008d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
3009d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
3010d8b167f9SMatt Fleming 
3011d8b167f9SMatt Fleming 	/* bndcl r/m32, bnd */
3012d8b167f9SMatt Fleming 
3013d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax), %bnd0");
3014d8b167f9SMatt Fleming 	asm volatile("bndcl (0x12345678), %bnd0");
3015d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax), %bnd3");
3016d8b167f9SMatt Fleming 	asm volatile("bndcl (%ecx,%eax,1), %bnd0");
3017d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
3018d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax,%ecx,1), %bnd0");
3019d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax,%ecx,8), %bnd0");
3020d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax), %bnd0");
3021d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ebp), %bnd0");
3022d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
3023d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
3024d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
3025d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
3026d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax), %bnd0");
3027d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ebp), %bnd0");
3028d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
3029d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
3030d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
3031d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
3032d8b167f9SMatt Fleming 	asm volatile("bndcl %eax, %bnd0");
3033d8b167f9SMatt Fleming 
3034d8b167f9SMatt Fleming 	/* bndcu r/m32, bnd */
3035d8b167f9SMatt Fleming 
3036d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax), %bnd0");
3037d8b167f9SMatt Fleming 	asm volatile("bndcu (0x12345678), %bnd0");
3038d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax), %bnd3");
3039d8b167f9SMatt Fleming 	asm volatile("bndcu (%ecx,%eax,1), %bnd0");
3040d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
3041d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax,%ecx,1), %bnd0");
3042d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax,%ecx,8), %bnd0");
3043d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax), %bnd0");
3044d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ebp), %bnd0");
3045d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
3046d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
3047d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
3048d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
3049d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax), %bnd0");
3050d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ebp), %bnd0");
3051d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
3052d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
3053d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
3054d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
3055d8b167f9SMatt Fleming 	asm volatile("bndcu %eax, %bnd0");
3056d8b167f9SMatt Fleming 
3057d8b167f9SMatt Fleming 	/* bndcn r/m32, bnd */
3058d8b167f9SMatt Fleming 
3059d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax), %bnd0");
3060d8b167f9SMatt Fleming 	asm volatile("bndcn (0x12345678), %bnd0");
3061d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax), %bnd3");
3062d8b167f9SMatt Fleming 	asm volatile("bndcn (%ecx,%eax,1), %bnd0");
3063d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
3064d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax,%ecx,1), %bnd0");
3065d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax,%ecx,8), %bnd0");
3066d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax), %bnd0");
3067d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ebp), %bnd0");
3068d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
3069d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
3070d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
3071d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
3072d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax), %bnd0");
3073d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ebp), %bnd0");
3074d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
3075d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
3076d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
3077d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
3078d8b167f9SMatt Fleming 	asm volatile("bndcn %eax, %bnd0");
3079d8b167f9SMatt Fleming 
3080d8b167f9SMatt Fleming 	/* bndmov m64, bnd */
3081d8b167f9SMatt Fleming 
3082d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax), %bnd0");
3083d8b167f9SMatt Fleming 	asm volatile("bndmov (0x12345678), %bnd0");
3084d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax), %bnd3");
3085d8b167f9SMatt Fleming 	asm volatile("bndmov (%ecx,%eax,1), %bnd0");
3086d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
3087d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax,%ecx,1), %bnd0");
3088d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax,%ecx,8), %bnd0");
3089d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax), %bnd0");
3090d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ebp), %bnd0");
3091d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
3092d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
3093d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
3094d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
3095d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax), %bnd0");
3096d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ebp), %bnd0");
3097d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
3098d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
3099d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
3100d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
3101d8b167f9SMatt Fleming 
3102d8b167f9SMatt Fleming 	/* bndmov bnd, m64 */
3103d8b167f9SMatt Fleming 
3104d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax)");
3105d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (0x12345678)");
3106d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd3, (%eax)");
3107d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
3108d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
3109d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
3110d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
3111d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax)");
3112d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ebp)");
3113d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
3114d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
3115d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
3116d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
3117d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax)");
3118d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
3119d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
3120d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
3121d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
3122d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
3123d8b167f9SMatt Fleming 
3124d8b167f9SMatt Fleming 	/* bndmov bnd2, bnd1 */
3125d8b167f9SMatt Fleming 
3126d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, %bnd1");
3127d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd1, %bnd0");
3128d8b167f9SMatt Fleming 
3129d8b167f9SMatt Fleming 	/* bndldx mib, bnd */
3130d8b167f9SMatt Fleming 
3131d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax), %bnd0");
3132d8b167f9SMatt Fleming 	asm volatile("bndldx (0x12345678), %bnd0");
3133d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax), %bnd3");
3134d8b167f9SMatt Fleming 	asm volatile("bndldx (%ecx,%eax,1), %bnd0");
3135d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
3136d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax,%ecx,1), %bnd0");
3137d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%eax), %bnd0");
3138d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ebp), %bnd0");
3139d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
3140d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
3141d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
3142d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%eax), %bnd0");
3143d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ebp), %bnd0");
3144d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
3145d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
3146d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
3147d8b167f9SMatt Fleming 
3148d8b167f9SMatt Fleming 	/* bndstx bnd, mib */
3149d8b167f9SMatt Fleming 
3150d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%eax)");
3151d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (0x12345678)");
3152d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd3, (%eax)");
3153d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
3154d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
3155d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
3156d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%eax)");
3157d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ebp)");
3158d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
3159d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
3160d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
3161d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%eax)");
3162d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
3163d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
3164d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
3165d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
3166d8b167f9SMatt Fleming 
3167d8b167f9SMatt Fleming 	/* bnd prefix on call, ret, jmp and all jcc */
3168d8b167f9SMatt Fleming 
3169d8b167f9SMatt Fleming 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
3170d8b167f9SMatt Fleming 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
3171d8b167f9SMatt Fleming 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
3172d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3173d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3174d8b167f9SMatt Fleming 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
3175d8b167f9SMatt Fleming 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
3176d8b167f9SMatt Fleming 
3177d8b167f9SMatt Fleming 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
3178d8b167f9SMatt Fleming 
3179d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
3180d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
3181d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
3182d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
3183d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
3184d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
3185d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
3186d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
3187d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
3188d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
3189d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
3190d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
3191d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
3192d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
3193d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
3194d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
3195d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
3196d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
3197d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
3198d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
3199d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
3200d8b167f9SMatt Fleming 
3201d8b167f9SMatt Fleming 	/* sha1nexte xmm2/m128, xmm1 */
3202d8b167f9SMatt Fleming 
3203d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm1, %xmm0");
3204d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm2");
3205d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax), %xmm0");
3206d8b167f9SMatt Fleming 	asm volatile("sha1nexte (0x12345678), %xmm0");
3207d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax), %xmm3");
3208d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
3209d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
3210d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
3211d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
3212d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax), %xmm0");
3213d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ebp), %xmm0");
3214d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
3215d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
3216d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
3217d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
3218d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
3219d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
3220d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
3221d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
3222d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
3223d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
3224d8b167f9SMatt Fleming 
3225d8b167f9SMatt Fleming 	/* sha1msg1 xmm2/m128, xmm1 */
3226d8b167f9SMatt Fleming 
3227d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm1, %xmm0");
3228d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm2");
3229d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax), %xmm0");
3230d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (0x12345678), %xmm0");
3231d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax), %xmm3");
3232d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
3233d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
3234d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
3235d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
3236d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax), %xmm0");
3237d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ebp), %xmm0");
3238d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
3239d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
3240d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
3241d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
3242d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
3243d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
3244d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
3245d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
3246d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
3247d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
3248d8b167f9SMatt Fleming 
3249d8b167f9SMatt Fleming 	/* sha1msg2 xmm2/m128, xmm1 */
3250d8b167f9SMatt Fleming 
3251d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm1, %xmm0");
3252d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm2");
3253d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax), %xmm0");
3254d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (0x12345678), %xmm0");
3255d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax), %xmm3");
3256d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
3257d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
3258d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
3259d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
3260d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax), %xmm0");
3261d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ebp), %xmm0");
3262d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
3263d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
3264d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
3265d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
3266d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
3267d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
3268d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
3269d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
3270d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
3271d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
3272d8b167f9SMatt Fleming 
3273d8b167f9SMatt Fleming 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
3274d8b167f9SMatt Fleming 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
3275d8b167f9SMatt Fleming 
3276d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm4, %xmm1");
3277d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm2");
3278d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax), %xmm1");
3279d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
3280d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax), %xmm3");
3281d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
3282d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
3283d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
3284d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
3285d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax), %xmm1");
3286d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
3287d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
3288d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
3289d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
3290d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
3291d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
3292d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
3293d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
3294d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
3295d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
3296d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
3297d8b167f9SMatt Fleming 
3298d8b167f9SMatt Fleming 	/* sha256msg1 xmm2/m128, xmm1 */
3299d8b167f9SMatt Fleming 
3300d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm1, %xmm0");
3301d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm2");
3302d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax), %xmm0");
3303d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (0x12345678), %xmm0");
3304d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax), %xmm3");
3305d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
3306d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
3307d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
3308d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
3309d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax), %xmm0");
3310d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ebp), %xmm0");
3311d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
3312d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
3313d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
3314d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
3315d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
3316d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
3317d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
3318d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
3319d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
3320d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
3321d8b167f9SMatt Fleming 
3322d8b167f9SMatt Fleming 	/* sha256msg2 xmm2/m128, xmm1 */
3323d8b167f9SMatt Fleming 
3324d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm1, %xmm0");
3325d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm2");
3326d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax), %xmm0");
3327d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (0x12345678), %xmm0");
3328d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax), %xmm3");
3329d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
3330d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
3331d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
3332d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
3333d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax), %xmm0");
3334d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ebp), %xmm0");
3335d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
3336d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
3337d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
3338d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
3339d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
3340d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
3341d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
3342d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
3343d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
3344d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
3345d8b167f9SMatt Fleming 
3346d8b167f9SMatt Fleming 	/* clflushopt m8 */
3347d8b167f9SMatt Fleming 
3348d8b167f9SMatt Fleming 	asm volatile("clflushopt (%eax)");
3349d8b167f9SMatt Fleming 	asm volatile("clflushopt (0x12345678)");
3350d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
3351d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clflushopt */
3352d8b167f9SMatt Fleming 	asm volatile("clflush (%eax)");
3353d8b167f9SMatt Fleming 	asm volatile("sfence");
3354d8b167f9SMatt Fleming 
3355d8b167f9SMatt Fleming 	/* clwb m8 */
3356d8b167f9SMatt Fleming 
3357d8b167f9SMatt Fleming 	asm volatile("clwb (%eax)");
3358d8b167f9SMatt Fleming 	asm volatile("clwb (0x12345678)");
3359d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%eax,%ecx,8)");
3360d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clwb */
3361d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%eax)");
3362d8b167f9SMatt Fleming 	asm volatile("mfence");
3363d8b167f9SMatt Fleming 
33641e5f0154SAdrian Hunter 	/* cldemote m8 */
33651e5f0154SAdrian Hunter 
33661e5f0154SAdrian Hunter 	asm volatile("cldemote (%eax)");
33671e5f0154SAdrian Hunter 	asm volatile("cldemote (0x12345678)");
33681e5f0154SAdrian Hunter 	asm volatile("cldemote 0x12345678(%eax,%ecx,8)");
33691e5f0154SAdrian Hunter 
3370d8b167f9SMatt Fleming 	/* xsavec mem */
3371d8b167f9SMatt Fleming 
3372d8b167f9SMatt Fleming 	asm volatile("xsavec (%eax)");
3373d8b167f9SMatt Fleming 	asm volatile("xsavec (0x12345678)");
3374d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
3375d8b167f9SMatt Fleming 
3376d8b167f9SMatt Fleming 	/* xsaves mem */
3377d8b167f9SMatt Fleming 
3378d8b167f9SMatt Fleming 	asm volatile("xsaves (%eax)");
3379d8b167f9SMatt Fleming 	asm volatile("xsaves (0x12345678)");
3380d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
3381d8b167f9SMatt Fleming 
3382d8b167f9SMatt Fleming 	/* xrstors mem */
3383d8b167f9SMatt Fleming 
3384d8b167f9SMatt Fleming 	asm volatile("xrstors (%eax)");
3385d8b167f9SMatt Fleming 	asm volatile("xrstors (0x12345678)");
3386d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
3387d8b167f9SMatt Fleming 
3388d5b1a5f6SAdrian Hunter 	/* ptwrite */
3389d5b1a5f6SAdrian Hunter 
3390d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%eax)");
3391d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (0x12345678)");
3392d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
3393d5b1a5f6SAdrian Hunter 
3394d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%eax)");
3395d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (0x12345678)");
3396d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
3397d5b1a5f6SAdrian Hunter 
33981e5f0154SAdrian Hunter 	/* tpause */
33991e5f0154SAdrian Hunter 
34001e5f0154SAdrian Hunter 	asm volatile("tpause %ebx");
34011e5f0154SAdrian Hunter 
34021e5f0154SAdrian Hunter 	/* umonitor */
34031e5f0154SAdrian Hunter 
34041e5f0154SAdrian Hunter 	asm volatile("umonitor %ax");
34051e5f0154SAdrian Hunter 	asm volatile("umonitor %eax");
34061e5f0154SAdrian Hunter 
34071e5f0154SAdrian Hunter 	/* umwait */
34081e5f0154SAdrian Hunter 
34091e5f0154SAdrian Hunter 	asm volatile("umwait %eax");
34101e5f0154SAdrian Hunter 
34111e5f0154SAdrian Hunter 	/* movdiri */
34121e5f0154SAdrian Hunter 
34131e5f0154SAdrian Hunter 	asm volatile("movdiri %eax,(%ebx)");
34141e5f0154SAdrian Hunter 	asm volatile("movdiri %ecx,0x12345678(%eax)");
34151e5f0154SAdrian Hunter 
34161e5f0154SAdrian Hunter 	/* movdir64b */
34171e5f0154SAdrian Hunter 
34181e5f0154SAdrian Hunter 	asm volatile("movdir64b (%eax),%ebx");
34191e5f0154SAdrian Hunter 	asm volatile("movdir64b 0x12345678(%eax),%ecx");
34201e5f0154SAdrian Hunter 	asm volatile("movdir64b (%si),%bx");
34211e5f0154SAdrian Hunter 	asm volatile("movdir64b 0x1234(%si),%cx");
34221e5f0154SAdrian Hunter 
34231e5f0154SAdrian Hunter 	/* enqcmd */
34241e5f0154SAdrian Hunter 
34251e5f0154SAdrian Hunter 	asm volatile("enqcmd (%eax),%ebx");
34261e5f0154SAdrian Hunter 	asm volatile("enqcmd 0x12345678(%eax),%ecx");
34271e5f0154SAdrian Hunter 	asm volatile("enqcmd (%si),%bx");
34281e5f0154SAdrian Hunter 	asm volatile("enqcmd 0x1234(%si),%cx");
34291e5f0154SAdrian Hunter 
34301e5f0154SAdrian Hunter 	/* enqcmds */
34311e5f0154SAdrian Hunter 
34321e5f0154SAdrian Hunter 	asm volatile("enqcmds (%eax),%ebx");
34331e5f0154SAdrian Hunter 	asm volatile("enqcmds 0x12345678(%eax),%ecx");
34341e5f0154SAdrian Hunter 	asm volatile("enqcmds (%si),%bx");
34351e5f0154SAdrian Hunter 	asm volatile("enqcmds 0x1234(%si),%cx");
34361e5f0154SAdrian Hunter 
3437d8b167f9SMatt Fleming #endif /* #ifndef __x86_64__ */
3438d8b167f9SMatt Fleming 
34391e5f0154SAdrian Hunter 	/* SGX */
34401e5f0154SAdrian Hunter 
34411e5f0154SAdrian Hunter 	asm volatile("encls");
34421e5f0154SAdrian Hunter 	asm volatile("enclu");
34431e5f0154SAdrian Hunter 	asm volatile("enclv");
34441e5f0154SAdrian Hunter 
34451e5f0154SAdrian Hunter 	/* pconfig */
34461e5f0154SAdrian Hunter 
34471e5f0154SAdrian Hunter 	asm volatile("pconfig");
34481e5f0154SAdrian Hunter 
34491e5f0154SAdrian Hunter 	/* wbnoinvd */
34501e5f0154SAdrian Hunter 
34511e5f0154SAdrian Hunter 	asm volatile("wbnoinvd");
34521e5f0154SAdrian Hunter 
3453d8b167f9SMatt Fleming 	/* Following line is a marker for the awk script - do not change */
3454d8b167f9SMatt Fleming 	asm volatile("rdtsc"); /* Stop here */
3455d8b167f9SMatt Fleming 
3456d8b167f9SMatt Fleming 	return 0;
3457d8b167f9SMatt Fleming }
3458