1# Check x86-64 AVX2 instructions
2
3	.allow_index_reg
4	.text
5_start:
6
7# Tests for op mem256, mask,  ymm
8# Tests for op ymm, mask, mem256
9	vpmaskmovd (%rcx),%ymm4,%ymm6
10	vpmaskmovd %ymm4,%ymm6,(%rcx)
11	vpmaskmovq (%rcx),%ymm4,%ymm6
12	vpmaskmovq %ymm4,%ymm6,(%rcx)
13
14# Tests for op imm8, ymm/mem256, ymm
15	vpermpd $7,%ymm6,%ymm2
16	vpermpd $7,(%rcx),%ymm6
17	vpermq $7,%ymm6,%ymm2
18	vpermq $7,(%rcx),%ymm6
19
20# Tests for op ymm/mem256, ymm, ymm
21	vpermd %ymm4,%ymm6,%ymm2
22	vpermd (%rcx),%ymm6,%ymm2
23	vpermps %ymm4,%ymm6,%ymm2
24	vpermps (%rcx),%ymm6,%ymm2
25	vpsllvd %ymm4,%ymm6,%ymm2
26	vpsllvd (%rcx),%ymm6,%ymm2
27	vpsllvq %ymm4,%ymm6,%ymm2
28	vpsllvq (%rcx),%ymm6,%ymm2
29	vpsravd %ymm4,%ymm6,%ymm2
30	vpsravd (%rcx),%ymm6,%ymm2
31	vpsrlvd %ymm4,%ymm6,%ymm2
32	vpsrlvd (%rcx),%ymm6,%ymm2
33	vpsrlvq %ymm4,%ymm6,%ymm2
34	vpsrlvq (%rcx),%ymm6,%ymm2
35
36# Tests for op mem256, ymm
37	vmovntdqa (%rcx),%ymm4
38
39# Tests for op ymm, xmm
40	vbroadcastsd %xmm4,%ymm6
41	vbroadcastss %xmm4,%ymm6
42
43# Tests for op imm8, ymm/mem256, ymm, ymm
44	vpblendd $7,%ymm4,%ymm6,%ymm2
45	vpblendd $7,(%rcx),%ymm6,%ymm2
46	vperm2i128 $7,%ymm4,%ymm6,%ymm2
47	vperm2i128 $7,(%rcx),%ymm6,%ymm2
48
49# Tests for op imm8, xmm/mem128, ymm, ymm
50	vinserti128 $7,%xmm4,%ymm4,%ymm6
51	vinserti128 $7,(%rcx),%ymm4,%ymm6
52
53# Tests for op mem128, ymm
54	vbroadcasti128 (%rcx),%ymm4
55
56# Tests for op xmm/mem128, xmm, xmm
57	vpsllvd %xmm4,%xmm6,%xmm2
58	vpsllvd (%rcx),%xmm6,%xmm7
59	vpsllvq %xmm4,%xmm6,%xmm2
60	vpsllvq (%rcx),%xmm6,%xmm7
61	vpsravd %xmm4,%xmm6,%xmm2
62	vpsravd (%rcx),%xmm6,%xmm7
63	vpsrlvd %xmm4,%xmm6,%xmm2
64	vpsrlvd (%rcx),%xmm6,%xmm7
65	vpsrlvq %xmm4,%xmm6,%xmm2
66	vpsrlvq (%rcx),%xmm6,%xmm7
67
68# Tests for op mem128, xmm, xmm
69	vpmaskmovd (%rcx),%xmm4,%xmm6
70	vpmaskmovq (%rcx),%xmm4,%xmm6
71
72# Tests for op imm8, ymm, xmm128/mem
73	vextracti128 $7,%ymm4,%xmm6
74	vextracti128 $7,%ymm4,(%rcx)
75
76# Tests for op xmm, xmm, mem128
77	vpmaskmovd %xmm4,%xmm6,(%rcx)
78	vpmaskmovq %xmm4,%xmm6,(%rcx)
79
80# Tests for op imm8, xmm/mem128, xmm, xmm
81	vpblendd $7,%xmm4,%xmm6,%xmm2
82	vpblendd $7,(%rcx),%xmm6,%xmm2
83
84# Tests for op xmm/mem64, xmm
85	vpbroadcastq %xmm4,%xmm6
86	vpbroadcastq (%rcx),%xmm4
87
88# Tests for op xmm/mem64, ymm
89	vpbroadcastq %xmm4,%ymm6
90	vpbroadcastq (%rcx),%ymm4
91
92# Tests for op xmm/mem32, ymm
93	vpbroadcastd %xmm4,%ymm4
94	vpbroadcastd (%rcx),%ymm4
95
96# Tests for op xmm/mem32, xmm
97	vpbroadcastd %xmm4,%xmm6
98	vpbroadcastd (%rcx),%xmm4
99
100# Tests for op xmm/m16, xmm
101	vpbroadcastw %xmm4,%xmm6
102	vpbroadcastw (%rcx),%xmm4
103
104# Tests for op xmm/m16, ymm
105	vpbroadcastw %xmm4,%ymm6
106	vpbroadcastw (%rcx),%ymm4
107
108# Tests for op xmm/m8, xmm
109	vpbroadcastb %xmm4,%xmm6
110	vpbroadcastb (%rcx),%xmm4
111
112# Tests for op xmm/m8, ymm
113	vpbroadcastb %xmm4,%ymm6
114	vpbroadcastb (%rcx),%ymm4
115
116# Tests for op xmm, xmm
117	vbroadcastss %xmm4,%xmm6
118
119	.intel_syntax noprefix
120
121# Tests for op mem256, mask,  ymm
122# Tests for op ymm, mask, mem256
123	vpmaskmovd ymm6,ymm4,YMMWORD PTR [rcx]
124	vpmaskmovd YMMWORD PTR [rcx],ymm6,ymm4
125	vpmaskmovd ymm6,ymm4,[rcx]
126	vpmaskmovd [rcx],ymm6,ymm4
127	vpmaskmovq ymm6,ymm4,YMMWORD PTR [rcx]
128	vpmaskmovq YMMWORD PTR [rcx],ymm6,ymm4
129	vpmaskmovq ymm6,ymm4,[rcx]
130	vpmaskmovq [rcx],ymm6,ymm4
131
132# Tests for op imm8, ymm/mem256, ymm
133	vpermpd ymm2,ymm6,7
134	vpermpd ymm6,YMMWORD PTR [rcx],7
135	vpermpd ymm6,[rcx],7
136	vpermq ymm2,ymm6,7
137	vpermq ymm6,YMMWORD PTR [rcx],7
138	vpermq ymm6,[rcx],7
139
140# Tests for op ymm/mem256, ymm, ymm
141	vpermd ymm2,ymm6,ymm4
142	vpermd ymm2,ymm6,YMMWORD PTR [rcx]
143	vpermd ymm2,ymm6,[rcx]
144	vpermps ymm2,ymm6,ymm4
145	vpermps ymm2,ymm6,YMMWORD PTR [rcx]
146	vpermps ymm2,ymm6,[rcx]
147	vpsllvd ymm2,ymm6,ymm4
148	vpsllvd ymm2,ymm6,YMMWORD PTR [rcx]
149	vpsllvd ymm2,ymm6,[rcx]
150	vpsllvq ymm2,ymm6,ymm4
151	vpsllvq ymm2,ymm6,YMMWORD PTR [rcx]
152	vpsllvq ymm2,ymm6,[rcx]
153	vpsravd ymm2,ymm6,ymm4
154	vpsravd ymm2,ymm6,YMMWORD PTR [rcx]
155	vpsravd ymm2,ymm6,[rcx]
156	vpsrlvd ymm2,ymm6,ymm4
157	vpsrlvd ymm2,ymm6,YMMWORD PTR [rcx]
158	vpsrlvd ymm2,ymm6,[rcx]
159	vpsrlvq ymm2,ymm6,ymm4
160	vpsrlvq ymm2,ymm6,YMMWORD PTR [rcx]
161	vpsrlvq ymm2,ymm6,[rcx]
162
163# Tests for op mem256, ymm
164	vmovntdqa ymm4,YMMWORD PTR [rcx]
165	vmovntdqa ymm4,[rcx]
166
167# Tests for op ymm, xmm
168	vbroadcastsd ymm6,xmm4
169	vbroadcastss ymm6,xmm4
170
171# Tests for op imm8, ymm/mem256, ymm, ymm
172	vpblendd ymm2,ymm6,ymm4,7
173	vpblendd ymm2,ymm6,YMMWORD PTR [rcx],7
174	vpblendd ymm2,ymm6,[rcx],7
175	vperm2i128 ymm2,ymm6,ymm4,7
176	vperm2i128 ymm2,ymm6,YMMWORD PTR [rcx],7
177	vperm2i128 ymm2,ymm6,[rcx],7
178
179# Tests for op imm8, xmm/mem128, ymm, ymm
180	vinserti128 ymm6,ymm4,xmm4,7
181	vinserti128 ymm6,ymm4,XMMWORD PTR [rcx],7
182	vinserti128 ymm6,ymm4,[rcx],7
183
184# Tests for op mem128, ymm
185	vbroadcasti128 ymm4,XMMWORD PTR [rcx]
186	vbroadcasti128 ymm4,[rcx]
187
188# Tests for op xmm/mem128, xmm, xmm
189	vpsllvd xmm2,xmm6,xmm4
190	vpsllvd xmm7,xmm6,XMMWORD PTR [rcx]
191	vpsllvd xmm7,xmm6,[rcx]
192	vpsllvq xmm2,xmm6,xmm4
193	vpsllvq xmm7,xmm6,XMMWORD PTR [rcx]
194	vpsllvq xmm7,xmm6,[rcx]
195	vpsravd xmm2,xmm6,xmm4
196	vpsravd xmm7,xmm6,XMMWORD PTR [rcx]
197	vpsravd xmm7,xmm6,[rcx]
198	vpsrlvd xmm2,xmm6,xmm4
199	vpsrlvd xmm7,xmm6,XMMWORD PTR [rcx]
200	vpsrlvd xmm7,xmm6,[rcx]
201	vpsrlvq xmm2,xmm6,xmm4
202	vpsrlvq xmm7,xmm6,XMMWORD PTR [rcx]
203	vpsrlvq xmm7,xmm6,[rcx]
204
205# Tests for op mem128, xmm, xmm
206	vpmaskmovd xmm6,xmm4,XMMWORD PTR [rcx]
207	vpmaskmovd xmm6,xmm4,[rcx]
208	vpmaskmovq xmm6,xmm4,XMMWORD PTR [rcx]
209	vpmaskmovq xmm6,xmm4,[rcx]
210
211# Tests for op imm8, ymm, xmm128/mem
212	vextracti128 xmm6,ymm4,7
213	vextracti128 XMMWORD PTR [rcx],ymm4,7
214	vextracti128 [rcx],ymm4,7
215
216# Tests for op xmm, xmm, mem128
217	vpmaskmovd XMMWORD PTR [rcx],xmm6,xmm4
218	vpmaskmovd [rcx],xmm6,xmm4
219	vpmaskmovq XMMWORD PTR [rcx],xmm6,xmm4
220	vpmaskmovq [rcx],xmm6,xmm4
221
222# Tests for op imm8, xmm/mem128, xmm, xmm
223	vpblendd xmm2,xmm6,xmm4,7
224	vpblendd xmm2,xmm6,XMMWORD PTR [rcx],7
225	vpblendd xmm2,xmm6,[rcx],7
226
227# Tests for op xmm/mem64, xmm
228	vpbroadcastq xmm6,xmm4
229	vpbroadcastq xmm4,QWORD PTR [rcx]
230	vpbroadcastq xmm4,[rcx]
231
232# Tests for op xmm/mem64, ymm
233	vpbroadcastq ymm6,xmm4
234	vpbroadcastq ymm4,QWORD PTR [rcx]
235	vpbroadcastq ymm4,[rcx]
236
237# Tests for op xmm/mem32, ymm
238	vpbroadcastd ymm4,xmm4
239	vpbroadcastd ymm4,DWORD PTR [rcx]
240	vpbroadcastd ymm4,[rcx]
241
242# Tests for op xmm/mem32, xmm
243	vpbroadcastd xmm6,xmm4
244	vpbroadcastd xmm4,DWORD PTR [rcx]
245	vpbroadcastd xmm4,[rcx]
246
247# Tests for op xmm/m16, xmm
248	vpbroadcastw xmm6,xmm4
249	vpbroadcastw xmm4,WORD PTR [rcx]
250	vpbroadcastw xmm4,[rcx]
251
252# Tests for op xmm/m16, ymm
253	vpbroadcastw ymm6,xmm4
254	vpbroadcastw ymm4,WORD PTR [rcx]
255	vpbroadcastw ymm4,[rcx]
256
257# Tests for op xmm/m8, xmm
258	vpbroadcastb xmm6,xmm4
259	vpbroadcastb xmm4,BYTE PTR [rcx]
260	vpbroadcastb xmm4,[rcx]
261
262# Tests for op xmm/m8, ymm
263	vpbroadcastb ymm6,xmm4
264	vpbroadcastb ymm4,BYTE PTR [rcx]
265	vpbroadcastb ymm4,[rcx]
266
267# Tests for op xmm, xmm
268	vbroadcastss xmm6,xmm4
269