i386: Check for reserved VEX.vvvv and EVEX.vvvv
[external/binutils.git] / gas / testsuite / gas / i386 / x86-64-avx2.s
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