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