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 
17741032f326SAdrian Hunter 	/* incsspd/q */
17751032f326SAdrian Hunter 
17761032f326SAdrian Hunter 	asm volatile("incsspd %eax");
17771032f326SAdrian Hunter 	asm volatile("incsspd %r8d");
17781032f326SAdrian Hunter 	asm volatile("incsspq %rax");
17791032f326SAdrian Hunter 	asm volatile("incsspq %r8");
17801032f326SAdrian Hunter 	/* Also check instructions in the same group encoding as incsspd/q */
17811032f326SAdrian Hunter 	asm volatile("xrstor (%rax)");
17821032f326SAdrian Hunter 	asm volatile("xrstor (%r8)");
17831032f326SAdrian Hunter 	asm volatile("xrstor (0x12345678)");
17841032f326SAdrian Hunter 	asm volatile("xrstor 0x12345678(%rax,%rcx,8)");
17851032f326SAdrian Hunter 	asm volatile("xrstor 0x12345678(%r8,%rcx,8)");
17861032f326SAdrian Hunter 	asm volatile("lfence");
17871032f326SAdrian Hunter 
17881032f326SAdrian Hunter 	/* rdsspd/q */
17891032f326SAdrian Hunter 
17901032f326SAdrian Hunter 	asm volatile("rdsspd %eax");
17911032f326SAdrian Hunter 	asm volatile("rdsspd %r8d");
17921032f326SAdrian Hunter 	asm volatile("rdsspq %rax");
17931032f326SAdrian Hunter 	asm volatile("rdsspq %r8");
17941032f326SAdrian Hunter 
17951032f326SAdrian Hunter 	/* saveprevssp */
17961032f326SAdrian Hunter 
17971032f326SAdrian Hunter 	asm volatile("saveprevssp");
17981032f326SAdrian Hunter 
17991032f326SAdrian Hunter 	/* rstorssp */
18001032f326SAdrian Hunter 
18011032f326SAdrian Hunter 	asm volatile("rstorssp (%rax)");
18021032f326SAdrian Hunter 	asm volatile("rstorssp (%r8)");
18031032f326SAdrian Hunter 	asm volatile("rstorssp (0x12345678)");
18041032f326SAdrian Hunter 	asm volatile("rstorssp 0x12345678(%rax,%rcx,8)");
18051032f326SAdrian Hunter 	asm volatile("rstorssp 0x12345678(%r8,%rcx,8)");
18061032f326SAdrian Hunter 
18071032f326SAdrian Hunter 	/* wrssd/q */
18081032f326SAdrian Hunter 
18091032f326SAdrian Hunter 	asm volatile("wrssd %ecx,(%rax)");
18101032f326SAdrian Hunter 	asm volatile("wrssd %edx,(%r8)");
18111032f326SAdrian Hunter 	asm volatile("wrssd %edx,(0x12345678)");
18121032f326SAdrian Hunter 	asm volatile("wrssd %edx,0x12345678(%rax,%rcx,8)");
18131032f326SAdrian Hunter 	asm volatile("wrssd %edx,0x12345678(%r8,%rcx,8)");
18141032f326SAdrian Hunter 	asm volatile("wrssq %rcx,(%rax)");
18151032f326SAdrian Hunter 	asm volatile("wrssq %rdx,(%r8)");
18161032f326SAdrian Hunter 	asm volatile("wrssq %rdx,(0x12345678)");
18171032f326SAdrian Hunter 	asm volatile("wrssq %rdx,0x12345678(%rax,%rcx,8)");
18181032f326SAdrian Hunter 	asm volatile("wrssq %rdx,0x12345678(%r8,%rcx,8)");
18191032f326SAdrian Hunter 
18201032f326SAdrian Hunter 	/* wrussd/q */
18211032f326SAdrian Hunter 
18221032f326SAdrian Hunter 	asm volatile("wrussd %ecx,(%rax)");
18231032f326SAdrian Hunter 	asm volatile("wrussd %edx,(%r8)");
18241032f326SAdrian Hunter 	asm volatile("wrussd %edx,(0x12345678)");
18251032f326SAdrian Hunter 	asm volatile("wrussd %edx,0x12345678(%rax,%rcx,8)");
18261032f326SAdrian Hunter 	asm volatile("wrussd %edx,0x12345678(%r8,%rcx,8)");
18271032f326SAdrian Hunter 	asm volatile("wrussq %rcx,(%rax)");
18281032f326SAdrian Hunter 	asm volatile("wrussq %rdx,(%r8)");
18291032f326SAdrian Hunter 	asm volatile("wrussq %rdx,(0x12345678)");
18301032f326SAdrian Hunter 	asm volatile("wrussq %rdx,0x12345678(%rax,%rcx,8)");
18311032f326SAdrian Hunter 	asm volatile("wrussq %rdx,0x12345678(%r8,%rcx,8)");
18321032f326SAdrian Hunter 
18331032f326SAdrian Hunter 	/* setssbsy */
18341032f326SAdrian Hunter 
18351032f326SAdrian Hunter 	asm volatile("setssbsy");
18361032f326SAdrian Hunter 	/* Also check instructions in the same group encoding as setssbsy */
18371032f326SAdrian Hunter 	asm volatile("rdpkru");
18381032f326SAdrian Hunter 	asm volatile("wrpkru");
18391032f326SAdrian Hunter 
18401032f326SAdrian Hunter 	/* clrssbsy */
18411032f326SAdrian Hunter 
18421032f326SAdrian Hunter 	asm volatile("clrssbsy (%rax)");
18431032f326SAdrian Hunter 	asm volatile("clrssbsy (%r8)");
18441032f326SAdrian Hunter 	asm volatile("clrssbsy (0x12345678)");
18451032f326SAdrian Hunter 	asm volatile("clrssbsy 0x12345678(%rax,%rcx,8)");
18461032f326SAdrian Hunter 	asm volatile("clrssbsy 0x12345678(%r8,%rcx,8)");
18471032f326SAdrian Hunter 
18481032f326SAdrian Hunter 	/* endbr32/64 */
18491032f326SAdrian Hunter 
18501032f326SAdrian Hunter 	asm volatile("endbr32");
18511032f326SAdrian Hunter 	asm volatile("endbr64");
18521032f326SAdrian Hunter 
18531032f326SAdrian Hunter 	/* call with/without notrack prefix */
18541032f326SAdrian Hunter 
18551032f326SAdrian Hunter 	asm volatile("callq *%rax");				/* Expecting: call indirect 0 */
18561032f326SAdrian Hunter 	asm volatile("callq *(%rax)");				/* Expecting: call indirect 0 */
18571032f326SAdrian Hunter 	asm volatile("callq *(%r8)");				/* Expecting: call indirect 0 */
18581032f326SAdrian Hunter 	asm volatile("callq *(0x12345678)");			/* Expecting: call indirect 0 */
18591032f326SAdrian Hunter 	asm volatile("callq *0x12345678(%rax,%rcx,8)");		/* Expecting: call indirect 0 */
18601032f326SAdrian Hunter 	asm volatile("callq *0x12345678(%r8,%rcx,8)");		/* Expecting: call indirect 0 */
18611032f326SAdrian Hunter 
18621032f326SAdrian Hunter 	asm volatile("bnd callq *%rax");			/* Expecting: call indirect 0 */
18631032f326SAdrian Hunter 	asm volatile("bnd callq *(%rax)");			/* Expecting: call indirect 0 */
18641032f326SAdrian Hunter 	asm volatile("bnd callq *(%r8)");			/* Expecting: call indirect 0 */
18651032f326SAdrian Hunter 	asm volatile("bnd callq *(0x12345678)");		/* Expecting: call indirect 0 */
18661032f326SAdrian Hunter 	asm volatile("bnd callq *0x12345678(%rax,%rcx,8)");	/* Expecting: call indirect 0 */
18671032f326SAdrian Hunter 	asm volatile("bnd callq *0x12345678(%r8,%rcx,8)");	/* Expecting: call indirect 0 */
18681032f326SAdrian Hunter 
18691032f326SAdrian Hunter 	asm volatile("notrack callq *%rax");			/* Expecting: call indirect 0 */
18701032f326SAdrian Hunter 	asm volatile("notrack callq *(%rax)");			/* Expecting: call indirect 0 */
18711032f326SAdrian Hunter 	asm volatile("notrack callq *(%r8)");			/* Expecting: call indirect 0 */
18721032f326SAdrian Hunter 	asm volatile("notrack callq *(0x12345678)");		/* Expecting: call indirect 0 */
18731032f326SAdrian Hunter 	asm volatile("notrack callq *0x12345678(%rax,%rcx,8)");	/* Expecting: call indirect 0 */
18741032f326SAdrian Hunter 	asm volatile("notrack callq *0x12345678(%r8,%rcx,8)");	/* Expecting: call indirect 0 */
18751032f326SAdrian Hunter 
18761032f326SAdrian Hunter 	asm volatile("notrack bnd callq *%rax");		/* Expecting: call indirect 0 */
18771032f326SAdrian Hunter 	asm volatile("notrack bnd callq *(%rax)");		/* Expecting: call indirect 0 */
18781032f326SAdrian Hunter 	asm volatile("notrack bnd callq *(%r8)");		/* Expecting: call indirect 0 */
18791032f326SAdrian Hunter 	asm volatile("notrack bnd callq *(0x12345678)");	/* Expecting: call indirect 0 */
18801032f326SAdrian Hunter 	asm volatile("notrack bnd callq *0x12345678(%rax,%rcx,8)");	/* Expecting: call indirect 0 */
18811032f326SAdrian Hunter 	asm volatile("notrack bnd callq *0x12345678(%r8,%rcx,8)");	/* Expecting: call indirect 0 */
18821032f326SAdrian Hunter 
18831032f326SAdrian Hunter 	/* jmp with/without notrack prefix */
18841032f326SAdrian Hunter 
18851032f326SAdrian Hunter 	asm volatile("jmpq *%rax");				/* Expecting: jmp indirect 0 */
18861032f326SAdrian Hunter 	asm volatile("jmpq *(%rax)");				/* Expecting: jmp indirect 0 */
18871032f326SAdrian Hunter 	asm volatile("jmpq *(%r8)");				/* Expecting: jmp indirect 0 */
18881032f326SAdrian Hunter 	asm volatile("jmpq *(0x12345678)");			/* Expecting: jmp indirect 0 */
18891032f326SAdrian Hunter 	asm volatile("jmpq *0x12345678(%rax,%rcx,8)");		/* Expecting: jmp indirect 0 */
18901032f326SAdrian Hunter 	asm volatile("jmpq *0x12345678(%r8,%rcx,8)");		/* Expecting: jmp indirect 0 */
18911032f326SAdrian Hunter 
18921032f326SAdrian Hunter 	asm volatile("bnd jmpq *%rax");				/* Expecting: jmp indirect 0 */
18931032f326SAdrian Hunter 	asm volatile("bnd jmpq *(%rax)");			/* Expecting: jmp indirect 0 */
18941032f326SAdrian Hunter 	asm volatile("bnd jmpq *(%r8)");			/* Expecting: jmp indirect 0 */
18951032f326SAdrian Hunter 	asm volatile("bnd jmpq *(0x12345678)");			/* Expecting: jmp indirect 0 */
18961032f326SAdrian Hunter 	asm volatile("bnd jmpq *0x12345678(%rax,%rcx,8)");	/* Expecting: jmp indirect 0 */
18971032f326SAdrian Hunter 	asm volatile("bnd jmpq *0x12345678(%r8,%rcx,8)");	/* Expecting: jmp indirect 0 */
18981032f326SAdrian Hunter 
18991032f326SAdrian Hunter 	asm volatile("notrack jmpq *%rax");			/* Expecting: jmp indirect 0 */
19001032f326SAdrian Hunter 	asm volatile("notrack jmpq *(%rax)");			/* Expecting: jmp indirect 0 */
19011032f326SAdrian Hunter 	asm volatile("notrack jmpq *(%r8)");			/* Expecting: jmp indirect 0 */
19021032f326SAdrian Hunter 	asm volatile("notrack jmpq *(0x12345678)");		/* Expecting: jmp indirect 0 */
19031032f326SAdrian Hunter 	asm volatile("notrack jmpq *0x12345678(%rax,%rcx,8)");	/* Expecting: jmp indirect 0 */
19041032f326SAdrian Hunter 	asm volatile("notrack jmpq *0x12345678(%r8,%rcx,8)");	/* Expecting: jmp indirect 0 */
19051032f326SAdrian Hunter 
19061032f326SAdrian Hunter 	asm volatile("notrack bnd jmpq *%rax");			/* Expecting: jmp indirect 0 */
19071032f326SAdrian Hunter 	asm volatile("notrack bnd jmpq *(%rax)");		/* Expecting: jmp indirect 0 */
19081032f326SAdrian Hunter 	asm volatile("notrack bnd jmpq *(%r8)");		/* Expecting: jmp indirect 0 */
19091032f326SAdrian Hunter 	asm volatile("notrack bnd jmpq *(0x12345678)");		/* Expecting: jmp indirect 0 */
19101032f326SAdrian Hunter 	asm volatile("notrack bnd jmpq *0x12345678(%rax,%rcx,8)");	/* Expecting: jmp indirect 0 */
19111032f326SAdrian Hunter 	asm volatile("notrack bnd jmpq *0x12345678(%r8,%rcx,8)");	/* Expecting: jmp indirect 0 */
19121032f326SAdrian Hunter 
19134810dd2cSAdrian Hunter 	/* AMX */
19144810dd2cSAdrian Hunter 
19154810dd2cSAdrian Hunter 	asm volatile("ldtilecfg (%rax,%rcx,8)");
19164810dd2cSAdrian Hunter 	asm volatile("ldtilecfg (%r8,%rcx,8)");
19174810dd2cSAdrian Hunter 	asm volatile("sttilecfg (%rax,%rcx,8)");
19184810dd2cSAdrian Hunter 	asm volatile("sttilecfg (%r8,%rcx,8)");
19194810dd2cSAdrian Hunter 	asm volatile("tdpbf16ps %tmm0, %tmm1, %tmm2");
19204810dd2cSAdrian Hunter 	asm volatile("tdpbssd %tmm0, %tmm1, %tmm2");
19214810dd2cSAdrian Hunter 	asm volatile("tdpbsud %tmm0, %tmm1, %tmm2");
19224810dd2cSAdrian Hunter 	asm volatile("tdpbusd %tmm0, %tmm1, %tmm2");
19234810dd2cSAdrian Hunter 	asm volatile("tdpbuud %tmm0, %tmm1, %tmm2");
19244810dd2cSAdrian Hunter 	asm volatile("tileloadd (%rax,%rcx,8), %tmm1");
19254810dd2cSAdrian Hunter 	asm volatile("tileloadd (%r8,%rcx,8), %tmm2");
19264810dd2cSAdrian Hunter 	asm volatile("tileloaddt1 (%rax,%rcx,8), %tmm1");
19274810dd2cSAdrian Hunter 	asm volatile("tileloaddt1 (%r8,%rcx,8), %tmm2");
19284810dd2cSAdrian Hunter 	asm volatile("tilerelease");
19294810dd2cSAdrian Hunter 	asm volatile("tilestored %tmm1, (%rax,%rcx,8)");
19304810dd2cSAdrian Hunter 	asm volatile("tilestored %tmm2, (%r8,%rcx,8)");
19314810dd2cSAdrian Hunter 	asm volatile("tilezero %tmm0");
19324810dd2cSAdrian Hunter 	asm volatile("tilezero %tmm7");
19334810dd2cSAdrian Hunter 
1934*a6ea1142SAdrian Hunter 	/* User Interrupt */
1935*a6ea1142SAdrian Hunter 
1936*a6ea1142SAdrian Hunter 	asm volatile("clui");
1937*a6ea1142SAdrian Hunter 	asm volatile("senduipi %rax");
1938*a6ea1142SAdrian Hunter 	asm volatile("senduipi %r8");
1939*a6ea1142SAdrian Hunter 	asm volatile("stui");
1940*a6ea1142SAdrian Hunter 	asm volatile("testui");
1941*a6ea1142SAdrian Hunter 	asm volatile("uiret");
1942*a6ea1142SAdrian Hunter 
1943d8b167f9SMatt Fleming #else  /* #ifdef __x86_64__ */
1944d8b167f9SMatt Fleming 
19456c4d0b41SAdrian Hunter 	/* bound r32, mem (same op code as EVEX prefix) */
19466c4d0b41SAdrian Hunter 
19476c4d0b41SAdrian Hunter 	asm volatile("bound %eax, 0x12345678(%ecx)");
19486c4d0b41SAdrian Hunter 	asm volatile("bound %ecx, 0x12345678(%eax)");
19496c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax)");
19506c4d0b41SAdrian Hunter 	asm volatile("bound %ebx, 0x12345678(%eax)");
19516c4d0b41SAdrian Hunter 	asm volatile("bound %esp, 0x12345678(%eax)");
19526c4d0b41SAdrian Hunter 	asm volatile("bound %ebp, 0x12345678(%eax)");
19536c4d0b41SAdrian Hunter 	asm volatile("bound %esi, 0x12345678(%eax)");
19546c4d0b41SAdrian Hunter 	asm volatile("bound %edi, 0x12345678(%eax)");
19556c4d0b41SAdrian Hunter 	asm volatile("bound %ecx, (%eax)");
19566c4d0b41SAdrian Hunter 	asm volatile("bound %eax, (0x12345678)");
19576c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%ecx,%eax,1)");
19586c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(,%eax,1)");
19596c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%eax,%ecx,1)");
19606c4d0b41SAdrian Hunter 	asm volatile("bound %edx, (%eax,%ecx,8)");
19616c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax)");
19626c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ebp)");
19636c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ecx,%eax,1)");
19646c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%ebp,%eax,1)");
19656c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax,%ecx,1)");
19666c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12(%eax,%ecx,8)");
19676c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax)");
19686c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ebp)");
19696c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ecx,%eax,1)");
19706c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%ebp,%eax,1)");
19716c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax,%ecx,1)");
19726c4d0b41SAdrian Hunter 	asm volatile("bound %edx, 0x12345678(%eax,%ecx,8)");
19736c4d0b41SAdrian Hunter 
19746c4d0b41SAdrian Hunter 	/* bound r16, mem (same op code as EVEX prefix) */
19756c4d0b41SAdrian Hunter 
19766c4d0b41SAdrian Hunter 	asm volatile("bound %ax, 0x12345678(%ecx)");
19776c4d0b41SAdrian Hunter 	asm volatile("bound %cx, 0x12345678(%eax)");
19786c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax)");
19796c4d0b41SAdrian Hunter 	asm volatile("bound %bx, 0x12345678(%eax)");
19806c4d0b41SAdrian Hunter 	asm volatile("bound %sp, 0x12345678(%eax)");
19816c4d0b41SAdrian Hunter 	asm volatile("bound %bp, 0x12345678(%eax)");
19826c4d0b41SAdrian Hunter 	asm volatile("bound %si, 0x12345678(%eax)");
19836c4d0b41SAdrian Hunter 	asm volatile("bound %di, 0x12345678(%eax)");
19846c4d0b41SAdrian Hunter 	asm volatile("bound %cx, (%eax)");
19856c4d0b41SAdrian Hunter 	asm volatile("bound %ax, (0x12345678)");
19866c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%ecx,%eax,1)");
19876c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(,%eax,1)");
19886c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%eax,%ecx,1)");
19896c4d0b41SAdrian Hunter 	asm volatile("bound %dx, (%eax,%ecx,8)");
19906c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax)");
19916c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ebp)");
19926c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ecx,%eax,1)");
19936c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%ebp,%eax,1)");
19946c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax,%ecx,1)");
19956c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12(%eax,%ecx,8)");
19966c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax)");
19976c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ebp)");
19986c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ecx,%eax,1)");
19996c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%ebp,%eax,1)");
20006c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax,%ecx,1)");
20016c4d0b41SAdrian Hunter 	asm volatile("bound %dx, 0x12345678(%eax,%ecx,8)");
20026c4d0b41SAdrian Hunter 
20036c4d0b41SAdrian Hunter 	/* AVX-512: Instructions with the same op codes as Mask Instructions  */
20046c4d0b41SAdrian Hunter 
20056c4d0b41SAdrian Hunter 	asm volatile("cmovno %eax,%ebx");
20066c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%eax),%ecx");
20076c4d0b41SAdrian Hunter 	asm volatile("cmovno 0x12345678(%eax),%cx");
20086c4d0b41SAdrian Hunter 
20096c4d0b41SAdrian Hunter 	asm volatile("cmove  %eax,%ebx");
20106c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%eax),%ecx");
20116c4d0b41SAdrian Hunter 	asm volatile("cmove 0x12345678(%eax),%cx");
20126c4d0b41SAdrian Hunter 
20136c4d0b41SAdrian Hunter 	asm volatile("seto    0x12345678(%eax)");
20146c4d0b41SAdrian Hunter 	asm volatile("setno   0x12345678(%eax)");
20156c4d0b41SAdrian Hunter 	asm volatile("setb    0x12345678(%eax)");
20166c4d0b41SAdrian Hunter 	asm volatile("setc    0x12345678(%eax)");
20176c4d0b41SAdrian Hunter 	asm volatile("setnae  0x12345678(%eax)");
20186c4d0b41SAdrian Hunter 	asm volatile("setae   0x12345678(%eax)");
20196c4d0b41SAdrian Hunter 	asm volatile("setnb   0x12345678(%eax)");
20206c4d0b41SAdrian Hunter 	asm volatile("setnc   0x12345678(%eax)");
20216c4d0b41SAdrian Hunter 	asm volatile("sets    0x12345678(%eax)");
20226c4d0b41SAdrian Hunter 	asm volatile("setns   0x12345678(%eax)");
20236c4d0b41SAdrian Hunter 
20246c4d0b41SAdrian Hunter 	/* AVX-512: Mask Instructions */
20256c4d0b41SAdrian Hunter 
20266c4d0b41SAdrian Hunter 	asm volatile("kandw  %k7,%k6,%k5");
20276c4d0b41SAdrian Hunter 	asm volatile("kandq  %k7,%k6,%k5");
20286c4d0b41SAdrian Hunter 	asm volatile("kandb  %k7,%k6,%k5");
20296c4d0b41SAdrian Hunter 	asm volatile("kandd  %k7,%k6,%k5");
20306c4d0b41SAdrian Hunter 
20316c4d0b41SAdrian Hunter 	asm volatile("kandnw  %k7,%k6,%k5");
20326c4d0b41SAdrian Hunter 	asm volatile("kandnq  %k7,%k6,%k5");
20336c4d0b41SAdrian Hunter 	asm volatile("kandnb  %k7,%k6,%k5");
20346c4d0b41SAdrian Hunter 	asm volatile("kandnd  %k7,%k6,%k5");
20356c4d0b41SAdrian Hunter 
20366c4d0b41SAdrian Hunter 	asm volatile("knotw  %k7,%k6");
20376c4d0b41SAdrian Hunter 	asm volatile("knotq  %k7,%k6");
20386c4d0b41SAdrian Hunter 	asm volatile("knotb  %k7,%k6");
20396c4d0b41SAdrian Hunter 	asm volatile("knotd  %k7,%k6");
20406c4d0b41SAdrian Hunter 
20416c4d0b41SAdrian Hunter 	asm volatile("korw  %k7,%k6,%k5");
20426c4d0b41SAdrian Hunter 	asm volatile("korq  %k7,%k6,%k5");
20436c4d0b41SAdrian Hunter 	asm volatile("korb  %k7,%k6,%k5");
20446c4d0b41SAdrian Hunter 	asm volatile("kord  %k7,%k6,%k5");
20456c4d0b41SAdrian Hunter 
20466c4d0b41SAdrian Hunter 	asm volatile("kxnorw  %k7,%k6,%k5");
20476c4d0b41SAdrian Hunter 	asm volatile("kxnorq  %k7,%k6,%k5");
20486c4d0b41SAdrian Hunter 	asm volatile("kxnorb  %k7,%k6,%k5");
20496c4d0b41SAdrian Hunter 	asm volatile("kxnord  %k7,%k6,%k5");
20506c4d0b41SAdrian Hunter 
20516c4d0b41SAdrian Hunter 	asm volatile("kxorw  %k7,%k6,%k5");
20526c4d0b41SAdrian Hunter 	asm volatile("kxorq  %k7,%k6,%k5");
20536c4d0b41SAdrian Hunter 	asm volatile("kxorb  %k7,%k6,%k5");
20546c4d0b41SAdrian Hunter 	asm volatile("kxord  %k7,%k6,%k5");
20556c4d0b41SAdrian Hunter 
20566c4d0b41SAdrian Hunter 	asm volatile("kaddw  %k7,%k6,%k5");
20576c4d0b41SAdrian Hunter 	asm volatile("kaddq  %k7,%k6,%k5");
20586c4d0b41SAdrian Hunter 	asm volatile("kaddb  %k7,%k6,%k5");
20596c4d0b41SAdrian Hunter 	asm volatile("kaddd  %k7,%k6,%k5");
20606c4d0b41SAdrian Hunter 
20616c4d0b41SAdrian Hunter 	asm volatile("kunpckbw %k7,%k6,%k5");
20626c4d0b41SAdrian Hunter 	asm volatile("kunpckwd %k7,%k6,%k5");
20636c4d0b41SAdrian Hunter 	asm volatile("kunpckdq %k7,%k6,%k5");
20646c4d0b41SAdrian Hunter 
20656c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k6,%k5");
20666c4d0b41SAdrian Hunter 	asm volatile("kmovw  (%ecx),%k5");
20676c4d0b41SAdrian Hunter 	asm volatile("kmovw  0x123(%eax,%ecx,8),%k5");
20686c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,(%ecx)");
20696c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,0x123(%eax,%ecx,8)");
20706c4d0b41SAdrian Hunter 	asm volatile("kmovw  %eax,%k5");
20716c4d0b41SAdrian Hunter 	asm volatile("kmovw  %ebp,%k5");
20726c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%eax");
20736c4d0b41SAdrian Hunter 	asm volatile("kmovw  %k5,%ebp");
20746c4d0b41SAdrian Hunter 
20756c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k6,%k5");
20766c4d0b41SAdrian Hunter 	asm volatile("kmovq  (%ecx),%k5");
20776c4d0b41SAdrian Hunter 	asm volatile("kmovq  0x123(%eax,%ecx,8),%k5");
20786c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,(%ecx)");
20796c4d0b41SAdrian Hunter 	asm volatile("kmovq  %k5,0x123(%eax,%ecx,8)");
20806c4d0b41SAdrian Hunter 
20816c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k6,%k5");
20826c4d0b41SAdrian Hunter 	asm volatile("kmovb  (%ecx),%k5");
20836c4d0b41SAdrian Hunter 	asm volatile("kmovb  0x123(%eax,%ecx,8),%k5");
20846c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,(%ecx)");
20856c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,0x123(%eax,%ecx,8)");
20866c4d0b41SAdrian Hunter 	asm volatile("kmovb  %eax,%k5");
20876c4d0b41SAdrian Hunter 	asm volatile("kmovb  %ebp,%k5");
20886c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%eax");
20896c4d0b41SAdrian Hunter 	asm volatile("kmovb  %k5,%ebp");
20906c4d0b41SAdrian Hunter 
20916c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k6,%k5");
20926c4d0b41SAdrian Hunter 	asm volatile("kmovd  (%ecx),%k5");
20936c4d0b41SAdrian Hunter 	asm volatile("kmovd  0x123(%eax,%ecx,8),%k5");
20946c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,(%ecx)");
20956c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,0x123(%eax,%ecx,8)");
20966c4d0b41SAdrian Hunter 	asm volatile("kmovd  %eax,%k5");
20976c4d0b41SAdrian Hunter 	asm volatile("kmovd  %ebp,%k5");
20986c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%eax");
20996c4d0b41SAdrian Hunter 	asm volatile("kmovd  %k5,%ebp");
21006c4d0b41SAdrian Hunter 
21016c4d0b41SAdrian Hunter 	asm volatile("kortestw %k6,%k5");
21026c4d0b41SAdrian Hunter 	asm volatile("kortestq %k6,%k5");
21036c4d0b41SAdrian Hunter 	asm volatile("kortestb %k6,%k5");
21046c4d0b41SAdrian Hunter 	asm volatile("kortestd %k6,%k5");
21056c4d0b41SAdrian Hunter 
21066c4d0b41SAdrian Hunter 	asm volatile("ktestw %k6,%k5");
21076c4d0b41SAdrian Hunter 	asm volatile("ktestq %k6,%k5");
21086c4d0b41SAdrian Hunter 	asm volatile("ktestb %k6,%k5");
21096c4d0b41SAdrian Hunter 	asm volatile("ktestd %k6,%k5");
21106c4d0b41SAdrian Hunter 
21116c4d0b41SAdrian Hunter 	asm volatile("kshiftrw $0x12,%k6,%k5");
21126c4d0b41SAdrian Hunter 	asm volatile("kshiftrq $0x5b,%k6,%k5");
21136c4d0b41SAdrian Hunter 	asm volatile("kshiftlw $0x12,%k6,%k5");
21146c4d0b41SAdrian Hunter 	asm volatile("kshiftlq $0x5b,%k6,%k5");
21156c4d0b41SAdrian Hunter 
21166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 5b */
21176c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2ps %xmm5,%xmm6");
21186c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2ps %zmm5,%ymm6{%k7}");
21196c4d0b41SAdrian Hunter 	asm volatile("vcvtps2dq %xmm5,%xmm6");
21206c4d0b41SAdrian Hunter 	asm volatile("vcvttps2dq %xmm5,%xmm6");
21216c4d0b41SAdrian Hunter 
21226c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 6f */
21236c4d0b41SAdrian Hunter 
21246c4d0b41SAdrian Hunter 	asm volatile("movq   %mm0,%mm4");
21256c4d0b41SAdrian Hunter 	asm volatile("vmovdqa %ymm4,%ymm6");
21266c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32 %zmm5,%zmm6");
21276c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64 %zmm5,%zmm6");
21286c4d0b41SAdrian Hunter 	asm volatile("vmovdqu %ymm4,%ymm6");
21296c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32 %zmm5,%zmm6");
21306c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64 %zmm5,%zmm6");
21316c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8 %zmm5,%zmm6");
21326c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16 %zmm5,%zmm6");
21336c4d0b41SAdrian Hunter 
21346c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 78 */
21356c4d0b41SAdrian Hunter 
21366c4d0b41SAdrian Hunter 	asm volatile("vmread %eax,%ebx");
21376c4d0b41SAdrian Hunter 	asm volatile("vcvttps2udq %zmm5,%zmm6");
21386c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2udq %zmm5,%ymm6{%k7}");
21396c4d0b41SAdrian Hunter 	asm volatile("vcvttsd2usi %xmm6,%eax");
21406c4d0b41SAdrian Hunter 	asm volatile("vcvttss2usi %xmm6,%eax");
21416c4d0b41SAdrian Hunter 	asm volatile("vcvttps2uqq %ymm5,%zmm6{%k7}");
21426c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2uqq %zmm5,%zmm6");
21436c4d0b41SAdrian Hunter 
21446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 79 */
21456c4d0b41SAdrian Hunter 
21466c4d0b41SAdrian Hunter 	asm volatile("vmwrite %eax,%ebx");
21476c4d0b41SAdrian Hunter 	asm volatile("vcvtps2udq %zmm5,%zmm6");
21486c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2udq %zmm5,%ymm6{%k7}");
21496c4d0b41SAdrian Hunter 	asm volatile("vcvtsd2usi %xmm6,%eax");
21506c4d0b41SAdrian Hunter 	asm volatile("vcvtss2usi %xmm6,%eax");
21516c4d0b41SAdrian Hunter 	asm volatile("vcvtps2uqq %ymm5,%zmm6{%k7}");
21526c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2uqq %zmm5,%zmm6");
21536c4d0b41SAdrian Hunter 
21546c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7a */
21556c4d0b41SAdrian Hunter 
21566c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2pd %ymm5,%zmm6{%k7}");
21576c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2pd %zmm5,%zmm6");
21586c4d0b41SAdrian Hunter 	asm volatile("vcvtudq2ps %zmm5,%zmm6");
21596c4d0b41SAdrian Hunter 	asm volatile("vcvtuqq2ps %zmm5,%ymm6{%k7}");
21606c4d0b41SAdrian Hunter 	asm volatile("vcvttps2qq %ymm5,%zmm6{%k7}");
21616c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2qq %zmm5,%zmm6");
21626c4d0b41SAdrian Hunter 
21636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7b */
21646c4d0b41SAdrian Hunter 
21656c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2sd %eax,%xmm5,%xmm6");
21666c4d0b41SAdrian Hunter 	asm volatile("vcvtusi2ss %eax,%xmm5,%xmm6");
21676c4d0b41SAdrian Hunter 	asm volatile("vcvtps2qq %ymm5,%zmm6{%k7}");
21686c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2qq %zmm5,%zmm6");
21696c4d0b41SAdrian Hunter 
21706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 7f */
21716c4d0b41SAdrian Hunter 
21726c4d0b41SAdrian Hunter 	asm volatile("movq.s  %mm0,%mm4");
21736c4d0b41SAdrian Hunter 	asm volatile("vmovdqa.s %ymm5,%ymm6");
21746c4d0b41SAdrian Hunter 	asm volatile("vmovdqa32.s %zmm5,%zmm6");
21756c4d0b41SAdrian Hunter 	asm volatile("vmovdqa64.s %zmm5,%zmm6");
21766c4d0b41SAdrian Hunter 	asm volatile("vmovdqu.s %ymm5,%ymm6");
21776c4d0b41SAdrian Hunter 	asm volatile("vmovdqu32.s %zmm5,%zmm6");
21786c4d0b41SAdrian Hunter 	asm volatile("vmovdqu64.s %zmm5,%zmm6");
21796c4d0b41SAdrian Hunter 	asm volatile("vmovdqu8.s %zmm5,%zmm6");
21806c4d0b41SAdrian Hunter 	asm volatile("vmovdqu16.s %zmm5,%zmm6");
21816c4d0b41SAdrian Hunter 
21826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f db */
21836c4d0b41SAdrian Hunter 
21846c4d0b41SAdrian Hunter 	asm volatile("pand  %mm1,%mm2");
21856c4d0b41SAdrian Hunter 	asm volatile("pand  %xmm1,%xmm2");
21866c4d0b41SAdrian Hunter 	asm volatile("vpand  %ymm4,%ymm6,%ymm2");
21876c4d0b41SAdrian Hunter 	asm volatile("vpandd %zmm4,%zmm5,%zmm6");
21886c4d0b41SAdrian Hunter 	asm volatile("vpandq %zmm4,%zmm5,%zmm6");
21896c4d0b41SAdrian Hunter 
21906c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f df */
21916c4d0b41SAdrian Hunter 
21926c4d0b41SAdrian Hunter 	asm volatile("pandn  %mm1,%mm2");
21936c4d0b41SAdrian Hunter 	asm volatile("pandn  %xmm1,%xmm2");
21946c4d0b41SAdrian Hunter 	asm volatile("vpandn %ymm4,%ymm6,%ymm2");
21956c4d0b41SAdrian Hunter 	asm volatile("vpandnd %zmm4,%zmm5,%zmm6");
21966c4d0b41SAdrian Hunter 	asm volatile("vpandnq %zmm4,%zmm5,%zmm6");
21976c4d0b41SAdrian Hunter 
21986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f e6 */
21996c4d0b41SAdrian Hunter 
22006c4d0b41SAdrian Hunter 	asm volatile("vcvttpd2dq %xmm1,%xmm2");
22016c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %xmm5,%xmm6");
22026c4d0b41SAdrian Hunter 	asm volatile("vcvtdq2pd %ymm5,%zmm6{%k7}");
22036c4d0b41SAdrian Hunter 	asm volatile("vcvtqq2pd %zmm5,%zmm6");
22046c4d0b41SAdrian Hunter 	asm volatile("vcvtpd2dq %xmm1,%xmm2");
22056c4d0b41SAdrian Hunter 
22066c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f eb */
22076c4d0b41SAdrian Hunter 
22086c4d0b41SAdrian Hunter 	asm volatile("por   %mm4,%mm6");
22096c4d0b41SAdrian Hunter 	asm volatile("vpor   %ymm4,%ymm6,%ymm2");
22106c4d0b41SAdrian Hunter 	asm volatile("vpord  %zmm4,%zmm5,%zmm6");
22116c4d0b41SAdrian Hunter 	asm volatile("vporq  %zmm4,%zmm5,%zmm6");
22126c4d0b41SAdrian Hunter 
22136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f ef */
22146c4d0b41SAdrian Hunter 
22156c4d0b41SAdrian Hunter 	asm volatile("pxor   %mm4,%mm6");
22166c4d0b41SAdrian Hunter 	asm volatile("vpxor  %ymm4,%ymm6,%ymm2");
22176c4d0b41SAdrian Hunter 	asm volatile("vpxord %zmm4,%zmm5,%zmm6");
22186c4d0b41SAdrian Hunter 	asm volatile("vpxorq %zmm4,%zmm5,%zmm6");
22196c4d0b41SAdrian Hunter 
22206c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 10 */
22216c4d0b41SAdrian Hunter 
22226c4d0b41SAdrian Hunter 	asm volatile("pblendvb %xmm1,%xmm0");
22236c4d0b41SAdrian Hunter 	asm volatile("vpsrlvw %zmm4,%zmm5,%zmm6");
22246c4d0b41SAdrian Hunter 	asm volatile("vpmovuswb %zmm5,%ymm6{%k7}");
22256c4d0b41SAdrian Hunter 
22266c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 11 */
22276c4d0b41SAdrian Hunter 
22286c4d0b41SAdrian Hunter 	asm volatile("vpmovusdb %zmm5,%xmm6{%k7}");
22296c4d0b41SAdrian Hunter 	asm volatile("vpsravw %zmm4,%zmm5,%zmm6");
22306c4d0b41SAdrian Hunter 
22316c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 12 */
22326c4d0b41SAdrian Hunter 
22336c4d0b41SAdrian Hunter 	asm volatile("vpmovusqb %zmm5,%xmm6{%k7}");
22346c4d0b41SAdrian Hunter 	asm volatile("vpsllvw %zmm4,%zmm5,%zmm6");
22356c4d0b41SAdrian Hunter 
22366c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 13 */
22376c4d0b41SAdrian Hunter 
22386c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %xmm3,%ymm5");
22396c4d0b41SAdrian Hunter 	asm volatile("vcvtph2ps %ymm5,%zmm6{%k7}");
22406c4d0b41SAdrian Hunter 	asm volatile("vpmovusdw %zmm5,%ymm6{%k7}");
22416c4d0b41SAdrian Hunter 
22426c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 14 */
22436c4d0b41SAdrian Hunter 
22446c4d0b41SAdrian Hunter 	asm volatile("blendvps %xmm1,%xmm0");
22456c4d0b41SAdrian Hunter 	asm volatile("vpmovusqw %zmm5,%xmm6{%k7}");
22466c4d0b41SAdrian Hunter 	asm volatile("vprorvd %zmm4,%zmm5,%zmm6");
22476c4d0b41SAdrian Hunter 	asm volatile("vprorvq %zmm4,%zmm5,%zmm6");
22486c4d0b41SAdrian Hunter 
22496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 15 */
22506c4d0b41SAdrian Hunter 
22516c4d0b41SAdrian Hunter 	asm volatile("blendvpd %xmm1,%xmm0");
22526c4d0b41SAdrian Hunter 	asm volatile("vpmovusqd %zmm5,%ymm6{%k7}");
22536c4d0b41SAdrian Hunter 	asm volatile("vprolvd %zmm4,%zmm5,%zmm6");
22546c4d0b41SAdrian Hunter 	asm volatile("vprolvq %zmm4,%zmm5,%zmm6");
22556c4d0b41SAdrian Hunter 
22566c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 16 */
22576c4d0b41SAdrian Hunter 
22586c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2");
22596c4d0b41SAdrian Hunter 	asm volatile("vpermps %ymm4,%ymm6,%ymm2{%k7}");
22606c4d0b41SAdrian Hunter 	asm volatile("vpermpd %ymm4,%ymm6,%ymm2{%k7}");
22616c4d0b41SAdrian Hunter 
22626c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 19 */
22636c4d0b41SAdrian Hunter 
22646c4d0b41SAdrian Hunter 	asm volatile("vbroadcastsd %xmm4,%ymm6");
22656c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x2 %xmm7,%zmm6");
22666c4d0b41SAdrian Hunter 
22676c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1a */
22686c4d0b41SAdrian Hunter 
22696c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf128 (%ecx),%ymm4");
22706c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x4 (%ecx),%zmm6");
22716c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x2 (%ecx),%zmm6");
22726c4d0b41SAdrian Hunter 
22736c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1b */
22746c4d0b41SAdrian Hunter 
22756c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf32x8 (%ecx),%zmm6");
22766c4d0b41SAdrian Hunter 	asm volatile("vbroadcastf64x4 (%ecx),%zmm6");
22776c4d0b41SAdrian Hunter 
22786c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 1f */
22796c4d0b41SAdrian Hunter 
22806c4d0b41SAdrian Hunter 	asm volatile("vpabsq %zmm4,%zmm6");
22816c4d0b41SAdrian Hunter 
22826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 20 */
22836c4d0b41SAdrian Hunter 
22846c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbw %xmm4,%xmm5");
22856c4d0b41SAdrian Hunter 	asm volatile("vpmovswb %zmm5,%ymm6{%k7}");
22866c4d0b41SAdrian Hunter 
22876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 21 */
22886c4d0b41SAdrian Hunter 
22896c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbd %xmm4,%ymm6");
22906c4d0b41SAdrian Hunter 	asm volatile("vpmovsdb %zmm5,%xmm6{%k7}");
22916c4d0b41SAdrian Hunter 
22926c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 22 */
22936c4d0b41SAdrian Hunter 
22946c4d0b41SAdrian Hunter 	asm volatile("vpmovsxbq %xmm4,%ymm4");
22956c4d0b41SAdrian Hunter 	asm volatile("vpmovsqb %zmm5,%xmm6{%k7}");
22966c4d0b41SAdrian Hunter 
22976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 23 */
22986c4d0b41SAdrian Hunter 
22996c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwd %xmm4,%ymm4");
23006c4d0b41SAdrian Hunter 	asm volatile("vpmovsdw %zmm5,%ymm6{%k7}");
23016c4d0b41SAdrian Hunter 
23026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 24 */
23036c4d0b41SAdrian Hunter 
23046c4d0b41SAdrian Hunter 	asm volatile("vpmovsxwq %xmm4,%ymm6");
23056c4d0b41SAdrian Hunter 	asm volatile("vpmovsqw %zmm5,%xmm6{%k7}");
23066c4d0b41SAdrian Hunter 
23076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 25 */
23086c4d0b41SAdrian Hunter 
23096c4d0b41SAdrian Hunter 	asm volatile("vpmovsxdq %xmm4,%ymm4");
23106c4d0b41SAdrian Hunter 	asm volatile("vpmovsqd %zmm5,%ymm6{%k7}");
23116c4d0b41SAdrian Hunter 
23126c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 26 */
23136c4d0b41SAdrian Hunter 
23146c4d0b41SAdrian Hunter 	asm volatile("vptestmb %zmm5,%zmm6,%k5");
23156c4d0b41SAdrian Hunter 	asm volatile("vptestmw %zmm5,%zmm6,%k5");
23166c4d0b41SAdrian Hunter 	asm volatile("vptestnmb %zmm4,%zmm5,%k5");
23176c4d0b41SAdrian Hunter 	asm volatile("vptestnmw %zmm4,%zmm5,%k5");
23186c4d0b41SAdrian Hunter 
23196c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 27 */
23206c4d0b41SAdrian Hunter 
23216c4d0b41SAdrian Hunter 	asm volatile("vptestmd %zmm5,%zmm6,%k5");
23226c4d0b41SAdrian Hunter 	asm volatile("vptestmq %zmm5,%zmm6,%k5");
23236c4d0b41SAdrian Hunter 	asm volatile("vptestnmd %zmm4,%zmm5,%k5");
23246c4d0b41SAdrian Hunter 	asm volatile("vptestnmq %zmm4,%zmm5,%k5");
23256c4d0b41SAdrian Hunter 
23266c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 28 */
23276c4d0b41SAdrian Hunter 
23286c4d0b41SAdrian Hunter 	asm volatile("vpmuldq %ymm4,%ymm6,%ymm2");
23296c4d0b41SAdrian Hunter 	asm volatile("vpmovm2b %k5,%zmm6");
23306c4d0b41SAdrian Hunter 	asm volatile("vpmovm2w %k5,%zmm6");
23316c4d0b41SAdrian Hunter 
23326c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 29 */
23336c4d0b41SAdrian Hunter 
23346c4d0b41SAdrian Hunter 	asm volatile("vpcmpeqq %ymm4,%ymm6,%ymm2");
23356c4d0b41SAdrian Hunter 	asm volatile("vpmovb2m %zmm6,%k5");
23366c4d0b41SAdrian Hunter 	asm volatile("vpmovw2m %zmm6,%k5");
23376c4d0b41SAdrian Hunter 
23386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2a */
23396c4d0b41SAdrian Hunter 
23406c4d0b41SAdrian Hunter 	asm volatile("vmovntdqa (%ecx),%ymm4");
23416c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmb2q %k6,%zmm1");
23426c4d0b41SAdrian Hunter 
23436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2c */
23446c4d0b41SAdrian Hunter 
23456c4d0b41SAdrian Hunter 	asm volatile("vmaskmovps (%ecx),%ymm4,%ymm6");
23466c4d0b41SAdrian Hunter 	asm volatile("vscalefps %zmm4,%zmm5,%zmm6");
23476c4d0b41SAdrian Hunter 	asm volatile("vscalefpd %zmm4,%zmm5,%zmm6");
23486c4d0b41SAdrian Hunter 
23496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 2d */
23506c4d0b41SAdrian Hunter 
23516c4d0b41SAdrian Hunter 	asm volatile("vmaskmovpd (%ecx),%ymm4,%ymm6");
23526c4d0b41SAdrian Hunter 	asm volatile("vscalefss %xmm4,%xmm5,%xmm6{%k7}");
23536c4d0b41SAdrian Hunter 	asm volatile("vscalefsd %xmm4,%xmm5,%xmm6{%k7}");
23546c4d0b41SAdrian Hunter 
23556c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 30 */
23566c4d0b41SAdrian Hunter 
23576c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbw %xmm4,%ymm4");
23586c4d0b41SAdrian Hunter 	asm volatile("vpmovwb %zmm5,%ymm6{%k7}");
23596c4d0b41SAdrian Hunter 
23606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 31 */
23616c4d0b41SAdrian Hunter 
23626c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbd %xmm4,%ymm6");
23636c4d0b41SAdrian Hunter 	asm volatile("vpmovdb %zmm5,%xmm6{%k7}");
23646c4d0b41SAdrian Hunter 
23656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 32 */
23666c4d0b41SAdrian Hunter 
23676c4d0b41SAdrian Hunter 	asm volatile("vpmovzxbq %xmm4,%ymm4");
23686c4d0b41SAdrian Hunter 	asm volatile("vpmovqb %zmm5,%xmm6{%k7}");
23696c4d0b41SAdrian Hunter 
23706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 33 */
23716c4d0b41SAdrian Hunter 
23726c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwd %xmm4,%ymm4");
23736c4d0b41SAdrian Hunter 	asm volatile("vpmovdw %zmm5,%ymm6{%k7}");
23746c4d0b41SAdrian Hunter 
23756c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 34 */
23766c4d0b41SAdrian Hunter 
23776c4d0b41SAdrian Hunter 	asm volatile("vpmovzxwq %xmm4,%ymm6");
23786c4d0b41SAdrian Hunter 	asm volatile("vpmovqw %zmm5,%xmm6{%k7}");
23796c4d0b41SAdrian Hunter 
23806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 35 */
23816c4d0b41SAdrian Hunter 
23826c4d0b41SAdrian Hunter 	asm volatile("vpmovzxdq %xmm4,%ymm4");
23836c4d0b41SAdrian Hunter 	asm volatile("vpmovqd %zmm5,%ymm6{%k7}");
23846c4d0b41SAdrian Hunter 
23856c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 36 */
23866c4d0b41SAdrian Hunter 
23876c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2");
23886c4d0b41SAdrian Hunter 	asm volatile("vpermd %ymm4,%ymm6,%ymm2{%k7}");
23896c4d0b41SAdrian Hunter 	asm volatile("vpermq %ymm4,%ymm6,%ymm2{%k7}");
23906c4d0b41SAdrian Hunter 
23916c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 38 */
23926c4d0b41SAdrian Hunter 
23936c4d0b41SAdrian Hunter 	asm volatile("vpminsb %ymm4,%ymm6,%ymm2");
23946c4d0b41SAdrian Hunter 	asm volatile("vpmovm2d %k5,%zmm6");
23956c4d0b41SAdrian Hunter 	asm volatile("vpmovm2q %k5,%zmm6");
23966c4d0b41SAdrian Hunter 
23976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 39 */
23986c4d0b41SAdrian Hunter 
23996c4d0b41SAdrian Hunter 	asm volatile("vpminsd %xmm1,%xmm2,%xmm3");
24006c4d0b41SAdrian Hunter 	asm volatile("vpminsd %zmm4,%zmm5,%zmm6");
24016c4d0b41SAdrian Hunter 	asm volatile("vpminsq %zmm4,%zmm5,%zmm6");
24026c4d0b41SAdrian Hunter 	asm volatile("vpmovd2m %zmm6,%k5");
24036c4d0b41SAdrian Hunter 	asm volatile("vpmovq2m %zmm6,%k5");
24046c4d0b41SAdrian Hunter 
24056c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3a */
24066c4d0b41SAdrian Hunter 
24076c4d0b41SAdrian Hunter 	asm volatile("vpminuw %ymm4,%ymm6,%ymm2");
24086c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastmw2d %k6,%zmm6");
24096c4d0b41SAdrian Hunter 
24106c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3b */
24116c4d0b41SAdrian Hunter 
24126c4d0b41SAdrian Hunter 	asm volatile("vpminud %ymm4,%ymm6,%ymm2");
24136c4d0b41SAdrian Hunter 	asm volatile("vpminud %zmm4,%zmm5,%zmm6");
24146c4d0b41SAdrian Hunter 	asm volatile("vpminuq %zmm4,%zmm5,%zmm6");
24156c4d0b41SAdrian Hunter 
24166c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3d */
24176c4d0b41SAdrian Hunter 
24186c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %ymm4,%ymm6,%ymm2");
24196c4d0b41SAdrian Hunter 	asm volatile("vpmaxsd %zmm4,%zmm5,%zmm6");
24206c4d0b41SAdrian Hunter 	asm volatile("vpmaxsq %zmm4,%zmm5,%zmm6");
24216c4d0b41SAdrian Hunter 
24226c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 3f */
24236c4d0b41SAdrian Hunter 
24246c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %ymm4,%ymm6,%ymm2");
24256c4d0b41SAdrian Hunter 	asm volatile("vpmaxud %zmm4,%zmm5,%zmm6");
24266c4d0b41SAdrian Hunter 	asm volatile("vpmaxuq %zmm4,%zmm5,%zmm6");
24276c4d0b41SAdrian Hunter 
24286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 40 */
24296c4d0b41SAdrian Hunter 
24306c4d0b41SAdrian Hunter 	asm volatile("vpmulld %ymm4,%ymm6,%ymm2");
24316c4d0b41SAdrian Hunter 	asm volatile("vpmulld %zmm4,%zmm5,%zmm6");
24326c4d0b41SAdrian Hunter 	asm volatile("vpmullq %zmm4,%zmm5,%zmm6");
24336c4d0b41SAdrian Hunter 
24346c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 42 */
24356c4d0b41SAdrian Hunter 
24366c4d0b41SAdrian Hunter 	asm volatile("vgetexpps %zmm5,%zmm6");
24376c4d0b41SAdrian Hunter 	asm volatile("vgetexppd %zmm5,%zmm6");
24386c4d0b41SAdrian Hunter 
24396c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 43 */
24406c4d0b41SAdrian Hunter 
24416c4d0b41SAdrian Hunter 	asm volatile("vgetexpss %xmm4,%xmm5,%xmm6{%k7}");
24426c4d0b41SAdrian Hunter 	asm volatile("vgetexpsd %xmm2,%xmm3,%xmm4{%k7}");
24436c4d0b41SAdrian Hunter 
24446c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 44 */
24456c4d0b41SAdrian Hunter 
24466c4d0b41SAdrian Hunter 	asm volatile("vplzcntd %zmm5,%zmm6");
24476c4d0b41SAdrian Hunter 	asm volatile("vplzcntq %zmm5,%zmm6");
24486c4d0b41SAdrian Hunter 
24496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 46 */
24506c4d0b41SAdrian Hunter 
24516c4d0b41SAdrian Hunter 	asm volatile("vpsravd %ymm4,%ymm6,%ymm2");
24526c4d0b41SAdrian Hunter 	asm volatile("vpsravd %zmm4,%zmm5,%zmm6");
24536c4d0b41SAdrian Hunter 	asm volatile("vpsravq %zmm4,%zmm5,%zmm6");
24546c4d0b41SAdrian Hunter 
24556c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4c */
24566c4d0b41SAdrian Hunter 
24576c4d0b41SAdrian Hunter 	asm volatile("vrcp14ps %zmm5,%zmm6");
24586c4d0b41SAdrian Hunter 	asm volatile("vrcp14pd %zmm5,%zmm6");
24596c4d0b41SAdrian Hunter 
24606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4d */
24616c4d0b41SAdrian Hunter 
24626c4d0b41SAdrian Hunter 	asm volatile("vrcp14ss %xmm4,%xmm5,%xmm6{%k7}");
24636c4d0b41SAdrian Hunter 	asm volatile("vrcp14sd %xmm4,%xmm5,%xmm6{%k7}");
24646c4d0b41SAdrian Hunter 
24656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4e */
24666c4d0b41SAdrian Hunter 
24676c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ps %zmm5,%zmm6");
24686c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14pd %zmm5,%zmm6");
24696c4d0b41SAdrian Hunter 
24706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 4f */
24716c4d0b41SAdrian Hunter 
24726c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14ss %xmm4,%xmm5,%xmm6{%k7}");
24736c4d0b41SAdrian Hunter 	asm volatile("vrsqrt14sd %xmm4,%xmm5,%xmm6{%k7}");
24746c4d0b41SAdrian Hunter 
24759adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 50 */
24769adab034SAdrian Hunter 
24779adab034SAdrian Hunter 	asm volatile("vpdpbusd %xmm1, %xmm2, %xmm3");
24789adab034SAdrian Hunter 	asm volatile("vpdpbusd %ymm1, %ymm2, %ymm3");
24799adab034SAdrian Hunter 	asm volatile("vpdpbusd %zmm1, %zmm2, %zmm3");
24809adab034SAdrian Hunter 	asm volatile("vpdpbusd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24819adab034SAdrian Hunter 
24829adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 51 */
24839adab034SAdrian Hunter 
24849adab034SAdrian Hunter 	asm volatile("vpdpbusds %xmm1, %xmm2, %xmm3");
24859adab034SAdrian Hunter 	asm volatile("vpdpbusds %ymm1, %ymm2, %ymm3");
24869adab034SAdrian Hunter 	asm volatile("vpdpbusds %zmm1, %zmm2, %zmm3");
24879adab034SAdrian Hunter 	asm volatile("vpdpbusds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24889adab034SAdrian Hunter 
24899adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 52 */
24909adab034SAdrian Hunter 
24919adab034SAdrian Hunter 	asm volatile("vdpbf16ps %xmm1, %xmm2, %xmm3");
24929adab034SAdrian Hunter 	asm volatile("vdpbf16ps %ymm1, %ymm2, %ymm3");
24939adab034SAdrian Hunter 	asm volatile("vdpbf16ps %zmm1, %zmm2, %zmm3");
24949adab034SAdrian Hunter 	asm volatile("vdpbf16ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
24959adab034SAdrian Hunter 
24969adab034SAdrian Hunter 	asm volatile("vpdpwssd %xmm1, %xmm2, %xmm3");
24979adab034SAdrian Hunter 	asm volatile("vpdpwssd %ymm1, %ymm2, %ymm3");
24989adab034SAdrian Hunter 	asm volatile("vpdpwssd %zmm1, %zmm2, %zmm3");
24999adab034SAdrian Hunter 	asm volatile("vpdpwssd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
25009adab034SAdrian Hunter 
25019adab034SAdrian Hunter 	asm volatile("vp4dpwssd (%eax), %zmm0, %zmm4");
25029adab034SAdrian Hunter 	asm volatile("vp4dpwssd 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
25039adab034SAdrian Hunter 
25049adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 53 */
25059adab034SAdrian Hunter 
25069adab034SAdrian Hunter 	asm volatile("vpdpwssds %xmm1, %xmm2, %xmm3");
25079adab034SAdrian Hunter 	asm volatile("vpdpwssds %ymm1, %ymm2, %ymm3");
25089adab034SAdrian Hunter 	asm volatile("vpdpwssds %zmm1, %zmm2, %zmm3");
25099adab034SAdrian Hunter 	asm volatile("vpdpwssds 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
25109adab034SAdrian Hunter 
25119adab034SAdrian Hunter 	asm volatile("vp4dpwssds (%eax), %zmm0, %zmm4");
25129adab034SAdrian Hunter 	asm volatile("vp4dpwssds 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
25139adab034SAdrian Hunter 
25149adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 54 */
25159adab034SAdrian Hunter 
25169adab034SAdrian Hunter 	asm volatile("vpopcntb %xmm1, %xmm2");
25179adab034SAdrian Hunter 	asm volatile("vpopcntb %ymm1, %ymm2");
25189adab034SAdrian Hunter 	asm volatile("vpopcntb %zmm1, %zmm2");
25199adab034SAdrian Hunter 	asm volatile("vpopcntb 0x12345678(%eax,%ecx,8),%zmm2");
25209adab034SAdrian Hunter 
25219adab034SAdrian Hunter 	asm volatile("vpopcntw %xmm1, %xmm2");
25229adab034SAdrian Hunter 	asm volatile("vpopcntw %ymm1, %ymm2");
25239adab034SAdrian Hunter 	asm volatile("vpopcntw %zmm1, %zmm2");
25249adab034SAdrian Hunter 	asm volatile("vpopcntw 0x12345678(%eax,%ecx,8),%zmm2");
25259adab034SAdrian Hunter 
25269adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 55 */
25279adab034SAdrian Hunter 
25289adab034SAdrian Hunter 	asm volatile("vpopcntd %xmm1, %xmm2");
25299adab034SAdrian Hunter 	asm volatile("vpopcntd %ymm1, %ymm2");
25309adab034SAdrian Hunter 	asm volatile("vpopcntd %zmm1, %zmm2");
25319adab034SAdrian Hunter 	asm volatile("vpopcntd 0x12345678(%eax,%ecx,8),%zmm2");
25329adab034SAdrian Hunter 
25339adab034SAdrian Hunter 	asm volatile("vpopcntq %xmm1, %xmm2");
25349adab034SAdrian Hunter 	asm volatile("vpopcntq %ymm1, %ymm2");
25359adab034SAdrian Hunter 	asm volatile("vpopcntq %zmm1, %zmm2");
25369adab034SAdrian Hunter 	asm volatile("vpopcntq 0x12345678(%eax,%ecx,8),%zmm2");
25379adab034SAdrian Hunter 
25386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 59 */
25396c4d0b41SAdrian Hunter 
25406c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastq %xmm4,%xmm6");
25416c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x2 %xmm7,%zmm6");
25426c4d0b41SAdrian Hunter 
25436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5a */
25446c4d0b41SAdrian Hunter 
25456c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti128 (%ecx),%ymm4");
25466c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x4 (%ecx),%zmm6");
25476c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x2 (%ecx),%zmm6");
25486c4d0b41SAdrian Hunter 
25496c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 5b */
25506c4d0b41SAdrian Hunter 
25516c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti32x8 (%ecx),%zmm6");
25526c4d0b41SAdrian Hunter 	asm volatile("vbroadcasti64x4 (%ecx),%zmm6");
25536c4d0b41SAdrian Hunter 
25549adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 62 */
25559adab034SAdrian Hunter 
25569adab034SAdrian Hunter 	asm volatile("vpexpandb %xmm1, %xmm2");
25579adab034SAdrian Hunter 	asm volatile("vpexpandb %ymm1, %ymm2");
25589adab034SAdrian Hunter 	asm volatile("vpexpandb %zmm1, %zmm2");
25599adab034SAdrian Hunter 	asm volatile("vpexpandb 0x12345678(%eax,%ecx,8),%zmm2");
25609adab034SAdrian Hunter 
25619adab034SAdrian Hunter 	asm volatile("vpexpandw %xmm1, %xmm2");
25629adab034SAdrian Hunter 	asm volatile("vpexpandw %ymm1, %ymm2");
25639adab034SAdrian Hunter 	asm volatile("vpexpandw %zmm1, %zmm2");
25649adab034SAdrian Hunter 	asm volatile("vpexpandw 0x12345678(%eax,%ecx,8),%zmm2");
25659adab034SAdrian Hunter 
25669adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 63 */
25679adab034SAdrian Hunter 
25689adab034SAdrian Hunter 	asm volatile("vpcompressb %xmm1, %xmm2");
25699adab034SAdrian Hunter 	asm volatile("vpcompressb %ymm1, %ymm2");
25709adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm1, %zmm2");
25719adab034SAdrian Hunter 	asm volatile("vpcompressb %zmm2,0x12345678(%eax,%ecx,8)");
25729adab034SAdrian Hunter 
25739adab034SAdrian Hunter 	asm volatile("vpcompressw %xmm1, %xmm2");
25749adab034SAdrian Hunter 	asm volatile("vpcompressw %ymm1, %ymm2");
25759adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm1, %zmm2");
25769adab034SAdrian Hunter 	asm volatile("vpcompressw %zmm2,0x12345678(%eax,%ecx,8)");
25779adab034SAdrian Hunter 
25786c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 64 */
25796c4d0b41SAdrian Hunter 
25806c4d0b41SAdrian Hunter 	asm volatile("vpblendmd %zmm4,%zmm5,%zmm6");
25816c4d0b41SAdrian Hunter 	asm volatile("vpblendmq %zmm4,%zmm5,%zmm6");
25826c4d0b41SAdrian Hunter 
25836c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 65 */
25846c4d0b41SAdrian Hunter 
25856c4d0b41SAdrian Hunter 	asm volatile("vblendmps %zmm4,%zmm5,%zmm6");
25866c4d0b41SAdrian Hunter 	asm volatile("vblendmpd %zmm4,%zmm5,%zmm6");
25876c4d0b41SAdrian Hunter 
25886c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 66 */
25896c4d0b41SAdrian Hunter 
25906c4d0b41SAdrian Hunter 	asm volatile("vpblendmb %zmm4,%zmm5,%zmm6");
25916c4d0b41SAdrian Hunter 	asm volatile("vpblendmw %zmm4,%zmm5,%zmm6");
25926c4d0b41SAdrian Hunter 
25939adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 68 */
25949adab034SAdrian Hunter 
25959adab034SAdrian Hunter 	asm volatile("vp2intersectd %xmm1, %xmm2, %k3");
25969adab034SAdrian Hunter 	asm volatile("vp2intersectd %ymm1, %ymm2, %k3");
25979adab034SAdrian Hunter 	asm volatile("vp2intersectd %zmm1, %zmm2, %k3");
25989adab034SAdrian Hunter 	asm volatile("vp2intersectd 0x12345678(%eax,%ecx,8),%zmm2,%k3");
25999adab034SAdrian Hunter 
26009adab034SAdrian Hunter 	asm volatile("vp2intersectq %xmm1, %xmm2, %k3");
26019adab034SAdrian Hunter 	asm volatile("vp2intersectq %ymm1, %ymm2, %k3");
26029adab034SAdrian Hunter 	asm volatile("vp2intersectq %zmm1, %zmm2, %k3");
26039adab034SAdrian Hunter 	asm volatile("vp2intersectq 0x12345678(%eax,%ecx,8),%zmm2,%k3");
26049adab034SAdrian Hunter 
26059adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 70 */
26069adab034SAdrian Hunter 
26079adab034SAdrian Hunter 	asm volatile("vpshldvw %xmm1, %xmm2, %xmm3");
26089adab034SAdrian Hunter 	asm volatile("vpshldvw %ymm1, %ymm2, %ymm3");
26099adab034SAdrian Hunter 	asm volatile("vpshldvw %zmm1, %zmm2, %zmm3");
26109adab034SAdrian Hunter 	asm volatile("vpshldvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26119adab034SAdrian Hunter 
26129adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 71 */
26139adab034SAdrian Hunter 
26149adab034SAdrian Hunter 	asm volatile("vpshldvd %xmm1, %xmm2, %xmm3");
26159adab034SAdrian Hunter 	asm volatile("vpshldvd %ymm1, %ymm2, %ymm3");
26169adab034SAdrian Hunter 	asm volatile("vpshldvd %zmm1, %zmm2, %zmm3");
26179adab034SAdrian Hunter 	asm volatile("vpshldvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26189adab034SAdrian Hunter 
26199adab034SAdrian Hunter 	asm volatile("vpshldvq %xmm1, %xmm2, %xmm3");
26209adab034SAdrian Hunter 	asm volatile("vpshldvq %ymm1, %ymm2, %ymm3");
26219adab034SAdrian Hunter 	asm volatile("vpshldvq %zmm1, %zmm2, %zmm3");
26229adab034SAdrian Hunter 	asm volatile("vpshldvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26239adab034SAdrian Hunter 
26249adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 72 */
26259adab034SAdrian Hunter 
26269adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %xmm1, %xmm2, %xmm3");
26279adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %ymm1, %ymm2, %ymm3");
26289adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 %zmm1, %zmm2, %zmm3");
26299adab034SAdrian Hunter 	asm volatile("vcvtne2ps2bf16 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26309adab034SAdrian Hunter 
26319adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %xmm1, %xmm2");
26329adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %ymm1, %xmm2");
26339adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 %zmm1, %ymm2");
26349adab034SAdrian Hunter 	asm volatile("vcvtneps2bf16 0x12345678(%eax,%ecx,8),%ymm2");
26359adab034SAdrian Hunter 
26369adab034SAdrian Hunter 	asm volatile("vpshrdvw %xmm1, %xmm2, %xmm3");
26379adab034SAdrian Hunter 	asm volatile("vpshrdvw %ymm1, %ymm2, %ymm3");
26389adab034SAdrian Hunter 	asm volatile("vpshrdvw %zmm1, %zmm2, %zmm3");
26399adab034SAdrian Hunter 	asm volatile("vpshrdvw 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26409adab034SAdrian Hunter 
26419adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 73 */
26429adab034SAdrian Hunter 
26439adab034SAdrian Hunter 	asm volatile("vpshrdvd %xmm1, %xmm2, %xmm3");
26449adab034SAdrian Hunter 	asm volatile("vpshrdvd %ymm1, %ymm2, %ymm3");
26459adab034SAdrian Hunter 	asm volatile("vpshrdvd %zmm1, %zmm2, %zmm3");
26469adab034SAdrian Hunter 	asm volatile("vpshrdvd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26479adab034SAdrian Hunter 
26489adab034SAdrian Hunter 	asm volatile("vpshrdvq %xmm1, %xmm2, %xmm3");
26499adab034SAdrian Hunter 	asm volatile("vpshrdvq %ymm1, %ymm2, %ymm3");
26509adab034SAdrian Hunter 	asm volatile("vpshrdvq %zmm1, %zmm2, %zmm3");
26519adab034SAdrian Hunter 	asm volatile("vpshrdvq 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
26529adab034SAdrian Hunter 
26536c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 75 */
26546c4d0b41SAdrian Hunter 
26556c4d0b41SAdrian Hunter 	asm volatile("vpermi2b %zmm4,%zmm5,%zmm6");
26566c4d0b41SAdrian Hunter 	asm volatile("vpermi2w %zmm4,%zmm5,%zmm6");
26576c4d0b41SAdrian Hunter 
26586c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 76 */
26596c4d0b41SAdrian Hunter 
26606c4d0b41SAdrian Hunter 	asm volatile("vpermi2d %zmm4,%zmm5,%zmm6");
26616c4d0b41SAdrian Hunter 	asm volatile("vpermi2q %zmm4,%zmm5,%zmm6");
26626c4d0b41SAdrian Hunter 
26636c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 77 */
26646c4d0b41SAdrian Hunter 
26656c4d0b41SAdrian Hunter 	asm volatile("vpermi2ps %zmm4,%zmm5,%zmm6");
26666c4d0b41SAdrian Hunter 	asm volatile("vpermi2pd %zmm4,%zmm5,%zmm6");
26676c4d0b41SAdrian Hunter 
26686c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7a */
26696c4d0b41SAdrian Hunter 
26706c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastb %eax,%xmm3");
26716c4d0b41SAdrian Hunter 
26726c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7b */
26736c4d0b41SAdrian Hunter 
26746c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastw %eax,%xmm3");
26756c4d0b41SAdrian Hunter 
26766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7c */
26776c4d0b41SAdrian Hunter 
26786c4d0b41SAdrian Hunter 	asm volatile("vpbroadcastd %eax,%xmm3");
26796c4d0b41SAdrian Hunter 
26806c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7d */
26816c4d0b41SAdrian Hunter 
26826c4d0b41SAdrian Hunter 	asm volatile("vpermt2b %zmm4,%zmm5,%zmm6");
26836c4d0b41SAdrian Hunter 	asm volatile("vpermt2w %zmm4,%zmm5,%zmm6");
26846c4d0b41SAdrian Hunter 
26856c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7e */
26866c4d0b41SAdrian Hunter 
26876c4d0b41SAdrian Hunter 	asm volatile("vpermt2d %zmm4,%zmm5,%zmm6");
26886c4d0b41SAdrian Hunter 	asm volatile("vpermt2q %zmm4,%zmm5,%zmm6");
26896c4d0b41SAdrian Hunter 
26906c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 7f */
26916c4d0b41SAdrian Hunter 
26926c4d0b41SAdrian Hunter 	asm volatile("vpermt2ps %zmm4,%zmm5,%zmm6");
26936c4d0b41SAdrian Hunter 	asm volatile("vpermt2pd %zmm4,%zmm5,%zmm6");
26946c4d0b41SAdrian Hunter 
26956c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 83 */
26966c4d0b41SAdrian Hunter 
26976c4d0b41SAdrian Hunter 	asm volatile("vpmultishiftqb %zmm4,%zmm5,%zmm6");
26986c4d0b41SAdrian Hunter 
26996c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 88 */
27006c4d0b41SAdrian Hunter 
27016c4d0b41SAdrian Hunter 	asm volatile("vexpandps (%ecx),%zmm6");
27026c4d0b41SAdrian Hunter 	asm volatile("vexpandpd (%ecx),%zmm6");
27036c4d0b41SAdrian Hunter 
27046c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 89 */
27056c4d0b41SAdrian Hunter 
27066c4d0b41SAdrian Hunter 	asm volatile("vpexpandd (%ecx),%zmm6");
27076c4d0b41SAdrian Hunter 	asm volatile("vpexpandq (%ecx),%zmm6");
27086c4d0b41SAdrian Hunter 
27096c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8a */
27106c4d0b41SAdrian Hunter 
27116c4d0b41SAdrian Hunter 	asm volatile("vcompressps %zmm6,(%ecx)");
27126c4d0b41SAdrian Hunter 	asm volatile("vcompresspd %zmm6,(%ecx)");
27136c4d0b41SAdrian Hunter 
27146c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8b */
27156c4d0b41SAdrian Hunter 
27166c4d0b41SAdrian Hunter 	asm volatile("vpcompressd %zmm6,(%ecx)");
27176c4d0b41SAdrian Hunter 	asm volatile("vpcompressq %zmm6,(%ecx)");
27186c4d0b41SAdrian Hunter 
27196c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 8d */
27206c4d0b41SAdrian Hunter 
27216c4d0b41SAdrian Hunter 	asm volatile("vpermb %zmm4,%zmm5,%zmm6");
27226c4d0b41SAdrian Hunter 	asm volatile("vpermw %zmm4,%zmm5,%zmm6");
27236c4d0b41SAdrian Hunter 
27249adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 8f */
27259adab034SAdrian Hunter 
27269adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %xmm1, %xmm2, %k3");
27279adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %ymm1, %ymm2, %k3");
27289adab034SAdrian Hunter 	asm volatile("vpshufbitqmb %zmm1, %zmm2, %k3");
27299adab034SAdrian Hunter 	asm volatile("vpshufbitqmb 0x12345678(%eax,%ecx,8),%zmm2,%k3");
27309adab034SAdrian Hunter 
27316c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 90 */
27326c4d0b41SAdrian Hunter 
27336c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
27346c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq %xmm2,0x04(%ebp,%xmm7,2),%xmm1");
27356c4d0b41SAdrian Hunter 	asm volatile("vpgatherdd 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
27366c4d0b41SAdrian Hunter 	asm volatile("vpgatherdq 0x7b(%ebp,%ymm7,8),%zmm6{%k1}");
27376c4d0b41SAdrian Hunter 
27386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 91 */
27396c4d0b41SAdrian Hunter 
27406c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
27416c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq %xmm2,0x02(%ebp,%xmm7,2),%xmm1");
27426c4d0b41SAdrian Hunter 	asm volatile("vpgatherqd 0x7b(%ebp,%zmm7,8),%ymm6{%k1}");
27436c4d0b41SAdrian Hunter 	asm volatile("vpgatherqq 0x7b(%ebp,%zmm7,8),%zmm6{%k1}");
27446c4d0b41SAdrian Hunter 
27459adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 9a */
27469adab034SAdrian Hunter 
27479adab034SAdrian Hunter 	asm volatile("vfmsub132ps %xmm1, %xmm2, %xmm3");
27489adab034SAdrian Hunter 	asm volatile("vfmsub132ps %ymm1, %ymm2, %ymm3");
27499adab034SAdrian Hunter 	asm volatile("vfmsub132ps %zmm1, %zmm2, %zmm3");
27509adab034SAdrian Hunter 	asm volatile("vfmsub132ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27519adab034SAdrian Hunter 
27529adab034SAdrian Hunter 	asm volatile("vfmsub132pd %xmm1, %xmm2, %xmm3");
27539adab034SAdrian Hunter 	asm volatile("vfmsub132pd %ymm1, %ymm2, %ymm3");
27549adab034SAdrian Hunter 	asm volatile("vfmsub132pd %zmm1, %zmm2, %zmm3");
27559adab034SAdrian Hunter 	asm volatile("vfmsub132pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27569adab034SAdrian Hunter 
27579adab034SAdrian Hunter 	asm volatile("v4fmaddps (%eax), %zmm0, %zmm4");
27589adab034SAdrian Hunter 	asm volatile("v4fmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
27599adab034SAdrian Hunter 
27609adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 9b */
27619adab034SAdrian Hunter 
27629adab034SAdrian Hunter 	asm volatile("vfmsub132ss %xmm1, %xmm2, %xmm3");
27639adab034SAdrian Hunter 	asm volatile("vfmsub132ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
27649adab034SAdrian Hunter 
27659adab034SAdrian Hunter 	asm volatile("vfmsub132sd %xmm1, %xmm2, %xmm3");
27669adab034SAdrian Hunter 	asm volatile("vfmsub132sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
27679adab034SAdrian Hunter 
27689adab034SAdrian Hunter 	asm volatile("v4fmaddss (%eax), %xmm0, %xmm4");
27699adab034SAdrian Hunter 	asm volatile("v4fmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
27709adab034SAdrian Hunter 
27716c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a0 */
27726c4d0b41SAdrian Hunter 
27736c4d0b41SAdrian Hunter 	asm volatile("vpscatterdd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
27746c4d0b41SAdrian Hunter 	asm volatile("vpscatterdq %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
27756c4d0b41SAdrian Hunter 
27766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a1 */
27776c4d0b41SAdrian Hunter 
27786c4d0b41SAdrian Hunter 	asm volatile("vpscatterqd %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
27796c4d0b41SAdrian Hunter 	asm volatile("vpscatterqq %ymm6,0x7b(%ebp,%ymm7,8){%k1}");
27806c4d0b41SAdrian Hunter 
27816c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a2 */
27826c4d0b41SAdrian Hunter 
27836c4d0b41SAdrian Hunter 	asm volatile("vscatterdps %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
27846c4d0b41SAdrian Hunter 	asm volatile("vscatterdpd %zmm6,0x7b(%ebp,%ymm7,8){%k1}");
27856c4d0b41SAdrian Hunter 
27866c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 a3 */
27876c4d0b41SAdrian Hunter 
27886c4d0b41SAdrian Hunter 	asm volatile("vscatterqps %ymm6,0x7b(%ebp,%zmm7,8){%k1}");
27896c4d0b41SAdrian Hunter 	asm volatile("vscatterqpd %zmm6,0x7b(%ebp,%zmm7,8){%k1}");
27906c4d0b41SAdrian Hunter 
27919adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 aa */
27929adab034SAdrian Hunter 
27939adab034SAdrian Hunter 	asm volatile("vfmsub213ps %xmm1, %xmm2, %xmm3");
27949adab034SAdrian Hunter 	asm volatile("vfmsub213ps %ymm1, %ymm2, %ymm3");
27959adab034SAdrian Hunter 	asm volatile("vfmsub213ps %zmm1, %zmm2, %zmm3");
27969adab034SAdrian Hunter 	asm volatile("vfmsub213ps 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
27979adab034SAdrian Hunter 
27989adab034SAdrian Hunter 	asm volatile("vfmsub213pd %xmm1, %xmm2, %xmm3");
27999adab034SAdrian Hunter 	asm volatile("vfmsub213pd %ymm1, %ymm2, %ymm3");
28009adab034SAdrian Hunter 	asm volatile("vfmsub213pd %zmm1, %zmm2, %zmm3");
28019adab034SAdrian Hunter 	asm volatile("vfmsub213pd 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
28029adab034SAdrian Hunter 
28039adab034SAdrian Hunter 	asm volatile("v4fnmaddps (%eax), %zmm0, %zmm4");
28049adab034SAdrian Hunter 	asm volatile("v4fnmaddps 0x12345678(%eax,%ecx,8),%zmm0,%zmm4");
28059adab034SAdrian Hunter 
28069adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 ab */
28079adab034SAdrian Hunter 
28089adab034SAdrian Hunter 	asm volatile("vfmsub213ss %xmm1, %xmm2, %xmm3");
28099adab034SAdrian Hunter 	asm volatile("vfmsub213ss 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
28109adab034SAdrian Hunter 
28119adab034SAdrian Hunter 	asm volatile("vfmsub213sd %xmm1, %xmm2, %xmm3");
28129adab034SAdrian Hunter 	asm volatile("vfmsub213sd 0x12345678(%eax,%ecx,8),%xmm2,%xmm3");
28139adab034SAdrian Hunter 
28149adab034SAdrian Hunter 	asm volatile("v4fnmaddss (%eax), %xmm0, %xmm4");
28159adab034SAdrian Hunter 	asm volatile("v4fnmaddss 0x12345678(%eax,%ecx,8),%xmm0,%xmm4");
28169adab034SAdrian Hunter 
28176c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b4 */
28186c4d0b41SAdrian Hunter 
28196c4d0b41SAdrian Hunter 	asm volatile("vpmadd52luq %zmm4,%zmm5,%zmm6");
28206c4d0b41SAdrian Hunter 
28216c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 b5 */
28226c4d0b41SAdrian Hunter 
28236c4d0b41SAdrian Hunter 	asm volatile("vpmadd52huq %zmm4,%zmm5,%zmm6");
28246c4d0b41SAdrian Hunter 
28256c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c4 */
28266c4d0b41SAdrian Hunter 
28276c4d0b41SAdrian Hunter 	asm volatile("vpconflictd %zmm5,%zmm6");
28286c4d0b41SAdrian Hunter 	asm volatile("vpconflictq %zmm5,%zmm6");
28296c4d0b41SAdrian Hunter 
28306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c8 */
28316c4d0b41SAdrian Hunter 
28326c4d0b41SAdrian Hunter 	asm volatile("vexp2ps %zmm6,%zmm7");
28336c4d0b41SAdrian Hunter 	asm volatile("vexp2pd %zmm6,%zmm7");
28346c4d0b41SAdrian Hunter 
28356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 ca */
28366c4d0b41SAdrian Hunter 
28376c4d0b41SAdrian Hunter 	asm volatile("vrcp28ps %zmm6,%zmm7");
28386c4d0b41SAdrian Hunter 	asm volatile("vrcp28pd %zmm6,%zmm7");
28396c4d0b41SAdrian Hunter 
28406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cb */
28416c4d0b41SAdrian Hunter 
28426c4d0b41SAdrian Hunter 	asm volatile("vrcp28ss %xmm5,%xmm6,%xmm7{%k7}");
28436c4d0b41SAdrian Hunter 	asm volatile("vrcp28sd %xmm5,%xmm6,%xmm7{%k7}");
28446c4d0b41SAdrian Hunter 
28456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cc */
28466c4d0b41SAdrian Hunter 
28476c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ps %zmm6,%zmm7");
28486c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28pd %zmm6,%zmm7");
28496c4d0b41SAdrian Hunter 
28506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 cd */
28516c4d0b41SAdrian Hunter 
28526c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28ss %xmm5,%xmm6,%xmm7{%k7}");
28536c4d0b41SAdrian Hunter 	asm volatile("vrsqrt28sd %xmm5,%xmm6,%xmm7{%k7}");
28546c4d0b41SAdrian Hunter 
28559adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 cf */
28569adab034SAdrian Hunter 
28579adab034SAdrian Hunter 	asm volatile("gf2p8mulb %xmm1, %xmm3");
28589adab034SAdrian Hunter 	asm volatile("gf2p8mulb 0x12345678(%eax,%ecx,8),%xmm3");
28599adab034SAdrian Hunter 
28609adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %xmm1, %xmm2, %xmm3");
28619adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %ymm1, %ymm2, %ymm3");
28629adab034SAdrian Hunter 	asm volatile("vgf2p8mulb %zmm1, %zmm2, %zmm3");
28639adab034SAdrian Hunter 	asm volatile("vgf2p8mulb 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
28649adab034SAdrian Hunter 
28659adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 dc */
28669adab034SAdrian Hunter 
28679adab034SAdrian Hunter 	asm volatile("vaesenc %xmm1, %xmm2, %xmm3");
28689adab034SAdrian Hunter 	asm volatile("vaesenc %ymm1, %ymm2, %ymm3");
28699adab034SAdrian Hunter 	asm volatile("vaesenc %zmm1, %zmm2, %zmm3");
28709adab034SAdrian Hunter 	asm volatile("vaesenc 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
28719adab034SAdrian Hunter 
28729adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 dd */
28739adab034SAdrian Hunter 
28749adab034SAdrian Hunter 	asm volatile("vaesenclast %xmm1, %xmm2, %xmm3");
28759adab034SAdrian Hunter 	asm volatile("vaesenclast %ymm1, %ymm2, %ymm3");
28769adab034SAdrian Hunter 	asm volatile("vaesenclast %zmm1, %zmm2, %zmm3");
28779adab034SAdrian Hunter 	asm volatile("vaesenclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
28789adab034SAdrian Hunter 
28799adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 de */
28809adab034SAdrian Hunter 
28819adab034SAdrian Hunter 	asm volatile("vaesdec %xmm1, %xmm2, %xmm3");
28829adab034SAdrian Hunter 	asm volatile("vaesdec %ymm1, %ymm2, %ymm3");
28839adab034SAdrian Hunter 	asm volatile("vaesdec %zmm1, %zmm2, %zmm3");
28849adab034SAdrian Hunter 	asm volatile("vaesdec 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
28859adab034SAdrian Hunter 
28869adab034SAdrian Hunter 	/* AVX-512: Op code 0f 38 df */
28879adab034SAdrian Hunter 
28889adab034SAdrian Hunter 	asm volatile("vaesdeclast %xmm1, %xmm2, %xmm3");
28899adab034SAdrian Hunter 	asm volatile("vaesdeclast %ymm1, %ymm2, %ymm3");
28909adab034SAdrian Hunter 	asm volatile("vaesdeclast %zmm1, %zmm2, %zmm3");
28919adab034SAdrian Hunter 	asm volatile("vaesdeclast 0x12345678(%eax,%ecx,8),%zmm2,%zmm3");
28929adab034SAdrian Hunter 
28936c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 03 */
28946c4d0b41SAdrian Hunter 
28956c4d0b41SAdrian Hunter 	asm volatile("valignd $0x12,%zmm5,%zmm6,%zmm7");
28966c4d0b41SAdrian Hunter 	asm volatile("valignq $0x12,%zmm5,%zmm6,%zmm7");
28976c4d0b41SAdrian Hunter 
28986c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 08 */
28996c4d0b41SAdrian Hunter 
29006c4d0b41SAdrian Hunter 	asm volatile("vroundps $0x5,%ymm6,%ymm2");
29016c4d0b41SAdrian Hunter 	asm volatile("vrndscaleps $0x12,%zmm5,%zmm6");
29026c4d0b41SAdrian Hunter 
29036c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 09 */
29046c4d0b41SAdrian Hunter 
29056c4d0b41SAdrian Hunter 	asm volatile("vroundpd $0x5,%ymm6,%ymm2");
29066c4d0b41SAdrian Hunter 	asm volatile("vrndscalepd $0x12,%zmm5,%zmm6");
29076c4d0b41SAdrian Hunter 
29086c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0a */
29096c4d0b41SAdrian Hunter 
29106c4d0b41SAdrian Hunter 	asm volatile("vroundss $0x5,%xmm4,%xmm6,%xmm2");
29116c4d0b41SAdrian Hunter 	asm volatile("vrndscaless $0x12,%xmm4,%xmm5,%xmm6{%k7}");
29126c4d0b41SAdrian Hunter 
29136c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 0b */
29146c4d0b41SAdrian Hunter 
29156c4d0b41SAdrian Hunter 	asm volatile("vroundsd $0x5,%xmm4,%xmm6,%xmm2");
29166c4d0b41SAdrian Hunter 	asm volatile("vrndscalesd $0x12,%xmm4,%xmm5,%xmm6{%k7}");
29176c4d0b41SAdrian Hunter 
29186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 18 */
29196c4d0b41SAdrian Hunter 
29206c4d0b41SAdrian Hunter 	asm volatile("vinsertf128 $0x5,%xmm4,%ymm4,%ymm6");
29216c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
29226c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
29236c4d0b41SAdrian Hunter 
29246c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 19 */
29256c4d0b41SAdrian Hunter 
29266c4d0b41SAdrian Hunter 	asm volatile("vextractf128 $0x5,%ymm4,%xmm4");
29276c4d0b41SAdrian Hunter 	asm volatile("vextractf32x4 $0x12,%zmm5,%xmm6{%k7}");
29286c4d0b41SAdrian Hunter 	asm volatile("vextractf64x2 $0x12,%zmm5,%xmm6{%k7}");
29296c4d0b41SAdrian Hunter 
29306c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1a */
29316c4d0b41SAdrian Hunter 
29326c4d0b41SAdrian Hunter 	asm volatile("vinsertf32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
29336c4d0b41SAdrian Hunter 	asm volatile("vinsertf64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
29346c4d0b41SAdrian Hunter 
29356c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1b */
29366c4d0b41SAdrian Hunter 
29376c4d0b41SAdrian Hunter 	asm volatile("vextractf32x8 $0x12,%zmm6,%ymm7{%k7}");
29386c4d0b41SAdrian Hunter 	asm volatile("vextractf64x4 $0x12,%zmm6,%ymm7{%k7}");
29396c4d0b41SAdrian Hunter 
29406c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1e */
29416c4d0b41SAdrian Hunter 
29426c4d0b41SAdrian Hunter 	asm volatile("vpcmpud $0x12,%zmm6,%zmm7,%k5");
29436c4d0b41SAdrian Hunter 	asm volatile("vpcmpuq $0x12,%zmm6,%zmm7,%k5");
29446c4d0b41SAdrian Hunter 
29456c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 1f */
29466c4d0b41SAdrian Hunter 
29476c4d0b41SAdrian Hunter 	asm volatile("vpcmpd $0x12,%zmm6,%zmm7,%k5");
29486c4d0b41SAdrian Hunter 	asm volatile("vpcmpq $0x12,%zmm6,%zmm7,%k5");
29496c4d0b41SAdrian Hunter 
29506c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 23 */
29516c4d0b41SAdrian Hunter 
29526c4d0b41SAdrian Hunter 	asm volatile("vshuff32x4 $0x12,%zmm5,%zmm6,%zmm7");
29536c4d0b41SAdrian Hunter 	asm volatile("vshuff64x2 $0x12,%zmm5,%zmm6,%zmm7");
29546c4d0b41SAdrian Hunter 
29556c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 25 */
29566c4d0b41SAdrian Hunter 
29576c4d0b41SAdrian Hunter 	asm volatile("vpternlogd $0x12,%zmm5,%zmm6,%zmm7");
29586c4d0b41SAdrian Hunter 	asm volatile("vpternlogq $0x12,%zmm5,%zmm6,%zmm7");
29596c4d0b41SAdrian Hunter 
29606c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 26 */
29616c4d0b41SAdrian Hunter 
29626c4d0b41SAdrian Hunter 	asm volatile("vgetmantps $0x12,%zmm6,%zmm7");
29636c4d0b41SAdrian Hunter 	asm volatile("vgetmantpd $0x12,%zmm6,%zmm7");
29646c4d0b41SAdrian Hunter 
29656c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 27 */
29666c4d0b41SAdrian Hunter 
29676c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
29686c4d0b41SAdrian Hunter 	asm volatile("vgetmantsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
29696c4d0b41SAdrian Hunter 
29706c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 38 */
29716c4d0b41SAdrian Hunter 
29726c4d0b41SAdrian Hunter 	asm volatile("vinserti128 $0x5,%xmm4,%ymm4,%ymm6");
29736c4d0b41SAdrian Hunter 	asm volatile("vinserti32x4 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
29746c4d0b41SAdrian Hunter 	asm volatile("vinserti64x2 $0x12,%xmm4,%zmm5,%zmm6{%k7}");
29756c4d0b41SAdrian Hunter 
29766c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 39 */
29776c4d0b41SAdrian Hunter 
29786c4d0b41SAdrian Hunter 	asm volatile("vextracti128 $0x5,%ymm4,%xmm6");
29796c4d0b41SAdrian Hunter 	asm volatile("vextracti32x4 $0x12,%zmm5,%xmm6{%k7}");
29806c4d0b41SAdrian Hunter 	asm volatile("vextracti64x2 $0x12,%zmm5,%xmm6{%k7}");
29816c4d0b41SAdrian Hunter 
29826c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3a */
29836c4d0b41SAdrian Hunter 
29846c4d0b41SAdrian Hunter 	asm volatile("vinserti32x8 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
29856c4d0b41SAdrian Hunter 	asm volatile("vinserti64x4 $0x12,%ymm5,%zmm6,%zmm7{%k7}");
29866c4d0b41SAdrian Hunter 
29876c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3b */
29886c4d0b41SAdrian Hunter 
29896c4d0b41SAdrian Hunter 	asm volatile("vextracti32x8 $0x12,%zmm6,%ymm7{%k7}");
29906c4d0b41SAdrian Hunter 	asm volatile("vextracti64x4 $0x12,%zmm6,%ymm7{%k7}");
29916c4d0b41SAdrian Hunter 
29926c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3e */
29936c4d0b41SAdrian Hunter 
29946c4d0b41SAdrian Hunter 	asm volatile("vpcmpub $0x12,%zmm6,%zmm7,%k5");
29956c4d0b41SAdrian Hunter 	asm volatile("vpcmpuw $0x12,%zmm6,%zmm7,%k5");
29966c4d0b41SAdrian Hunter 
29976c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 3f */
29986c4d0b41SAdrian Hunter 
29996c4d0b41SAdrian Hunter 	asm volatile("vpcmpb $0x12,%zmm6,%zmm7,%k5");
30006c4d0b41SAdrian Hunter 	asm volatile("vpcmpw $0x12,%zmm6,%zmm7,%k5");
30016c4d0b41SAdrian Hunter 
30026c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 42 */
30036c4d0b41SAdrian Hunter 
30046c4d0b41SAdrian Hunter 	asm volatile("vmpsadbw $0x5,%ymm4,%ymm6,%ymm2");
30056c4d0b41SAdrian Hunter 	asm volatile("vdbpsadbw $0x12,%zmm4,%zmm5,%zmm6");
30066c4d0b41SAdrian Hunter 
30076c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 43 */
30086c4d0b41SAdrian Hunter 
30096c4d0b41SAdrian Hunter 	asm volatile("vshufi32x4 $0x12,%zmm5,%zmm6,%zmm7");
30106c4d0b41SAdrian Hunter 	asm volatile("vshufi64x2 $0x12,%zmm5,%zmm6,%zmm7");
30116c4d0b41SAdrian Hunter 
30129adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 44 */
30139adab034SAdrian Hunter 
30149adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%xmm1,%xmm2,%xmm3");
30159adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%ymm1,%ymm2,%ymm3");
30169adab034SAdrian Hunter 	asm volatile("vpclmulqdq $0x12,%zmm1,%zmm2,%zmm3");
30179adab034SAdrian Hunter 
30186c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 50 */
30196c4d0b41SAdrian Hunter 
30206c4d0b41SAdrian Hunter 	asm volatile("vrangeps $0x12,%zmm5,%zmm6,%zmm7");
30216c4d0b41SAdrian Hunter 	asm volatile("vrangepd $0x12,%zmm5,%zmm6,%zmm7");
30226c4d0b41SAdrian Hunter 
30236c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 51 */
30246c4d0b41SAdrian Hunter 
30256c4d0b41SAdrian Hunter 	asm volatile("vrangess $0x12,%xmm5,%xmm6,%xmm7");
30266c4d0b41SAdrian Hunter 	asm volatile("vrangesd $0x12,%xmm5,%xmm6,%xmm7");
30276c4d0b41SAdrian Hunter 
30286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 54 */
30296c4d0b41SAdrian Hunter 
30306c4d0b41SAdrian Hunter 	asm volatile("vfixupimmps $0x12,%zmm5,%zmm6,%zmm7");
30316c4d0b41SAdrian Hunter 	asm volatile("vfixupimmpd $0x12,%zmm5,%zmm6,%zmm7");
30326c4d0b41SAdrian Hunter 
30336c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 55 */
30346c4d0b41SAdrian Hunter 
30356c4d0b41SAdrian Hunter 	asm volatile("vfixupimmss $0x12,%xmm5,%xmm6,%xmm7{%k7}");
30366c4d0b41SAdrian Hunter 	asm volatile("vfixupimmsd $0x12,%xmm5,%xmm6,%xmm7{%k7}");
30376c4d0b41SAdrian Hunter 
30386c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 56 */
30396c4d0b41SAdrian Hunter 
30406c4d0b41SAdrian Hunter 	asm volatile("vreduceps $0x12,%zmm6,%zmm7");
30416c4d0b41SAdrian Hunter 	asm volatile("vreducepd $0x12,%zmm6,%zmm7");
30426c4d0b41SAdrian Hunter 
30436c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 57 */
30446c4d0b41SAdrian Hunter 
30456c4d0b41SAdrian Hunter 	asm volatile("vreducess $0x12,%xmm5,%xmm6,%xmm7");
30466c4d0b41SAdrian Hunter 	asm volatile("vreducesd $0x12,%xmm5,%xmm6,%xmm7");
30476c4d0b41SAdrian Hunter 
30486c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 66 */
30496c4d0b41SAdrian Hunter 
30506c4d0b41SAdrian Hunter 	asm volatile("vfpclassps $0x12,%zmm7,%k5");
30516c4d0b41SAdrian Hunter 	asm volatile("vfpclasspd $0x12,%zmm7,%k5");
30526c4d0b41SAdrian Hunter 
30536c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 3a 67 */
30546c4d0b41SAdrian Hunter 
30556c4d0b41SAdrian Hunter 	asm volatile("vfpclassss $0x12,%xmm7,%k5");
30566c4d0b41SAdrian Hunter 	asm volatile("vfpclasssd $0x12,%xmm7,%k5");
30576c4d0b41SAdrian Hunter 
30589adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 70 */
30599adab034SAdrian Hunter 
30609adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%xmm1,%xmm2,%xmm3");
30619adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%ymm1,%ymm2,%ymm3");
30629adab034SAdrian Hunter 	asm volatile("vpshldw $0x12,%zmm1,%zmm2,%zmm3");
30639adab034SAdrian Hunter 
30649adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 71 */
30659adab034SAdrian Hunter 
30669adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%xmm1,%xmm2,%xmm3");
30679adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%ymm1,%ymm2,%ymm3");
30689adab034SAdrian Hunter 	asm volatile("vpshldd $0x12,%zmm1,%zmm2,%zmm3");
30699adab034SAdrian Hunter 
30709adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%xmm1,%xmm2,%xmm3");
30719adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%ymm1,%ymm2,%ymm3");
30729adab034SAdrian Hunter 	asm volatile("vpshldq $0x12,%zmm1,%zmm2,%zmm3");
30739adab034SAdrian Hunter 
30749adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 72 */
30759adab034SAdrian Hunter 
30769adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%xmm1,%xmm2,%xmm3");
30779adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%ymm1,%ymm2,%ymm3");
30789adab034SAdrian Hunter 	asm volatile("vpshrdw $0x12,%zmm1,%zmm2,%zmm3");
30799adab034SAdrian Hunter 
30809adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a 73 */
30819adab034SAdrian Hunter 
30829adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%xmm1,%xmm2,%xmm3");
30839adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%ymm1,%ymm2,%ymm3");
30849adab034SAdrian Hunter 	asm volatile("vpshrdd $0x12,%zmm1,%zmm2,%zmm3");
30859adab034SAdrian Hunter 
30869adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%xmm1,%xmm2,%xmm3");
30879adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%ymm1,%ymm2,%ymm3");
30889adab034SAdrian Hunter 	asm volatile("vpshrdq $0x12,%zmm1,%zmm2,%zmm3");
30899adab034SAdrian Hunter 
30909adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a ce */
30919adab034SAdrian Hunter 
30929adab034SAdrian Hunter 	asm volatile("gf2p8affineqb $0x12,%xmm1,%xmm3");
30939adab034SAdrian Hunter 
30949adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%xmm1,%xmm2,%xmm3");
30959adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%ymm1,%ymm2,%ymm3");
30969adab034SAdrian Hunter 	asm volatile("vgf2p8affineqb $0x12,%zmm1,%zmm2,%zmm3");
30979adab034SAdrian Hunter 
30989adab034SAdrian Hunter 	/* AVX-512: Op code 0f 3a cf */
30999adab034SAdrian Hunter 
31009adab034SAdrian Hunter 	asm volatile("gf2p8affineinvqb $0x12,%xmm1,%xmm3");
31019adab034SAdrian Hunter 
31029adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%xmm1,%xmm2,%xmm3");
31039adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%ymm1,%ymm2,%ymm3");
31049adab034SAdrian Hunter 	asm volatile("vgf2p8affineinvqb $0x12,%zmm1,%zmm2,%zmm3");
31059adab034SAdrian Hunter 
31066c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 72 (Grp13) */
31076c4d0b41SAdrian Hunter 
31086c4d0b41SAdrian Hunter 	asm volatile("vprord $0x12,%zmm5,%zmm6");
31096c4d0b41SAdrian Hunter 	asm volatile("vprorq $0x12,%zmm5,%zmm6");
31106c4d0b41SAdrian Hunter 	asm volatile("vprold $0x12,%zmm5,%zmm6");
31116c4d0b41SAdrian Hunter 	asm volatile("vprolq $0x12,%zmm5,%zmm6");
31126c4d0b41SAdrian Hunter 	asm volatile("psrad  $0x2,%mm6");
31136c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%ymm6,%ymm2");
31146c4d0b41SAdrian Hunter 	asm volatile("vpsrad $0x5,%zmm6,%zmm2");
31156c4d0b41SAdrian Hunter 	asm volatile("vpsraq $0x5,%zmm6,%zmm2");
31166c4d0b41SAdrian Hunter 
31176c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c6 (Grp18) */
31186c4d0b41SAdrian Hunter 
31196c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
31206c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
31216c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
31226c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
31236c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dps 0x7b(%ebp,%zmm7,8){%k1}");
31246c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0dpd 0x7b(%ebp,%ymm7,8){%k1}");
31256c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dps 0x7b(%ebp,%zmm7,8){%k1}");
31266c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1dpd 0x7b(%ebp,%ymm7,8){%k1}");
31276c4d0b41SAdrian Hunter 
31286c4d0b41SAdrian Hunter 	/* AVX-512: Op code 0f 38 c7 (Grp19) */
31296c4d0b41SAdrian Hunter 
31306c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
31316c4d0b41SAdrian Hunter 	asm volatile("vgatherpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
31326c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
31336c4d0b41SAdrian Hunter 	asm volatile("vgatherpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
31346c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qps 0x7b(%ebp,%zmm7,8){%k1}");
31356c4d0b41SAdrian Hunter 	asm volatile("vscatterpf0qpd 0x7b(%ebp,%zmm7,8){%k1}");
31366c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qps 0x7b(%ebp,%zmm7,8){%k1}");
31376c4d0b41SAdrian Hunter 	asm volatile("vscatterpf1qpd 0x7b(%ebp,%zmm7,8){%k1}");
31386c4d0b41SAdrian Hunter 
31396c4d0b41SAdrian Hunter 	/* AVX-512: Examples */
31406c4d0b41SAdrian Hunter 
31416c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6");
31426c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}");
31436c4d0b41SAdrian Hunter 	asm volatile("vaddpd %zmm4,%zmm5,%zmm6{%k7}{z}");
31446c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rn-sae},%zmm4,%zmm5,%zmm6");
31456c4d0b41SAdrian Hunter 	asm volatile("vaddpd {ru-sae},%zmm4,%zmm5,%zmm6");
31466c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rd-sae},%zmm4,%zmm5,%zmm6");
31476c4d0b41SAdrian Hunter 	asm volatile("vaddpd {rz-sae},%zmm4,%zmm5,%zmm6");
31486c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%ecx),%zmm5,%zmm6");
31496c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x123(%eax,%ecx,8),%zmm5,%zmm6");
31506c4d0b41SAdrian Hunter 	asm volatile("vaddpd (%ecx){1to8},%zmm5,%zmm6");
31516c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x1fc0(%edx),%zmm5,%zmm6");
31526c4d0b41SAdrian Hunter 	asm volatile("vaddpd 0x3f8(%edx){1to8},%zmm5,%zmm6");
31536c4d0b41SAdrian Hunter 	asm volatile("vcmpeq_uqps 0x1fc(%edx){1to16},%zmm6,%k5");
31546c4d0b41SAdrian Hunter 	asm volatile("vcmpltsd 0x123(%eax,%ecx,8),%xmm3,%k5{%k7}");
31556c4d0b41SAdrian Hunter 	asm volatile("vcmplesd {sae},%xmm4,%xmm5,%k5{%k7}");
31566c4d0b41SAdrian Hunter 	asm volatile("vgetmantss $0x5b,0x123(%eax,%ecx,8),%xmm4,%xmm5{%k7}");
31576c4d0b41SAdrian Hunter 
3158d8b167f9SMatt Fleming 	/* bndmk m32, bnd */
3159d8b167f9SMatt Fleming 
3160d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax), %bnd0");
3161d8b167f9SMatt Fleming 	asm volatile("bndmk (0x12345678), %bnd0");
3162d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax), %bnd3");
3163d8b167f9SMatt Fleming 	asm volatile("bndmk (%ecx,%eax,1), %bnd0");
3164d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
3165d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax,%ecx,1), %bnd0");
3166d8b167f9SMatt Fleming 	asm volatile("bndmk (%eax,%ecx,8), %bnd0");
3167d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax), %bnd0");
3168d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ebp), %bnd0");
3169d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
3170d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
3171d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
3172d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
3173d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax), %bnd0");
3174d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ebp), %bnd0");
3175d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
3176d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
3177d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
3178d8b167f9SMatt Fleming 	asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
3179d8b167f9SMatt Fleming 
3180d8b167f9SMatt Fleming 	/* bndcl r/m32, bnd */
3181d8b167f9SMatt Fleming 
3182d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax), %bnd0");
3183d8b167f9SMatt Fleming 	asm volatile("bndcl (0x12345678), %bnd0");
3184d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax), %bnd3");
3185d8b167f9SMatt Fleming 	asm volatile("bndcl (%ecx,%eax,1), %bnd0");
3186d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
3187d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax,%ecx,1), %bnd0");
3188d8b167f9SMatt Fleming 	asm volatile("bndcl (%eax,%ecx,8), %bnd0");
3189d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax), %bnd0");
3190d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ebp), %bnd0");
3191d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
3192d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
3193d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
3194d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
3195d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax), %bnd0");
3196d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ebp), %bnd0");
3197d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
3198d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
3199d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
3200d8b167f9SMatt Fleming 	asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
3201d8b167f9SMatt Fleming 	asm volatile("bndcl %eax, %bnd0");
3202d8b167f9SMatt Fleming 
3203d8b167f9SMatt Fleming 	/* bndcu r/m32, bnd */
3204d8b167f9SMatt Fleming 
3205d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax), %bnd0");
3206d8b167f9SMatt Fleming 	asm volatile("bndcu (0x12345678), %bnd0");
3207d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax), %bnd3");
3208d8b167f9SMatt Fleming 	asm volatile("bndcu (%ecx,%eax,1), %bnd0");
3209d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
3210d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax,%ecx,1), %bnd0");
3211d8b167f9SMatt Fleming 	asm volatile("bndcu (%eax,%ecx,8), %bnd0");
3212d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax), %bnd0");
3213d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ebp), %bnd0");
3214d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
3215d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
3216d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
3217d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
3218d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax), %bnd0");
3219d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ebp), %bnd0");
3220d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
3221d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
3222d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
3223d8b167f9SMatt Fleming 	asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
3224d8b167f9SMatt Fleming 	asm volatile("bndcu %eax, %bnd0");
3225d8b167f9SMatt Fleming 
3226d8b167f9SMatt Fleming 	/* bndcn r/m32, bnd */
3227d8b167f9SMatt Fleming 
3228d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax), %bnd0");
3229d8b167f9SMatt Fleming 	asm volatile("bndcn (0x12345678), %bnd0");
3230d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax), %bnd3");
3231d8b167f9SMatt Fleming 	asm volatile("bndcn (%ecx,%eax,1), %bnd0");
3232d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
3233d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax,%ecx,1), %bnd0");
3234d8b167f9SMatt Fleming 	asm volatile("bndcn (%eax,%ecx,8), %bnd0");
3235d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax), %bnd0");
3236d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ebp), %bnd0");
3237d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
3238d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
3239d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
3240d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
3241d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax), %bnd0");
3242d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ebp), %bnd0");
3243d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
3244d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
3245d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
3246d8b167f9SMatt Fleming 	asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
3247d8b167f9SMatt Fleming 	asm volatile("bndcn %eax, %bnd0");
3248d8b167f9SMatt Fleming 
3249d8b167f9SMatt Fleming 	/* bndmov m64, bnd */
3250d8b167f9SMatt Fleming 
3251d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax), %bnd0");
3252d8b167f9SMatt Fleming 	asm volatile("bndmov (0x12345678), %bnd0");
3253d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax), %bnd3");
3254d8b167f9SMatt Fleming 	asm volatile("bndmov (%ecx,%eax,1), %bnd0");
3255d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
3256d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax,%ecx,1), %bnd0");
3257d8b167f9SMatt Fleming 	asm volatile("bndmov (%eax,%ecx,8), %bnd0");
3258d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax), %bnd0");
3259d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ebp), %bnd0");
3260d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
3261d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
3262d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
3263d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
3264d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax), %bnd0");
3265d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ebp), %bnd0");
3266d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
3267d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
3268d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
3269d8b167f9SMatt Fleming 	asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
3270d8b167f9SMatt Fleming 
3271d8b167f9SMatt Fleming 	/* bndmov bnd, m64 */
3272d8b167f9SMatt Fleming 
3273d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax)");
3274d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (0x12345678)");
3275d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd3, (%eax)");
3276d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
3277d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
3278d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
3279d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
3280d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax)");
3281d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ebp)");
3282d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
3283d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
3284d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
3285d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
3286d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax)");
3287d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
3288d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
3289d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
3290d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
3291d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
3292d8b167f9SMatt Fleming 
3293d8b167f9SMatt Fleming 	/* bndmov bnd2, bnd1 */
3294d8b167f9SMatt Fleming 
3295d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd0, %bnd1");
3296d8b167f9SMatt Fleming 	asm volatile("bndmov %bnd1, %bnd0");
3297d8b167f9SMatt Fleming 
3298d8b167f9SMatt Fleming 	/* bndldx mib, bnd */
3299d8b167f9SMatt Fleming 
3300d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax), %bnd0");
3301d8b167f9SMatt Fleming 	asm volatile("bndldx (0x12345678), %bnd0");
3302d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax), %bnd3");
3303d8b167f9SMatt Fleming 	asm volatile("bndldx (%ecx,%eax,1), %bnd0");
3304d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
3305d8b167f9SMatt Fleming 	asm volatile("bndldx (%eax,%ecx,1), %bnd0");
3306d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%eax), %bnd0");
3307d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ebp), %bnd0");
3308d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
3309d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
3310d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
3311d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%eax), %bnd0");
3312d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ebp), %bnd0");
3313d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
3314d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
3315d8b167f9SMatt Fleming 	asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
3316d8b167f9SMatt Fleming 
3317d8b167f9SMatt Fleming 	/* bndstx bnd, mib */
3318d8b167f9SMatt Fleming 
3319d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%eax)");
3320d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (0x12345678)");
3321d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd3, (%eax)");
3322d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
3323d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
3324d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
3325d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%eax)");
3326d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ebp)");
3327d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
3328d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
3329d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
3330d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%eax)");
3331d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
3332d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
3333d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
3334d8b167f9SMatt Fleming 	asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
3335d8b167f9SMatt Fleming 
3336d8b167f9SMatt Fleming 	/* bnd prefix on call, ret, jmp and all jcc */
3337d8b167f9SMatt Fleming 
3338d8b167f9SMatt Fleming 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
3339d8b167f9SMatt Fleming 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
3340d8b167f9SMatt Fleming 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
3341d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3342d8b167f9SMatt Fleming 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
3343d8b167f9SMatt Fleming 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
3344d8b167f9SMatt Fleming 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
3345d8b167f9SMatt Fleming 
3346d8b167f9SMatt Fleming 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
3347d8b167f9SMatt Fleming 
3348d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
3349d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
3350d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
3351d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
3352d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
3353d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
3354d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
3355d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
3356d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
3357d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
3358d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
3359d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
3360d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
3361d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
3362d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
3363d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
3364d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
3365d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
3366d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
3367d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
3368d8b167f9SMatt Fleming 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
3369d8b167f9SMatt Fleming 
3370d8b167f9SMatt Fleming 	/* sha1nexte xmm2/m128, xmm1 */
3371d8b167f9SMatt Fleming 
3372d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm1, %xmm0");
3373d8b167f9SMatt Fleming 	asm volatile("sha1nexte %xmm7, %xmm2");
3374d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax), %xmm0");
3375d8b167f9SMatt Fleming 	asm volatile("sha1nexte (0x12345678), %xmm0");
3376d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax), %xmm3");
3377d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
3378d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
3379d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
3380d8b167f9SMatt Fleming 	asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
3381d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax), %xmm0");
3382d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ebp), %xmm0");
3383d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
3384d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
3385d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
3386d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
3387d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
3388d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
3389d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
3390d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
3391d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
3392d8b167f9SMatt Fleming 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
3393d8b167f9SMatt Fleming 
3394d8b167f9SMatt Fleming 	/* sha1msg1 xmm2/m128, xmm1 */
3395d8b167f9SMatt Fleming 
3396d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm1, %xmm0");
3397d8b167f9SMatt Fleming 	asm volatile("sha1msg1 %xmm7, %xmm2");
3398d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax), %xmm0");
3399d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (0x12345678), %xmm0");
3400d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax), %xmm3");
3401d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
3402d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
3403d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
3404d8b167f9SMatt Fleming 	asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
3405d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax), %xmm0");
3406d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ebp), %xmm0");
3407d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
3408d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
3409d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
3410d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
3411d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
3412d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
3413d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
3414d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
3415d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
3416d8b167f9SMatt Fleming 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
3417d8b167f9SMatt Fleming 
3418d8b167f9SMatt Fleming 	/* sha1msg2 xmm2/m128, xmm1 */
3419d8b167f9SMatt Fleming 
3420d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm1, %xmm0");
3421d8b167f9SMatt Fleming 	asm volatile("sha1msg2 %xmm7, %xmm2");
3422d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax), %xmm0");
3423d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (0x12345678), %xmm0");
3424d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax), %xmm3");
3425d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
3426d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
3427d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
3428d8b167f9SMatt Fleming 	asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
3429d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax), %xmm0");
3430d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ebp), %xmm0");
3431d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
3432d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
3433d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
3434d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
3435d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
3436d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
3437d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
3438d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
3439d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
3440d8b167f9SMatt Fleming 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
3441d8b167f9SMatt Fleming 
3442d8b167f9SMatt Fleming 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
3443d8b167f9SMatt Fleming 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
3444d8b167f9SMatt Fleming 
3445d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm4, %xmm1");
3446d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 %xmm7, %xmm2");
3447d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax), %xmm1");
3448d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
3449d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax), %xmm3");
3450d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
3451d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
3452d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
3453d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
3454d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax), %xmm1");
3455d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
3456d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
3457d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
3458d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
3459d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
3460d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
3461d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
3462d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
3463d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
3464d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
3465d8b167f9SMatt Fleming 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
3466d8b167f9SMatt Fleming 
3467d8b167f9SMatt Fleming 	/* sha256msg1 xmm2/m128, xmm1 */
3468d8b167f9SMatt Fleming 
3469d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm1, %xmm0");
3470d8b167f9SMatt Fleming 	asm volatile("sha256msg1 %xmm7, %xmm2");
3471d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax), %xmm0");
3472d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (0x12345678), %xmm0");
3473d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax), %xmm3");
3474d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
3475d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
3476d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
3477d8b167f9SMatt Fleming 	asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
3478d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax), %xmm0");
3479d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ebp), %xmm0");
3480d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
3481d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
3482d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
3483d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
3484d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
3485d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
3486d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
3487d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
3488d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
3489d8b167f9SMatt Fleming 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
3490d8b167f9SMatt Fleming 
3491d8b167f9SMatt Fleming 	/* sha256msg2 xmm2/m128, xmm1 */
3492d8b167f9SMatt Fleming 
3493d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm1, %xmm0");
3494d8b167f9SMatt Fleming 	asm volatile("sha256msg2 %xmm7, %xmm2");
3495d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax), %xmm0");
3496d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (0x12345678), %xmm0");
3497d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax), %xmm3");
3498d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
3499d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
3500d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
3501d8b167f9SMatt Fleming 	asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
3502d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax), %xmm0");
3503d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ebp), %xmm0");
3504d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
3505d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
3506d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
3507d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
3508d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
3509d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
3510d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
3511d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
3512d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
3513d8b167f9SMatt Fleming 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
3514d8b167f9SMatt Fleming 
3515d8b167f9SMatt Fleming 	/* clflushopt m8 */
3516d8b167f9SMatt Fleming 
3517d8b167f9SMatt Fleming 	asm volatile("clflushopt (%eax)");
3518d8b167f9SMatt Fleming 	asm volatile("clflushopt (0x12345678)");
3519d8b167f9SMatt Fleming 	asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
3520d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clflushopt */
3521d8b167f9SMatt Fleming 	asm volatile("clflush (%eax)");
3522d8b167f9SMatt Fleming 	asm volatile("sfence");
3523d8b167f9SMatt Fleming 
3524d8b167f9SMatt Fleming 	/* clwb m8 */
3525d8b167f9SMatt Fleming 
3526d8b167f9SMatt Fleming 	asm volatile("clwb (%eax)");
3527d8b167f9SMatt Fleming 	asm volatile("clwb (0x12345678)");
3528d8b167f9SMatt Fleming 	asm volatile("clwb 0x12345678(%eax,%ecx,8)");
3529d8b167f9SMatt Fleming 	/* Also check instructions in the same group encoding as clwb */
3530d8b167f9SMatt Fleming 	asm volatile("xsaveopt (%eax)");
3531d8b167f9SMatt Fleming 	asm volatile("mfence");
3532d8b167f9SMatt Fleming 
35331e5f0154SAdrian Hunter 	/* cldemote m8 */
35341e5f0154SAdrian Hunter 
35351e5f0154SAdrian Hunter 	asm volatile("cldemote (%eax)");
35361e5f0154SAdrian Hunter 	asm volatile("cldemote (0x12345678)");
35371e5f0154SAdrian Hunter 	asm volatile("cldemote 0x12345678(%eax,%ecx,8)");
35381e5f0154SAdrian Hunter 
3539d8b167f9SMatt Fleming 	/* xsavec mem */
3540d8b167f9SMatt Fleming 
3541d8b167f9SMatt Fleming 	asm volatile("xsavec (%eax)");
3542d8b167f9SMatt Fleming 	asm volatile("xsavec (0x12345678)");
3543d8b167f9SMatt Fleming 	asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
3544d8b167f9SMatt Fleming 
3545d8b167f9SMatt Fleming 	/* xsaves mem */
3546d8b167f9SMatt Fleming 
3547d8b167f9SMatt Fleming 	asm volatile("xsaves (%eax)");
3548d8b167f9SMatt Fleming 	asm volatile("xsaves (0x12345678)");
3549d8b167f9SMatt Fleming 	asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
3550d8b167f9SMatt Fleming 
3551d8b167f9SMatt Fleming 	/* xrstors mem */
3552d8b167f9SMatt Fleming 
3553d8b167f9SMatt Fleming 	asm volatile("xrstors (%eax)");
3554d8b167f9SMatt Fleming 	asm volatile("xrstors (0x12345678)");
3555d8b167f9SMatt Fleming 	asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
3556d8b167f9SMatt Fleming 
3557d5b1a5f6SAdrian Hunter 	/* ptwrite */
3558d5b1a5f6SAdrian Hunter 
3559d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (%eax)");
3560d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite (0x12345678)");
3561d5b1a5f6SAdrian Hunter 	asm volatile("ptwrite 0x12345678(%eax,%ecx,8)");
3562d5b1a5f6SAdrian Hunter 
3563d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (%eax)");
3564d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel (0x12345678)");
3565d5b1a5f6SAdrian Hunter 	asm volatile("ptwritel 0x12345678(%eax,%ecx,8)");
3566d5b1a5f6SAdrian Hunter 
35671e5f0154SAdrian Hunter 	/* tpause */
35681e5f0154SAdrian Hunter 
35691e5f0154SAdrian Hunter 	asm volatile("tpause %ebx");
35701e5f0154SAdrian Hunter 
35711e5f0154SAdrian Hunter 	/* umonitor */
35721e5f0154SAdrian Hunter 
35731e5f0154SAdrian Hunter 	asm volatile("umonitor %ax");
35741e5f0154SAdrian Hunter 	asm volatile("umonitor %eax");
35751e5f0154SAdrian Hunter 
35761e5f0154SAdrian Hunter 	/* umwait */
35771e5f0154SAdrian Hunter 
35781e5f0154SAdrian Hunter 	asm volatile("umwait %eax");
35791e5f0154SAdrian Hunter 
35801e5f0154SAdrian Hunter 	/* movdiri */
35811e5f0154SAdrian Hunter 
35821e5f0154SAdrian Hunter 	asm volatile("movdiri %eax,(%ebx)");
35831e5f0154SAdrian Hunter 	asm volatile("movdiri %ecx,0x12345678(%eax)");
35841e5f0154SAdrian Hunter 
35851e5f0154SAdrian Hunter 	/* movdir64b */
35861e5f0154SAdrian Hunter 
35871e5f0154SAdrian Hunter 	asm volatile("movdir64b (%eax),%ebx");
35881e5f0154SAdrian Hunter 	asm volatile("movdir64b 0x12345678(%eax),%ecx");
35891e5f0154SAdrian Hunter 	asm volatile("movdir64b (%si),%bx");
35901e5f0154SAdrian Hunter 	asm volatile("movdir64b 0x1234(%si),%cx");
35911e5f0154SAdrian Hunter 
35921e5f0154SAdrian Hunter 	/* enqcmd */
35931e5f0154SAdrian Hunter 
35941e5f0154SAdrian Hunter 	asm volatile("enqcmd (%eax),%ebx");
35951e5f0154SAdrian Hunter 	asm volatile("enqcmd 0x12345678(%eax),%ecx");
35961e5f0154SAdrian Hunter 	asm volatile("enqcmd (%si),%bx");
35971e5f0154SAdrian Hunter 	asm volatile("enqcmd 0x1234(%si),%cx");
35981e5f0154SAdrian Hunter 
35991e5f0154SAdrian Hunter 	/* enqcmds */
36001e5f0154SAdrian Hunter 
36011e5f0154SAdrian Hunter 	asm volatile("enqcmds (%eax),%ebx");
36021e5f0154SAdrian Hunter 	asm volatile("enqcmds 0x12345678(%eax),%ecx");
36031e5f0154SAdrian Hunter 	asm volatile("enqcmds (%si),%bx");
36041e5f0154SAdrian Hunter 	asm volatile("enqcmds 0x1234(%si),%cx");
36051e5f0154SAdrian Hunter 
36061032f326SAdrian Hunter 	/* incsspd */
36071032f326SAdrian Hunter 
36081032f326SAdrian Hunter 	asm volatile("incsspd %eax");
36091032f326SAdrian Hunter 	/* Also check instructions in the same group encoding as incsspd */
36101032f326SAdrian Hunter 	asm volatile("xrstor (%eax)");
36111032f326SAdrian Hunter 	asm volatile("xrstor (0x12345678)");
36121032f326SAdrian Hunter 	asm volatile("xrstor 0x12345678(%eax,%ecx,8)");
36131032f326SAdrian Hunter 	asm volatile("lfence");
36141032f326SAdrian Hunter 
36151032f326SAdrian Hunter 	/* rdsspd */
36161032f326SAdrian Hunter 
36171032f326SAdrian Hunter 	asm volatile("rdsspd %eax");
36181032f326SAdrian Hunter 
36191032f326SAdrian Hunter 	/* saveprevssp */
36201032f326SAdrian Hunter 
36211032f326SAdrian Hunter 	asm volatile("saveprevssp");
36221032f326SAdrian Hunter 
36231032f326SAdrian Hunter 	/* rstorssp */
36241032f326SAdrian Hunter 
36251032f326SAdrian Hunter 	asm volatile("rstorssp (%eax)");
36261032f326SAdrian Hunter 	asm volatile("rstorssp (0x12345678)");
36271032f326SAdrian Hunter 	asm volatile("rstorssp 0x12345678(%eax,%ecx,8)");
36281032f326SAdrian Hunter 
36291032f326SAdrian Hunter 	/* wrssd */
36301032f326SAdrian Hunter 
36311032f326SAdrian Hunter 	asm volatile("wrssd %ecx,(%eax)");
36321032f326SAdrian Hunter 	asm volatile("wrssd %edx,(0x12345678)");
36331032f326SAdrian Hunter 	asm volatile("wrssd %edx,0x12345678(%eax,%ecx,8)");
36341032f326SAdrian Hunter 
36351032f326SAdrian Hunter 	/* wrussd */
36361032f326SAdrian Hunter 
36371032f326SAdrian Hunter 	asm volatile("wrussd %ecx,(%eax)");
36381032f326SAdrian Hunter 	asm volatile("wrussd %edx,(0x12345678)");
36391032f326SAdrian Hunter 	asm volatile("wrussd %edx,0x12345678(%eax,%ecx,8)");
36401032f326SAdrian Hunter 
36411032f326SAdrian Hunter 	/* setssbsy */
36421032f326SAdrian Hunter 
36431032f326SAdrian Hunter 	asm volatile("setssbsy");
36441032f326SAdrian Hunter 	/* Also check instructions in the same group encoding as setssbsy */
36451032f326SAdrian Hunter 	asm volatile("rdpkru");
36461032f326SAdrian Hunter 	asm volatile("wrpkru");
36471032f326SAdrian Hunter 
36481032f326SAdrian Hunter 	/* clrssbsy */
36491032f326SAdrian Hunter 
36501032f326SAdrian Hunter 	asm volatile("clrssbsy (%eax)");
36511032f326SAdrian Hunter 	asm volatile("clrssbsy (0x12345678)");
36521032f326SAdrian Hunter 	asm volatile("clrssbsy 0x12345678(%eax,%ecx,8)");
36531032f326SAdrian Hunter 
36541032f326SAdrian Hunter 	/* endbr32/64 */
36551032f326SAdrian Hunter 
36561032f326SAdrian Hunter 	asm volatile("endbr32");
36571032f326SAdrian Hunter 	asm volatile("endbr64");
36581032f326SAdrian Hunter 
36591032f326SAdrian Hunter 	/* call with/without notrack prefix */
36601032f326SAdrian Hunter 
36611032f326SAdrian Hunter 	asm volatile("call *%eax");				/* Expecting: call indirect 0 */
36621032f326SAdrian Hunter 	asm volatile("call *(%eax)");				/* Expecting: call indirect 0 */
36631032f326SAdrian Hunter 	asm volatile("call *(0x12345678)");			/* Expecting: call indirect 0 */
36641032f326SAdrian Hunter 	asm volatile("call *0x12345678(%eax,%ecx,8)");		/* Expecting: call indirect 0 */
36651032f326SAdrian Hunter 
36661032f326SAdrian Hunter 	asm volatile("bnd call *%eax");				/* Expecting: call indirect 0 */
36671032f326SAdrian Hunter 	asm volatile("bnd call *(%eax)");			/* Expecting: call indirect 0 */
36681032f326SAdrian Hunter 	asm volatile("bnd call *(0x12345678)");			/* Expecting: call indirect 0 */
36691032f326SAdrian Hunter 	asm volatile("bnd call *0x12345678(%eax,%ecx,8)");	/* Expecting: call indirect 0 */
36701032f326SAdrian Hunter 
36711032f326SAdrian Hunter 	asm volatile("notrack call *%eax");			/* Expecting: call indirect 0 */
36721032f326SAdrian Hunter 	asm volatile("notrack call *(%eax)");			/* Expecting: call indirect 0 */
36731032f326SAdrian Hunter 	asm volatile("notrack call *(0x12345678)");		/* Expecting: call indirect 0 */
36741032f326SAdrian Hunter 	asm volatile("notrack call *0x12345678(%eax,%ecx,8)");	/* Expecting: call indirect 0 */
36751032f326SAdrian Hunter 
36761032f326SAdrian Hunter 	asm volatile("notrack bnd call *%eax");			/* Expecting: call indirect 0 */
36771032f326SAdrian Hunter 	asm volatile("notrack bnd call *(%eax)");		/* Expecting: call indirect 0 */
36781032f326SAdrian Hunter 	asm volatile("notrack bnd call *(0x12345678)");		/* Expecting: call indirect 0 */
36791032f326SAdrian Hunter 	asm volatile("notrack bnd call *0x12345678(%eax,%ecx,8)"); /* Expecting: call indirect 0 */
36801032f326SAdrian Hunter 
36811032f326SAdrian Hunter 	/* jmp with/without notrack prefix */
36821032f326SAdrian Hunter 
36831032f326SAdrian Hunter 	asm volatile("jmp *%eax");				/* Expecting: jmp indirect 0 */
36841032f326SAdrian Hunter 	asm volatile("jmp *(%eax)");				/* Expecting: jmp indirect 0 */
36851032f326SAdrian Hunter 	asm volatile("jmp *(0x12345678)");			/* Expecting: jmp indirect 0 */
36861032f326SAdrian Hunter 	asm volatile("jmp *0x12345678(%eax,%ecx,8)");		/* Expecting: jmp indirect 0 */
36871032f326SAdrian Hunter 
36881032f326SAdrian Hunter 	asm volatile("bnd jmp *%eax");				/* Expecting: jmp indirect 0 */
36891032f326SAdrian Hunter 	asm volatile("bnd jmp *(%eax)");			/* Expecting: jmp indirect 0 */
36901032f326SAdrian Hunter 	asm volatile("bnd jmp *(0x12345678)");			/* Expecting: jmp indirect 0 */
36911032f326SAdrian Hunter 	asm volatile("bnd jmp *0x12345678(%eax,%ecx,8)");	/* Expecting: jmp indirect 0 */
36921032f326SAdrian Hunter 
36931032f326SAdrian Hunter 	asm volatile("notrack jmp *%eax");			/* Expecting: jmp indirect 0 */
36941032f326SAdrian Hunter 	asm volatile("notrack jmp *(%eax)");			/* Expecting: jmp indirect 0 */
36951032f326SAdrian Hunter 	asm volatile("notrack jmp *(0x12345678)");		/* Expecting: jmp indirect 0 */
36961032f326SAdrian Hunter 	asm volatile("notrack jmp *0x12345678(%eax,%ecx,8)");	/* Expecting: jmp indirect 0 */
36971032f326SAdrian Hunter 
36981032f326SAdrian Hunter 	asm volatile("notrack bnd jmp *%eax");			/* Expecting: jmp indirect 0 */
36991032f326SAdrian Hunter 	asm volatile("notrack bnd jmp *(%eax)");		/* Expecting: jmp indirect 0 */
37001032f326SAdrian Hunter 	asm volatile("notrack bnd jmp *(0x12345678)");		/* Expecting: jmp indirect 0 */
37011032f326SAdrian Hunter 	asm volatile("notrack bnd jmp *0x12345678(%eax,%ecx,8)"); /* Expecting: jmp indirect 0 */
37021032f326SAdrian Hunter 
3703d8b167f9SMatt Fleming #endif /* #ifndef __x86_64__ */
3704d8b167f9SMatt Fleming 
3705*a6ea1142SAdrian Hunter 	/* Prediction history reset */
3706*a6ea1142SAdrian Hunter 
3707*a6ea1142SAdrian Hunter 	asm volatile("hreset $0");
3708*a6ea1142SAdrian Hunter 
3709*a6ea1142SAdrian Hunter 	/* Serialize instruction execution */
3710*a6ea1142SAdrian Hunter 
3711*a6ea1142SAdrian Hunter 	asm volatile("serialize");
3712*a6ea1142SAdrian Hunter 
3713*a6ea1142SAdrian Hunter 	/* TSX suspend load address tracking */
3714*a6ea1142SAdrian Hunter 
3715*a6ea1142SAdrian Hunter 	asm volatile("xresldtrk");
3716*a6ea1142SAdrian Hunter 	asm volatile("xsusldtrk");
3717*a6ea1142SAdrian Hunter 
37181e5f0154SAdrian Hunter 	/* SGX */
37191e5f0154SAdrian Hunter 
37201e5f0154SAdrian Hunter 	asm volatile("encls");
37211e5f0154SAdrian Hunter 	asm volatile("enclu");
37221e5f0154SAdrian Hunter 	asm volatile("enclv");
37231e5f0154SAdrian Hunter 
37241e5f0154SAdrian Hunter 	/* pconfig */
37251e5f0154SAdrian Hunter 
37261e5f0154SAdrian Hunter 	asm volatile("pconfig");
37271e5f0154SAdrian Hunter 
37281e5f0154SAdrian Hunter 	/* wbnoinvd */
37291e5f0154SAdrian Hunter 
37301e5f0154SAdrian Hunter 	asm volatile("wbnoinvd");
37311e5f0154SAdrian Hunter 
3732d8b167f9SMatt Fleming 	/* Following line is a marker for the awk script - do not change */
3733d8b167f9SMatt Fleming 	asm volatile("rdtsc"); /* Stop here */
3734d8b167f9SMatt Fleming 
3735d8b167f9SMatt Fleming 	return 0;
3736d8b167f9SMatt Fleming }
3737