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