1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X32-SSE
3 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX1
4 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX2
5 ; RUN: llc < %s -mtriple=i386-unknown -mcpu=knl | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX512 --check-prefix=X32-KNL
6 ; RUN: llc < %s -mtriple=i386-unknown -mcpu=skx | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX512 --check-prefix=X32-SKX
7 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X64-SSE
8 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX1
9 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX2
10 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=knl | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX512 --check-prefix=X64-KNL
11 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=skx | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX512 --check-prefix=X64-SKX
13 define <16 x i8> @allones_v16i8() nounwind {
14 ; X32-SSE-LABEL: allones_v16i8:
16 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
19 ; X32-AVX-LABEL: allones_v16i8:
21 ; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
24 ; X64-SSE-LABEL: allones_v16i8:
26 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
29 ; X64-AVX-LABEL: allones_v16i8:
31 ; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
33 ret <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
36 define <8 x i16> @allones_v8i16() nounwind {
37 ; X32-SSE-LABEL: allones_v8i16:
39 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
42 ; X32-AVX-LABEL: allones_v8i16:
44 ; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
47 ; X64-SSE-LABEL: allones_v8i16:
49 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
52 ; X64-AVX-LABEL: allones_v8i16:
54 ; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
56 ret <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
59 define <4 x i32> @allones_v4i32() nounwind {
60 ; X32-SSE-LABEL: allones_v4i32:
62 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
65 ; X32-AVX-LABEL: allones_v4i32:
67 ; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
70 ; X64-SSE-LABEL: allones_v4i32:
72 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
75 ; X64-AVX-LABEL: allones_v4i32:
77 ; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
79 ret <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
82 define <2 x i64> @allones_v2i64() nounwind {
83 ; X32-SSE-LABEL: allones_v2i64:
85 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
88 ; X32-AVX-LABEL: allones_v2i64:
90 ; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
93 ; X64-SSE-LABEL: allones_v2i64:
95 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
98 ; X64-AVX-LABEL: allones_v2i64:
100 ; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
102 ret <2 x i64> <i64 -1, i64 -1>
105 define <2 x double> @allones_v2f64() nounwind {
106 ; X32-SSE-LABEL: allones_v2f64:
108 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
111 ; X32-AVX-LABEL: allones_v2f64:
113 ; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
116 ; X64-SSE-LABEL: allones_v2f64:
118 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
121 ; X64-AVX-LABEL: allones_v2f64:
123 ; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
125 ret <2 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff>
128 define <4 x float> @allones_v4f32() nounwind {
129 ; X32-SSE-LABEL: allones_v4f32:
131 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
134 ; X32-AVX-LABEL: allones_v4f32:
136 ; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
139 ; X64-SSE-LABEL: allones_v4f32:
141 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
144 ; X64-AVX-LABEL: allones_v4f32:
146 ; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
148 ret <4 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
151 define <32 x i8> @allones_v32i8() nounwind {
152 ; X32-SSE-LABEL: allones_v32i8:
154 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
155 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
158 ; X32-AVX1-LABEL: allones_v32i8:
160 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
161 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
162 ; X32-AVX1-NEXT: retl
164 ; X32-AVX256-LABEL: allones_v32i8:
165 ; X32-AVX256: # %bb.0:
166 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
167 ; X32-AVX256-NEXT: retl
169 ; X64-SSE-LABEL: allones_v32i8:
171 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
172 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
175 ; X64-AVX1-LABEL: allones_v32i8:
177 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
178 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
179 ; X64-AVX1-NEXT: retq
181 ; X64-AVX256-LABEL: allones_v32i8:
182 ; X64-AVX256: # %bb.0:
183 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
184 ; X64-AVX256-NEXT: retq
185 ret <32 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
188 define <16 x i16> @allones_v16i16() nounwind {
189 ; X32-SSE-LABEL: allones_v16i16:
191 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
192 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
195 ; X32-AVX1-LABEL: allones_v16i16:
197 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
198 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
199 ; X32-AVX1-NEXT: retl
201 ; X32-AVX256-LABEL: allones_v16i16:
202 ; X32-AVX256: # %bb.0:
203 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
204 ; X32-AVX256-NEXT: retl
206 ; X64-SSE-LABEL: allones_v16i16:
208 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
209 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
212 ; X64-AVX1-LABEL: allones_v16i16:
214 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
215 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
216 ; X64-AVX1-NEXT: retq
218 ; X64-AVX256-LABEL: allones_v16i16:
219 ; X64-AVX256: # %bb.0:
220 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
221 ; X64-AVX256-NEXT: retq
222 ret <16 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
225 define <8 x i32> @allones_v8i32() nounwind {
226 ; X32-SSE-LABEL: allones_v8i32:
228 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
229 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
232 ; X32-AVX1-LABEL: allones_v8i32:
234 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
235 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
236 ; X32-AVX1-NEXT: retl
238 ; X32-AVX256-LABEL: allones_v8i32:
239 ; X32-AVX256: # %bb.0:
240 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
241 ; X32-AVX256-NEXT: retl
243 ; X64-SSE-LABEL: allones_v8i32:
245 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
246 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
249 ; X64-AVX1-LABEL: allones_v8i32:
251 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
252 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
253 ; X64-AVX1-NEXT: retq
255 ; X64-AVX256-LABEL: allones_v8i32:
256 ; X64-AVX256: # %bb.0:
257 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
258 ; X64-AVX256-NEXT: retq
259 ret <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
262 define <4 x i64> @allones_v4i64() nounwind {
263 ; X32-SSE-LABEL: allones_v4i64:
265 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
266 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
269 ; X32-AVX1-LABEL: allones_v4i64:
271 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
272 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
273 ; X32-AVX1-NEXT: retl
275 ; X32-AVX256-LABEL: allones_v4i64:
276 ; X32-AVX256: # %bb.0:
277 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
278 ; X32-AVX256-NEXT: retl
280 ; X64-SSE-LABEL: allones_v4i64:
282 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
283 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
286 ; X64-AVX1-LABEL: allones_v4i64:
288 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
289 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
290 ; X64-AVX1-NEXT: retq
292 ; X64-AVX256-LABEL: allones_v4i64:
293 ; X64-AVX256: # %bb.0:
294 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
295 ; X64-AVX256-NEXT: retq
296 ret <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1>
299 define <4 x double> @allones_v4f64() nounwind {
300 ; X32-SSE-LABEL: allones_v4f64:
302 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
303 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
306 ; X32-AVX1-LABEL: allones_v4f64:
308 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
309 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
310 ; X32-AVX1-NEXT: retl
312 ; X32-AVX256-LABEL: allones_v4f64:
313 ; X32-AVX256: # %bb.0:
314 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
315 ; X32-AVX256-NEXT: retl
317 ; X64-SSE-LABEL: allones_v4f64:
319 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
320 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
323 ; X64-AVX1-LABEL: allones_v4f64:
325 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
326 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
327 ; X64-AVX1-NEXT: retq
329 ; X64-AVX256-LABEL: allones_v4f64:
330 ; X64-AVX256: # %bb.0:
331 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
332 ; X64-AVX256-NEXT: retq
333 ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
336 define <4 x double> @allones_v4f64_optsize() nounwind optsize {
337 ; X32-SSE-LABEL: allones_v4f64_optsize:
339 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
340 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
343 ; X32-AVX1-LABEL: allones_v4f64_optsize:
345 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
346 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
347 ; X32-AVX1-NEXT: retl
349 ; X32-AVX256-LABEL: allones_v4f64_optsize:
350 ; X32-AVX256: # %bb.0:
351 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
352 ; X32-AVX256-NEXT: retl
354 ; X64-SSE-LABEL: allones_v4f64_optsize:
356 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
357 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
360 ; X64-AVX1-LABEL: allones_v4f64_optsize:
362 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
363 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
364 ; X64-AVX1-NEXT: retq
366 ; X64-AVX256-LABEL: allones_v4f64_optsize:
367 ; X64-AVX256: # %bb.0:
368 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
369 ; X64-AVX256-NEXT: retq
370 ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
373 define <8 x float> @allones_v8f32() nounwind {
374 ; X32-SSE-LABEL: allones_v8f32:
376 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
377 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
380 ; X32-AVX1-LABEL: allones_v8f32:
382 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
383 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
384 ; X32-AVX1-NEXT: retl
386 ; X32-AVX256-LABEL: allones_v8f32:
387 ; X32-AVX256: # %bb.0:
388 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
389 ; X32-AVX256-NEXT: retl
391 ; X64-SSE-LABEL: allones_v8f32:
393 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
394 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
397 ; X64-AVX1-LABEL: allones_v8f32:
399 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
400 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
401 ; X64-AVX1-NEXT: retq
403 ; X64-AVX256-LABEL: allones_v8f32:
404 ; X64-AVX256: # %bb.0:
405 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
406 ; X64-AVX256-NEXT: retq
407 ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
410 define <8 x float> @allones_v8f32_optsize() nounwind optsize {
411 ; X32-SSE-LABEL: allones_v8f32_optsize:
413 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
414 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
417 ; X32-AVX1-LABEL: allones_v8f32_optsize:
419 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
420 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
421 ; X32-AVX1-NEXT: retl
423 ; X32-AVX256-LABEL: allones_v8f32_optsize:
424 ; X32-AVX256: # %bb.0:
425 ; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
426 ; X32-AVX256-NEXT: retl
428 ; X64-SSE-LABEL: allones_v8f32_optsize:
430 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
431 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
434 ; X64-AVX1-LABEL: allones_v8f32_optsize:
436 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
437 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
438 ; X64-AVX1-NEXT: retq
440 ; X64-AVX256-LABEL: allones_v8f32_optsize:
441 ; X64-AVX256: # %bb.0:
442 ; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
443 ; X64-AVX256-NEXT: retq
444 ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
447 define <64 x i8> @allones_v64i8() nounwind {
448 ; X32-SSE-LABEL: allones_v64i8:
450 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
451 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
452 ; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2
453 ; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3
456 ; X32-AVX1-LABEL: allones_v64i8:
458 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
459 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
460 ; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1
461 ; X32-AVX1-NEXT: retl
463 ; X32-AVX2-LABEL: allones_v64i8:
465 ; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
466 ; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
467 ; X32-AVX2-NEXT: retl
469 ; X32-KNL-LABEL: allones_v64i8:
471 ; X32-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
472 ; X32-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
475 ; X32-SKX-LABEL: allones_v64i8:
477 ; X32-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
480 ; X64-SSE-LABEL: allones_v64i8:
482 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
483 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
484 ; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2
485 ; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3
488 ; X64-AVX1-LABEL: allones_v64i8:
490 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
491 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
492 ; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1
493 ; X64-AVX1-NEXT: retq
495 ; X64-AVX2-LABEL: allones_v64i8:
497 ; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
498 ; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
499 ; X64-AVX2-NEXT: retq
501 ; X64-KNL-LABEL: allones_v64i8:
503 ; X64-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
504 ; X64-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
507 ; X64-SKX-LABEL: allones_v64i8:
509 ; X64-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
511 ret <64 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
514 define <32 x i16> @allones_v32i16() nounwind {
515 ; X32-SSE-LABEL: allones_v32i16:
517 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
518 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
519 ; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2
520 ; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3
523 ; X32-AVX1-LABEL: allones_v32i16:
525 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
526 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
527 ; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1
528 ; X32-AVX1-NEXT: retl
530 ; X32-AVX2-LABEL: allones_v32i16:
532 ; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
533 ; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
534 ; X32-AVX2-NEXT: retl
536 ; X32-KNL-LABEL: allones_v32i16:
538 ; X32-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
539 ; X32-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
542 ; X32-SKX-LABEL: allones_v32i16:
544 ; X32-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
547 ; X64-SSE-LABEL: allones_v32i16:
549 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
550 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
551 ; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2
552 ; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3
555 ; X64-AVX1-LABEL: allones_v32i16:
557 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
558 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
559 ; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1
560 ; X64-AVX1-NEXT: retq
562 ; X64-AVX2-LABEL: allones_v32i16:
564 ; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
565 ; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
566 ; X64-AVX2-NEXT: retq
568 ; X64-KNL-LABEL: allones_v32i16:
570 ; X64-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
571 ; X64-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
574 ; X64-SKX-LABEL: allones_v32i16:
576 ; X64-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
578 ret <32 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
581 define <16 x i32> @allones_v16i32() nounwind {
582 ; X32-SSE-LABEL: allones_v16i32:
584 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
585 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
586 ; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2
587 ; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3
590 ; X32-AVX1-LABEL: allones_v16i32:
592 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
593 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
594 ; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1
595 ; X32-AVX1-NEXT: retl
597 ; X32-AVX2-LABEL: allones_v16i32:
599 ; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
600 ; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
601 ; X32-AVX2-NEXT: retl
603 ; X32-AVX512-LABEL: allones_v16i32:
604 ; X32-AVX512: # %bb.0:
605 ; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
606 ; X32-AVX512-NEXT: retl
608 ; X64-SSE-LABEL: allones_v16i32:
610 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
611 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
612 ; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2
613 ; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3
616 ; X64-AVX1-LABEL: allones_v16i32:
618 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
619 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
620 ; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1
621 ; X64-AVX1-NEXT: retq
623 ; X64-AVX2-LABEL: allones_v16i32:
625 ; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
626 ; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
627 ; X64-AVX2-NEXT: retq
629 ; X64-AVX512-LABEL: allones_v16i32:
630 ; X64-AVX512: # %bb.0:
631 ; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
632 ; X64-AVX512-NEXT: retq
633 ret <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
636 define <8 x i64> @allones_v8i64() nounwind {
637 ; X32-SSE-LABEL: allones_v8i64:
639 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
640 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
641 ; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2
642 ; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3
645 ; X32-AVX1-LABEL: allones_v8i64:
647 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
648 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
649 ; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1
650 ; X32-AVX1-NEXT: retl
652 ; X32-AVX2-LABEL: allones_v8i64:
654 ; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
655 ; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
656 ; X32-AVX2-NEXT: retl
658 ; X32-AVX512-LABEL: allones_v8i64:
659 ; X32-AVX512: # %bb.0:
660 ; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
661 ; X32-AVX512-NEXT: retl
663 ; X64-SSE-LABEL: allones_v8i64:
665 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
666 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
667 ; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2
668 ; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3
671 ; X64-AVX1-LABEL: allones_v8i64:
673 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
674 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
675 ; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1
676 ; X64-AVX1-NEXT: retq
678 ; X64-AVX2-LABEL: allones_v8i64:
680 ; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
681 ; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
682 ; X64-AVX2-NEXT: retq
684 ; X64-AVX512-LABEL: allones_v8i64:
685 ; X64-AVX512: # %bb.0:
686 ; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
687 ; X64-AVX512-NEXT: retq
688 ret <8 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
691 define <8 x double> @allones_v8f64() nounwind {
692 ; X32-SSE-LABEL: allones_v8f64:
694 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
695 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
696 ; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2
697 ; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3
700 ; X32-AVX1-LABEL: allones_v8f64:
702 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
703 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
704 ; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1
705 ; X32-AVX1-NEXT: retl
707 ; X32-AVX2-LABEL: allones_v8f64:
709 ; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
710 ; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
711 ; X32-AVX2-NEXT: retl
713 ; X32-AVX512-LABEL: allones_v8f64:
714 ; X32-AVX512: # %bb.0:
715 ; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
716 ; X32-AVX512-NEXT: retl
718 ; X64-SSE-LABEL: allones_v8f64:
720 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
721 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
722 ; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2
723 ; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3
726 ; X64-AVX1-LABEL: allones_v8f64:
728 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
729 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
730 ; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1
731 ; X64-AVX1-NEXT: retq
733 ; X64-AVX2-LABEL: allones_v8f64:
735 ; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
736 ; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
737 ; X64-AVX2-NEXT: retq
739 ; X64-AVX512-LABEL: allones_v8f64:
740 ; X64-AVX512: # %bb.0:
741 ; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
742 ; X64-AVX512-NEXT: retq
743 ret <8 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
746 define <16 x float> @allones_v16f32() nounwind {
747 ; X32-SSE-LABEL: allones_v16f32:
749 ; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0
750 ; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
751 ; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2
752 ; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3
755 ; X32-AVX1-LABEL: allones_v16f32:
757 ; X32-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
758 ; X32-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
759 ; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1
760 ; X32-AVX1-NEXT: retl
762 ; X32-AVX2-LABEL: allones_v16f32:
764 ; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
765 ; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
766 ; X32-AVX2-NEXT: retl
768 ; X32-AVX512-LABEL: allones_v16f32:
769 ; X32-AVX512: # %bb.0:
770 ; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
771 ; X32-AVX512-NEXT: retl
773 ; X64-SSE-LABEL: allones_v16f32:
775 ; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0
776 ; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1
777 ; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2
778 ; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3
781 ; X64-AVX1-LABEL: allones_v16f32:
783 ; X64-AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0
784 ; X64-AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0
785 ; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1
786 ; X64-AVX1-NEXT: retq
788 ; X64-AVX2-LABEL: allones_v16f32:
790 ; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0
791 ; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
792 ; X64-AVX2-NEXT: retq
794 ; X64-AVX512-LABEL: allones_v16f32:
795 ; X64-AVX512: # %bb.0:
796 ; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
797 ; X64-AVX512-NEXT: retq
798 ret <16 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>