1# Check 32bit AVX512VBMI2 instructions
2
3	.allow_index_reg
4	.text
5_start:
6	vpcompressb	%zmm6, (%ecx){%k7}	 # AVX512VBMI2
7	vpcompressb	%zmm6, -123456(%esp,%esi,8)	 # AVX512VBMI2
8	vpcompressb	%zmm6, 126(%edx)	 # AVX512VBMI2 Disp8
9	vpcompressb	%zmm5, %zmm6	 # AVX512VBMI2
10	vpcompressb	%zmm5, %zmm6{%k7}	 # AVX512VBMI2
11	vpcompressb	%zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
12
13	vpcompressw	%zmm6, (%ecx){%k7}	 # AVX512VBMI2
14	vpcompressw	%zmm6, -123456(%esp,%esi,8)	 # AVX512VBMI2
15	vpcompressw	%zmm6, 128(%edx)	 # AVX512VBMI2 Disp8
16	vpcompressw	%zmm5, %zmm6	 # AVX512VBMI2
17	vpcompressw	%zmm5, %zmm6{%k7}	 # AVX512VBMI2
18	vpcompressw	%zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
19
20	vpexpandb	(%ecx), %zmm6{%k7}	 # AVX512VBMI2
21	vpexpandb	(%ecx), %zmm6{%k7}{z}	 # AVX512VBMI2
22	vpexpandb	-123456(%esp,%esi,8), %zmm6	 # AVX512VBMI2
23	vpexpandb	126(%edx), %zmm6	 # AVX512VBMI2 Disp8
24	vpexpandb	%zmm5, %zmm6	 # AVX512VBMI2
25	vpexpandb	%zmm5, %zmm6{%k7}	 # AVX512VBMI2
26	vpexpandb	%zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
27
28	vpexpandw	(%ecx), %zmm6{%k7}	 # AVX512VBMI2
29	vpexpandw	(%ecx), %zmm6{%k7}{z}	 # AVX512VBMI2
30	vpexpandw	-123456(%esp,%esi,8), %zmm6	 # AVX512VBMI2
31	vpexpandw	128(%edx), %zmm6	 # AVX512VBMI2 Disp8
32	vpexpandw	%zmm5, %zmm6	 # AVX512VBMI2
33	vpexpandw	%zmm5, %zmm6{%k7}	 # AVX512VBMI2
34	vpexpandw	%zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
35
36	vpshldvw	%zmm4, %zmm5, %zmm6	 # AVX512VBMI2
37	vpshldvw	%zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
38	vpshldvw	%zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
39	vpshldvw	-123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
40	vpshldvw	128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
41
42	vpshldvd	%zmm4, %zmm5, %zmm6	 # AVX512VBMI2
43	vpshldvd	%zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
44	vpshldvd	%zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
45	vpshldvd	-123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
46	vpshldvd	128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
47	vpshldvd	508(%edx){1to16}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
48
49	vpshldvq	%zmm4, %zmm5, %zmm6	 # AVX512VBMI2
50	vpshldvq	%zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
51	vpshldvq	%zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
52	vpshldvq	-123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
53	vpshldvq	128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
54	vpshldvq	1016(%edx){1to8}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
55
56	vpshrdvw	%zmm4, %zmm5, %zmm6	 # AVX512VBMI2
57	vpshrdvw	%zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
58	vpshrdvw	%zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
59	vpshrdvw	-123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
60	vpshrdvw	128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
61
62	vpshrdvd	%zmm4, %zmm5, %zmm6	 # AVX512VBMI2
63	vpshrdvd	%zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
64	vpshrdvd	%zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
65	vpshrdvd	-123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
66	vpshrdvd	128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
67	vpshrdvd	508(%edx){1to16}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
68
69	vpshrdvq	%zmm4, %zmm5, %zmm6	 # AVX512VBMI2
70	vpshrdvq	%zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
71	vpshrdvq	%zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
72	vpshrdvq	-123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
73	vpshrdvq	128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
74	vpshrdvq	1016(%edx){1to8}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
75
76	vpshldw	$0xab, %zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
77	vpshldw	$0xab, %zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
78	vpshldw	$123, %zmm4, %zmm5, %zmm6	 # AVX512VBMI2
79	vpshldw	$123, -123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
80	vpshldw	$123, 128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
81
82	vpshldd	$0xab, %zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
83	vpshldd	$0xab, %zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
84	vpshldd	$123, %zmm4, %zmm5, %zmm6	 # AVX512VBMI2
85	vpshldd	$123, -123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
86	vpshldd	$123, 128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
87	vpshldd	$123, 508(%edx){1to16}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
88
89	vpshldq	$0xab, %zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
90	vpshldq	$0xab, %zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
91	vpshldq	$123, -123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
92	vpshldq	$123, 128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
93	vpshldq	$123, 1016(%edx){1to8}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
94
95	vpshrdw	$0xab, %zmm4, %zmm5, %zmm6	 # AVX512VBMI2
96	vpshrdw	$0xab, %zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
97	vpshrdw	$0xab, %zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
98	vpshrdw	$123, -123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
99	vpshrdw	$123, 128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
100
101	vpshrdd	$0xab, %zmm4, %zmm5, %zmm6	 # AVX512VBMI2
102	vpshrdd	$0xab, %zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
103	vpshrdd	$0xab, %zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
104	vpshrdd	$123, -123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
105	vpshrdd	$123, 128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
106	vpshrdd	$123, 508(%edx){1to16}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
107
108	vpshrdq	$0xab, %zmm4, %zmm5, %zmm6{%k7}	 # AVX512VBMI2
109	vpshrdq	$0xab, %zmm4, %zmm5, %zmm6{%k7}{z}	 # AVX512VBMI2
110	vpshrdq	$123, %zmm4, %zmm5, %zmm6	 # AVX512VBMI2
111	vpshrdq	$123, -123456(%esp,%esi,8), %zmm5, %zmm6	 # AVX512VBMI2
112	vpshrdq	$123, 128(%edx), %zmm5, %zmm6	 # AVX512VBMI2 Disp8
113	vpshrdq	$123, 1016(%edx){1to8}, %zmm5, %zmm6	 # AVX512VBMI2 Disp8
114
115	.intel_syntax noprefix
116	vpcompressb	ZMMWORD PTR [ecx]{k7}, zmm6	 # AVX512VBMI2
117	vpcompressb	ZMMWORD PTR [esp+esi*8-123456], zmm6	 # AVX512VBMI2
118	vpcompressb	ZMMWORD PTR [edx+126], zmm6	 # AVX512VBMI2 Disp8
119	vpcompressb	zmm6, zmm5	 # AVX512VBMI2
120	vpcompressb	zmm6{k7}, zmm5	 # AVX512VBMI2
121	vpcompressb	zmm6{k7}{z}, zmm5	 # AVX512VBMI2
122
123	vpcompressw	ZMMWORD PTR [ecx]{k7}, zmm6	 # AVX512VBMI2
124	vpcompressw	ZMMWORD PTR [esp+esi*8-123456], zmm6	 # AVX512VBMI2
125	vpcompressw	ZMMWORD PTR [edx+128], zmm6	 # AVX512VBMI2 Disp8
126	vpcompressw	zmm6, zmm5	 # AVX512VBMI2
127	vpcompressw	zmm6{k7}, zmm5	 # AVX512VBMI2
128	vpcompressw	zmm6{k7}{z}, zmm5	 # AVX512VBMI2
129
130	vpexpandb	zmm6{k7}, ZMMWORD PTR [ecx]	 # AVX512VBMI2
131	vpexpandb	zmm6{k7}{z}, ZMMWORD PTR [ecx]	 # AVX512VBMI2
132	vpexpandb	zmm6, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
133	vpexpandb	zmm6, ZMMWORD PTR [edx+126]	 # AVX512VBMI2 Disp8
134	vpexpandb	zmm6, zmm5	 # AVX512VBMI2
135	vpexpandb	zmm6{k7}, zmm5	 # AVX512VBMI2
136	vpexpandb	zmm6{k7}{z}, zmm5	 # AVX512VBMI2
137
138	vpexpandw	zmm6{k7}, ZMMWORD PTR [ecx]	 # AVX512VBMI2
139	vpexpandw	zmm6{k7}{z}, ZMMWORD PTR [ecx]	 # AVX512VBMI2
140	vpexpandw	zmm6, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
141	vpexpandw	zmm6, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
142	vpexpandw	zmm6, zmm5	 # AVX512VBMI2
143	vpexpandw	zmm6{k7}, zmm5	 # AVX512VBMI2
144	vpexpandw	zmm6{k7}{z}, zmm5	 # AVX512VBMI2
145
146	vpshldvw	zmm6, zmm5, zmm4	 # AVX512VBMI2
147	vpshldvw	zmm6{k7}, zmm5, zmm4	 # AVX512VBMI2
148	vpshldvw	zmm6{k7}{z}, zmm5, zmm4	 # AVX512VBMI2
149	vpshldvw	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
150	vpshldvw	zmm6, zmm5, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
151
152	vpshldvd	zmm6, zmm5, zmm4	 # AVX512VBMI2
153	vpshldvd	zmm6{k7}, zmm5, zmm4	 # AVX512VBMI2
154	vpshldvd	zmm6{k7}{z}, zmm5, zmm4	 # AVX512VBMI2
155	vpshldvd	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
156	vpshldvd	zmm6, zmm5, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
157	vpshldvd	zmm6, zmm5, [edx+508]{1to16}	 # AVX512VBMI2 Disp8
158
159	vpshldvq	zmm6, zmm5, zmm4	 # AVX512VBMI2
160	vpshldvq	zmm6{k7}, zmm5, zmm4	 # AVX512VBMI2
161	vpshldvq	zmm6{k7}{z}, zmm5, zmm4	 # AVX512VBMI2
162	vpshldvq	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
163	vpshldvq	zmm6, zmm5, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
164	vpshldvq	zmm6, zmm5, [edx+1016]{1to8}	 # AVX512VBMI2 Disp8
165
166	vpshrdvw	zmm6, zmm5, zmm4	 # AVX512VBMI2
167	vpshrdvw	zmm6{k7}, zmm5, zmm4	 # AVX512VBMI2
168	vpshrdvw	zmm6{k7}{z}, zmm5, zmm4	 # AVX512VBMI2
169	vpshrdvw	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
170	vpshrdvw	zmm6, zmm5, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
171
172	vpshrdvd	zmm6, zmm5, zmm4	 # AVX512VBMI2
173	vpshrdvd	zmm6{k7}, zmm5, zmm4	 # AVX512VBMI2
174	vpshrdvd	zmm6{k7}{z}, zmm5, zmm4	 # AVX512VBMI2
175	vpshrdvd	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
176	vpshrdvd	zmm6, zmm5, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
177	vpshrdvd	zmm6, zmm5, [edx+508]{1to16}	 # AVX512VBMI2 Disp8
178
179	vpshrdvq	zmm6, zmm5, zmm4	 # AVX512VBMI2
180	vpshrdvq	zmm6{k7}, zmm5, zmm4	 # AVX512VBMI2
181	vpshrdvq	zmm6{k7}{z}, zmm5, zmm4	 # AVX512VBMI2
182	vpshrdvq	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456]	 # AVX512VBMI2
183	vpshrdvq	zmm6, zmm5, ZMMWORD PTR [edx+128]	 # AVX512VBMI2 Disp8
184	vpshrdvq	zmm6, zmm5, [edx+1016]{1to8}	 # AVX512VBMI2 Disp8
185
186	vpshldw	zmm6, zmm5, zmm4, 0xab	 # AVX512VBMI2
187	vpshldw	zmm6{k7}, zmm5, zmm4, 0xab	 # AVX512VBMI2
188	vpshldw	zmm6{k7}{z}, zmm5, zmm4, 0xab	 # AVX512VBMI2
189	vpshldw	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456], 123	 # AVX512VBMI2
190	vpshldw	zmm6, zmm5, ZMMWORD PTR [edx+128], 123	 # AVX512VBMI2 Disp8
191
192	vpshldd	zmm6, zmm5, zmm4, 0xab	 # AVX512VBMI2
193	vpshldd	zmm6{k7}, zmm5, zmm4, 0xab	 # AVX512VBMI2
194	vpshldd	zmm6{k7}{z}, zmm5, zmm4, 0xab	 # AVX512VBMI2
195	vpshldd	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456], 123	 # AVX512VBMI2
196	vpshldd	zmm6, zmm5, ZMMWORD PTR [edx+128], 123	 # AVX512VBMI2 Disp8
197	vpshldd	zmm6, zmm5, [edx+508]{1to16}, 123	 # AVX512VBMI2 Disp8
198
199	vpshldq	zmm6, zmm5, zmm4, 0xab	 # AVX512VBMI2
200	vpshldq	zmm6{k7}, zmm5, zmm4, 0xab	 # AVX512VBMI2
201	vpshldq	zmm6{k7}{z}, zmm5, zmm4, 0xab	 # AVX512VBMI2
202	vpshldq	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456], 123	 # AVX512VBMI2
203	vpshldq	zmm6, zmm5, ZMMWORD PTR [edx+128], 123	 # AVX512VBMI2 Disp8
204	vpshldq	zmm6, zmm5, [edx+1016]{1to8}, 123	 # AVX512VBMI2 Disp8
205
206	vpshrdw	zmm6, zmm5, zmm4, 0xab	 # AVX512VBMI2
207	vpshrdw	zmm6{k7}, zmm5, zmm4, 0xab	 # AVX512VBMI2
208	vpshrdw	zmm6{k7}{z}, zmm5, zmm4, 0xab	 # AVX512VBMI2
209	vpshrdw	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456], 123	 # AVX512VBMI2
210	vpshrdw	zmm6, zmm5, ZMMWORD PTR [edx+128], 123	 # AVX512VBMI2 Disp8
211
212	vpshrdd	zmm6, zmm5, zmm4, 0xab	 # AVX512VBMI2
213	vpshrdd	zmm6{k7}, zmm5, zmm4, 0xab	 # AVX512VBMI2
214	vpshrdd	zmm6{k7}{z}, zmm5, zmm4, 0xab	 # AVX512VBMI2
215	vpshrdd	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456], 123	 # AVX512VBMI2
216	vpshrdd	zmm6, zmm5, ZMMWORD PTR [edx+128], 123	 # AVX512VBMI2 Disp8
217	vpshrdd	zmm6, zmm5, [edx+508]{1to16}, 123	 # AVX512VBMI2 Disp8
218
219	vpshrdq	zmm6, zmm5, zmm4, 0xab	 # AVX512VBMI2
220	vpshrdq	zmm6{k7}, zmm5, zmm4, 0xab	 # AVX512VBMI2
221	vpshrdq	zmm6{k7}{z}, zmm5, zmm4, 0xab	 # AVX512VBMI2
222	vpshrdq	zmm6, zmm5, ZMMWORD PTR [esp+esi*8-123456], 123	 # AVX512VBMI2
223	vpshrdq	zmm6, zmm5, ZMMWORD PTR [edx+128], 123	 # AVX512VBMI2 Disp8
224	vpshrdq	zmm6, zmm5, [edx+1016]{1to8}, 123	 # AVX512VBMI2 Disp8
225