1# Check 64bit AVX512{VBMI,VL} instructions
2
3	.allow_index_reg
4	.text
5_start:
6	vpermb	%xmm28, %xmm29, %xmm30	 # AVX512{VBMI,VL}
7	vpermb	%xmm28, %xmm29, %xmm30{%k7}	 # AVX512{VBMI,VL}
8	vpermb	%xmm28, %xmm29, %xmm30{%k7}{z}	 # AVX512{VBMI,VL}
9	vpermb	(%rcx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
10	vpermb	0x123(%rax,%r14,8), %xmm29, %xmm30	 # AVX512{VBMI,VL}
11	vpermb	2032(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
12	vpermb	2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
13	vpermb	-2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
14	vpermb	-2064(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
15	vpermb	%ymm28, %ymm29, %ymm30	 # AVX512{VBMI,VL}
16	vpermb	%ymm28, %ymm29, %ymm30{%k7}	 # AVX512{VBMI,VL}
17	vpermb	%ymm28, %ymm29, %ymm30{%k7}{z}	 # AVX512{VBMI,VL}
18	vpermb	(%rcx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
19	vpermb	0x123(%rax,%r14,8), %ymm29, %ymm30	 # AVX512{VBMI,VL}
20	vpermb	4064(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
21	vpermb	4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
22	vpermb	-4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
23	vpermb	-4128(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
24	vpermi2b	%xmm28, %xmm29, %xmm30	 # AVX512{VBMI,VL}
25	vpermi2b	%xmm28, %xmm29, %xmm30{%k7}	 # AVX512{VBMI,VL}
26	vpermi2b	%xmm28, %xmm29, %xmm30{%k7}{z}	 # AVX512{VBMI,VL}
27	vpermi2b	(%rcx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
28	vpermi2b	0x123(%rax,%r14,8), %xmm29, %xmm30	 # AVX512{VBMI,VL}
29	vpermi2b	2032(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
30	vpermi2b	2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
31	vpermi2b	-2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
32	vpermi2b	-2064(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
33	vpermi2b	%ymm28, %ymm29, %ymm30	 # AVX512{VBMI,VL}
34	vpermi2b	%ymm28, %ymm29, %ymm30{%k7}	 # AVX512{VBMI,VL}
35	vpermi2b	%ymm28, %ymm29, %ymm30{%k7}{z}	 # AVX512{VBMI,VL}
36	vpermi2b	(%rcx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
37	vpermi2b	0x123(%rax,%r14,8), %ymm29, %ymm30	 # AVX512{VBMI,VL}
38	vpermi2b	4064(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
39	vpermi2b	4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
40	vpermi2b	-4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
41	vpermi2b	-4128(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
42	vpermt2b	%xmm28, %xmm29, %xmm30	 # AVX512{VBMI,VL}
43	vpermt2b	%xmm28, %xmm29, %xmm30{%k7}	 # AVX512{VBMI,VL}
44	vpermt2b	%xmm28, %xmm29, %xmm30{%k7}{z}	 # AVX512{VBMI,VL}
45	vpermt2b	(%rcx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
46	vpermt2b	0x123(%rax,%r14,8), %xmm29, %xmm30	 # AVX512{VBMI,VL}
47	vpermt2b	2032(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
48	vpermt2b	2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
49	vpermt2b	-2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
50	vpermt2b	-2064(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
51	vpermt2b	%ymm28, %ymm29, %ymm30	 # AVX512{VBMI,VL}
52	vpermt2b	%ymm28, %ymm29, %ymm30{%k7}	 # AVX512{VBMI,VL}
53	vpermt2b	%ymm28, %ymm29, %ymm30{%k7}{z}	 # AVX512{VBMI,VL}
54	vpermt2b	(%rcx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
55	vpermt2b	0x123(%rax,%r14,8), %ymm29, %ymm30	 # AVX512{VBMI,VL}
56	vpermt2b	4064(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
57	vpermt2b	4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
58	vpermt2b	-4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
59	vpermt2b	-4128(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
60	vpmultishiftqb	%xmm28, %xmm29, %xmm30	 # AVX512{VBMI,VL}
61	vpmultishiftqb	%xmm28, %xmm29, %xmm30{%k7}	 # AVX512{VBMI,VL}
62	vpmultishiftqb	%xmm28, %xmm29, %xmm30{%k7}{z}	 # AVX512{VBMI,VL}
63	vpmultishiftqb	(%rcx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
64	vpmultishiftqb	0x123(%rax,%r14,8), %xmm29, %xmm30	 # AVX512{VBMI,VL}
65	vpmultishiftqb	(%rcx){1to2}, %xmm29, %xmm30	 # AVX512{VBMI,VL}
66	vpmultishiftqb	2032(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
67	vpmultishiftqb	2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
68	vpmultishiftqb	-2048(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
69	vpmultishiftqb	-2064(%rdx), %xmm29, %xmm30	 # AVX512{VBMI,VL}
70	vpmultishiftqb	1016(%rdx){1to2}, %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
71	vpmultishiftqb	1024(%rdx){1to2}, %xmm29, %xmm30	 # AVX512{VBMI,VL}
72	vpmultishiftqb	-1024(%rdx){1to2}, %xmm29, %xmm30	 # AVX512{VBMI,VL} Disp8
73	vpmultishiftqb	-1032(%rdx){1to2}, %xmm29, %xmm30	 # AVX512{VBMI,VL}
74	vpmultishiftqb	%ymm28, %ymm29, %ymm30	 # AVX512{VBMI,VL}
75	vpmultishiftqb	%ymm28, %ymm29, %ymm30{%k7}	 # AVX512{VBMI,VL}
76	vpmultishiftqb	%ymm28, %ymm29, %ymm30{%k7}{z}	 # AVX512{VBMI,VL}
77	vpmultishiftqb	(%rcx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
78	vpmultishiftqb	0x123(%rax,%r14,8), %ymm29, %ymm30	 # AVX512{VBMI,VL}
79	vpmultishiftqb	(%rcx){1to4}, %ymm29, %ymm30	 # AVX512{VBMI,VL}
80	vpmultishiftqb	4064(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
81	vpmultishiftqb	4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
82	vpmultishiftqb	-4096(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
83	vpmultishiftqb	-4128(%rdx), %ymm29, %ymm30	 # AVX512{VBMI,VL}
84	vpmultishiftqb	1016(%rdx){1to4}, %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
85	vpmultishiftqb	1024(%rdx){1to4}, %ymm29, %ymm30	 # AVX512{VBMI,VL}
86	vpmultishiftqb	-1024(%rdx){1to4}, %ymm29, %ymm30	 # AVX512{VBMI,VL} Disp8
87	vpmultishiftqb	-1032(%rdx){1to4}, %ymm29, %ymm30	 # AVX512{VBMI,VL}
88
89	.intel_syntax noprefix
90	vpermb	xmm30, xmm29, xmm28	 # AVX512{VBMI,VL}
91	vpermb	xmm30{k7}, xmm29, xmm28	 # AVX512{VBMI,VL}
92	vpermb	xmm30{k7}{z}, xmm29, xmm28	 # AVX512{VBMI,VL}
93	vpermb	xmm30, xmm29, XMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
94	vpermb	xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
95	vpermb	xmm30, xmm29, XMMWORD PTR [rdx+2032]	 # AVX512{VBMI,VL} Disp8
96	vpermb	xmm30, xmm29, XMMWORD PTR [rdx+2048]	 # AVX512{VBMI,VL}
97	vpermb	xmm30, xmm29, XMMWORD PTR [rdx-2048]	 # AVX512{VBMI,VL} Disp8
98	vpermb	xmm30, xmm29, XMMWORD PTR [rdx-2064]	 # AVX512{VBMI,VL}
99	vpermb	ymm30, ymm29, ymm28	 # AVX512{VBMI,VL}
100	vpermb	ymm30{k7}, ymm29, ymm28	 # AVX512{VBMI,VL}
101	vpermb	ymm30{k7}{z}, ymm29, ymm28	 # AVX512{VBMI,VL}
102	vpermb	ymm30, ymm29, YMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
103	vpermb	ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
104	vpermb	ymm30, ymm29, YMMWORD PTR [rdx+4064]	 # AVX512{VBMI,VL} Disp8
105	vpermb	ymm30, ymm29, YMMWORD PTR [rdx+4096]	 # AVX512{VBMI,VL}
106	vpermb	ymm30, ymm29, YMMWORD PTR [rdx-4096]	 # AVX512{VBMI,VL} Disp8
107	vpermb	ymm30, ymm29, YMMWORD PTR [rdx-4128]	 # AVX512{VBMI,VL}
108	vpermi2b	xmm30, xmm29, xmm28	 # AVX512{VBMI,VL}
109	vpermi2b	xmm30{k7}, xmm29, xmm28	 # AVX512{VBMI,VL}
110	vpermi2b	xmm30{k7}{z}, xmm29, xmm28	 # AVX512{VBMI,VL}
111	vpermi2b	xmm30, xmm29, XMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
112	vpermi2b	xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
113	vpermi2b	xmm30, xmm29, XMMWORD PTR [rdx+2032]	 # AVX512{VBMI,VL} Disp8
114	vpermi2b	xmm30, xmm29, XMMWORD PTR [rdx+2048]	 # AVX512{VBMI,VL}
115	vpermi2b	xmm30, xmm29, XMMWORD PTR [rdx-2048]	 # AVX512{VBMI,VL} Disp8
116	vpermi2b	xmm30, xmm29, XMMWORD PTR [rdx-2064]	 # AVX512{VBMI,VL}
117	vpermi2b	ymm30, ymm29, ymm28	 # AVX512{VBMI,VL}
118	vpermi2b	ymm30{k7}, ymm29, ymm28	 # AVX512{VBMI,VL}
119	vpermi2b	ymm30{k7}{z}, ymm29, ymm28	 # AVX512{VBMI,VL}
120	vpermi2b	ymm30, ymm29, YMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
121	vpermi2b	ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
122	vpermi2b	ymm30, ymm29, YMMWORD PTR [rdx+4064]	 # AVX512{VBMI,VL} Disp8
123	vpermi2b	ymm30, ymm29, YMMWORD PTR [rdx+4096]	 # AVX512{VBMI,VL}
124	vpermi2b	ymm30, ymm29, YMMWORD PTR [rdx-4096]	 # AVX512{VBMI,VL} Disp8
125	vpermi2b	ymm30, ymm29, YMMWORD PTR [rdx-4128]	 # AVX512{VBMI,VL}
126	vpermt2b	xmm30, xmm29, xmm28	 # AVX512{VBMI,VL}
127	vpermt2b	xmm30{k7}, xmm29, xmm28	 # AVX512{VBMI,VL}
128	vpermt2b	xmm30{k7}{z}, xmm29, xmm28	 # AVX512{VBMI,VL}
129	vpermt2b	xmm30, xmm29, XMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
130	vpermt2b	xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
131	vpermt2b	xmm30, xmm29, XMMWORD PTR [rdx+2032]	 # AVX512{VBMI,VL} Disp8
132	vpermt2b	xmm30, xmm29, XMMWORD PTR [rdx+2048]	 # AVX512{VBMI,VL}
133	vpermt2b	xmm30, xmm29, XMMWORD PTR [rdx-2048]	 # AVX512{VBMI,VL} Disp8
134	vpermt2b	xmm30, xmm29, XMMWORD PTR [rdx-2064]	 # AVX512{VBMI,VL}
135	vpermt2b	ymm30, ymm29, ymm28	 # AVX512{VBMI,VL}
136	vpermt2b	ymm30{k7}, ymm29, ymm28	 # AVX512{VBMI,VL}
137	vpermt2b	ymm30{k7}{z}, ymm29, ymm28	 # AVX512{VBMI,VL}
138	vpermt2b	ymm30, ymm29, YMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
139	vpermt2b	ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
140	vpermt2b	ymm30, ymm29, YMMWORD PTR [rdx+4064]	 # AVX512{VBMI,VL} Disp8
141	vpermt2b	ymm30, ymm29, YMMWORD PTR [rdx+4096]	 # AVX512{VBMI,VL}
142	vpermt2b	ymm30, ymm29, YMMWORD PTR [rdx-4096]	 # AVX512{VBMI,VL} Disp8
143	vpermt2b	ymm30, ymm29, YMMWORD PTR [rdx-4128]	 # AVX512{VBMI,VL}
144	vpmultishiftqb	xmm30, xmm29, xmm28	 # AVX512{VBMI,VL}
145	vpmultishiftqb	xmm30{k7}, xmm29, xmm28	 # AVX512{VBMI,VL}
146	vpmultishiftqb	xmm30{k7}{z}, xmm29, xmm28	 # AVX512{VBMI,VL}
147	vpmultishiftqb	xmm30, xmm29, XMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
148	vpmultishiftqb	xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
149	vpmultishiftqb	xmm30, xmm29, [rcx]{1to2}	 # AVX512{VBMI,VL}
150	vpmultishiftqb	xmm30, xmm29, XMMWORD PTR [rdx+2032]	 # AVX512{VBMI,VL} Disp8
151	vpmultishiftqb	xmm30, xmm29, XMMWORD PTR [rdx+2048]	 # AVX512{VBMI,VL}
152	vpmultishiftqb	xmm30, xmm29, XMMWORD PTR [rdx-2048]	 # AVX512{VBMI,VL} Disp8
153	vpmultishiftqb	xmm30, xmm29, XMMWORD PTR [rdx-2064]	 # AVX512{VBMI,VL}
154	vpmultishiftqb	xmm30, xmm29, [rdx+1016]{1to2}	 # AVX512{VBMI,VL} Disp8
155	vpmultishiftqb	xmm30, xmm29, [rdx+1024]{1to2}	 # AVX512{VBMI,VL}
156	vpmultishiftqb	xmm30, xmm29, [rdx-1024]{1to2}	 # AVX512{VBMI,VL} Disp8
157	vpmultishiftqb	xmm30, xmm29, [rdx-1032]{1to2}	 # AVX512{VBMI,VL}
158	vpmultishiftqb	ymm30, ymm29, ymm28	 # AVX512{VBMI,VL}
159	vpmultishiftqb	ymm30{k7}, ymm29, ymm28	 # AVX512{VBMI,VL}
160	vpmultishiftqb	ymm30{k7}{z}, ymm29, ymm28	 # AVX512{VBMI,VL}
161	vpmultishiftqb	ymm30, ymm29, YMMWORD PTR [rcx]	 # AVX512{VBMI,VL}
162	vpmultishiftqb	ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{VBMI,VL}
163	vpmultishiftqb	ymm30, ymm29, [rcx]{1to4}	 # AVX512{VBMI,VL}
164	vpmultishiftqb	ymm30, ymm29, YMMWORD PTR [rdx+4064]	 # AVX512{VBMI,VL} Disp8
165	vpmultishiftqb	ymm30, ymm29, YMMWORD PTR [rdx+4096]	 # AVX512{VBMI,VL}
166	vpmultishiftqb	ymm30, ymm29, YMMWORD PTR [rdx-4096]	 # AVX512{VBMI,VL} Disp8
167	vpmultishiftqb	ymm30, ymm29, YMMWORD PTR [rdx-4128]	 # AVX512{VBMI,VL}
168	vpmultishiftqb	ymm30, ymm29, [rdx+1016]{1to4}	 # AVX512{VBMI,VL} Disp8
169	vpmultishiftqb	ymm30, ymm29, [rdx+1024]{1to4}	 # AVX512{VBMI,VL}
170	vpmultishiftqb	ymm30, ymm29, [rdx-1024]{1to4}	 # AVX512{VBMI,VL} Disp8
171	vpmultishiftqb	ymm30, ymm29, [rdx-1032]{1to4}	 # AVX512{VBMI,VL}
172