[Reland][Runtimes] Merge 'compile_commands.json' files from runtimes build (#116303)
[llvm-project.git] / llvm / test / CodeGen / X86 / all-ones-vector.ll
blobd624f6c13e3670235509d33b02fa178f4d2185a6
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=SSE
3 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx  | FileCheck %s --check-prefixes=AVX,AVX1
4 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX256,AVX2
5 ; RUN: llc < %s -mtriple=i386-unknown -mcpu=knl | FileCheck %s --check-prefixes=AVX,AVX256,AVX512
6 ; RUN: llc < %s -mtriple=i386-unknown -mcpu=skx | FileCheck %s --check-prefixes=AVX,AVX256,AVX512
7 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE
8 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx  | FileCheck %s --check-prefixes=AVX,AVX1
9 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX256,AVX2
10 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=knl | FileCheck %s --check-prefixes=AVX,AVX256,AVX512
11 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=skx | FileCheck %s --check-prefixes=AVX,AVX256,AVX512
13 define <16 x i8> @allones_v16i8() nounwind {
14 ; SSE-LABEL: allones_v16i8:
15 ; SSE:       # %bb.0:
16 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
17 ; SSE-NEXT:    ret{{[l|q]}}
19 ; AVX-LABEL: allones_v16i8:
20 ; AVX:       # %bb.0:
21 ; AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
22 ; AVX-NEXT:    ret{{[l|q]}}
23   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>
26 define <8 x i16> @allones_v8i16() nounwind {
27 ; SSE-LABEL: allones_v8i16:
28 ; SSE:       # %bb.0:
29 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
30 ; SSE-NEXT:    ret{{[l|q]}}
32 ; AVX-LABEL: allones_v8i16:
33 ; AVX:       # %bb.0:
34 ; AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
35 ; AVX-NEXT:    ret{{[l|q]}}
36   ret <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
39 define <4 x i32> @allones_v4i32() nounwind {
40 ; SSE-LABEL: allones_v4i32:
41 ; SSE:       # %bb.0:
42 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
43 ; SSE-NEXT:    ret{{[l|q]}}
45 ; AVX-LABEL: allones_v4i32:
46 ; AVX:       # %bb.0:
47 ; AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
48 ; AVX-NEXT:    ret{{[l|q]}}
49   ret <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
52 define <2 x i64> @allones_v2i64() nounwind {
53 ; SSE-LABEL: allones_v2i64:
54 ; SSE:       # %bb.0:
55 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
56 ; SSE-NEXT:    ret{{[l|q]}}
58 ; AVX-LABEL: allones_v2i64:
59 ; AVX:       # %bb.0:
60 ; AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
61 ; AVX-NEXT:    ret{{[l|q]}}
62   ret <2 x i64> <i64 -1, i64 -1>
65 define <2 x double> @allones_v2f64() nounwind {
66 ; SSE-LABEL: allones_v2f64:
67 ; SSE:       # %bb.0:
68 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
69 ; SSE-NEXT:    ret{{[l|q]}}
71 ; AVX-LABEL: allones_v2f64:
72 ; AVX:       # %bb.0:
73 ; AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
74 ; AVX-NEXT:    ret{{[l|q]}}
75   ret <2 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff>
78 define <4 x float> @allones_v4f32() nounwind {
79 ; SSE-LABEL: allones_v4f32:
80 ; SSE:       # %bb.0:
81 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
82 ; SSE-NEXT:    ret{{[l|q]}}
84 ; AVX-LABEL: allones_v4f32:
85 ; AVX:       # %bb.0:
86 ; AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
87 ; AVX-NEXT:    ret{{[l|q]}}
88   ret <4 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
91 define <32 x i8> @allones_v32i8() nounwind {
92 ; SSE-LABEL: allones_v32i8:
93 ; SSE:       # %bb.0:
94 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
95 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
96 ; SSE-NEXT:    ret{{[l|q]}}
98 ; AVX1-LABEL: allones_v32i8:
99 ; AVX1:       # %bb.0:
100 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
101 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
102 ; AVX1-NEXT:    ret{{[l|q]}}
104 ; AVX256-LABEL: allones_v32i8:
105 ; AVX256:       # %bb.0:
106 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
107 ; AVX256-NEXT:    ret{{[l|q]}}
108   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>
111 define <16 x i16> @allones_v16i16() nounwind {
112 ; SSE-LABEL: allones_v16i16:
113 ; SSE:       # %bb.0:
114 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
115 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
116 ; SSE-NEXT:    ret{{[l|q]}}
118 ; AVX1-LABEL: allones_v16i16:
119 ; AVX1:       # %bb.0:
120 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
121 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
122 ; AVX1-NEXT:    ret{{[l|q]}}
124 ; AVX256-LABEL: allones_v16i16:
125 ; AVX256:       # %bb.0:
126 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
127 ; AVX256-NEXT:    ret{{[l|q]}}
128   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>
131 define <8 x i32> @allones_v8i32() nounwind {
132 ; SSE-LABEL: allones_v8i32:
133 ; SSE:       # %bb.0:
134 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
135 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
136 ; SSE-NEXT:    ret{{[l|q]}}
138 ; AVX1-LABEL: allones_v8i32:
139 ; AVX1:       # %bb.0:
140 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
141 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
142 ; AVX1-NEXT:    ret{{[l|q]}}
144 ; AVX256-LABEL: allones_v8i32:
145 ; AVX256:       # %bb.0:
146 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
147 ; AVX256-NEXT:    ret{{[l|q]}}
148   ret <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
151 define <4 x i64> @allones_v4i64() nounwind {
152 ; SSE-LABEL: allones_v4i64:
153 ; SSE:       # %bb.0:
154 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
155 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
156 ; SSE-NEXT:    ret{{[l|q]}}
158 ; AVX1-LABEL: allones_v4i64:
159 ; AVX1:       # %bb.0:
160 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
161 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
162 ; AVX1-NEXT:    ret{{[l|q]}}
164 ; AVX256-LABEL: allones_v4i64:
165 ; AVX256:       # %bb.0:
166 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
167 ; AVX256-NEXT:    ret{{[l|q]}}
168   ret <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1>
171 define <4 x double> @allones_v4f64() nounwind {
172 ; SSE-LABEL: allones_v4f64:
173 ; SSE:       # %bb.0:
174 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
175 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
176 ; SSE-NEXT:    ret{{[l|q]}}
178 ; AVX1-LABEL: allones_v4f64:
179 ; AVX1:       # %bb.0:
180 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
181 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
182 ; AVX1-NEXT:    ret{{[l|q]}}
184 ; AVX256-LABEL: allones_v4f64:
185 ; AVX256:       # %bb.0:
186 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
187 ; AVX256-NEXT:    ret{{[l|q]}}
188   ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
191 define <4 x double> @allones_v4f64_optsize() nounwind optsize {
192 ; SSE-LABEL: allones_v4f64_optsize:
193 ; SSE:       # %bb.0:
194 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
195 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
196 ; SSE-NEXT:    ret{{[l|q]}}
198 ; AVX1-LABEL: allones_v4f64_optsize:
199 ; AVX1:       # %bb.0:
200 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
201 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
202 ; AVX1-NEXT:    ret{{[l|q]}}
204 ; AVX256-LABEL: allones_v4f64_optsize:
205 ; AVX256:       # %bb.0:
206 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
207 ; AVX256-NEXT:    ret{{[l|q]}}
208   ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
211 define <8 x float> @allones_v8f32() nounwind {
212 ; SSE-LABEL: allones_v8f32:
213 ; SSE:       # %bb.0:
214 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
215 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
216 ; SSE-NEXT:    ret{{[l|q]}}
218 ; AVX1-LABEL: allones_v8f32:
219 ; AVX1:       # %bb.0:
220 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
221 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
222 ; AVX1-NEXT:    ret{{[l|q]}}
224 ; AVX256-LABEL: allones_v8f32:
225 ; AVX256:       # %bb.0:
226 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
227 ; AVX256-NEXT:    ret{{[l|q]}}
228   ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
231 define <8 x float> @allones_v8f32_optsize() nounwind optsize {
232 ; SSE-LABEL: allones_v8f32_optsize:
233 ; SSE:       # %bb.0:
234 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
235 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
236 ; SSE-NEXT:    ret{{[l|q]}}
238 ; AVX1-LABEL: allones_v8f32_optsize:
239 ; AVX1:       # %bb.0:
240 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
241 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
242 ; AVX1-NEXT:    ret{{[l|q]}}
244 ; AVX256-LABEL: allones_v8f32_optsize:
245 ; AVX256:       # %bb.0:
246 ; AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
247 ; AVX256-NEXT:    ret{{[l|q]}}
248   ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
251 define <64 x i8> @allones_v64i8() nounwind {
252 ; SSE-LABEL: allones_v64i8:
253 ; SSE:       # %bb.0:
254 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
255 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
256 ; SSE-NEXT:    pcmpeqd %xmm2, %xmm2
257 ; SSE-NEXT:    pcmpeqd %xmm3, %xmm3
258 ; SSE-NEXT:    ret{{[l|q]}}
260 ; AVX1-LABEL: allones_v64i8:
261 ; AVX1:       # %bb.0:
262 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
263 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
264 ; AVX1-NEXT:    vmovaps %ymm0, %ymm1
265 ; AVX1-NEXT:    ret{{[l|q]}}
267 ; AVX2-LABEL: allones_v64i8:
268 ; AVX2:       # %bb.0:
269 ; AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
270 ; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
271 ; AVX2-NEXT:    ret{{[l|q]}}
273 ; AVX512-LABEL: allones_v64i8:
274 ; AVX512:       # %bb.0:
275 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
276 ; AVX512-NEXT:    ret{{[l|q]}}
277   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>
280 define <32 x i16> @allones_v32i16() nounwind {
281 ; SSE-LABEL: allones_v32i16:
282 ; SSE:       # %bb.0:
283 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
284 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
285 ; SSE-NEXT:    pcmpeqd %xmm2, %xmm2
286 ; SSE-NEXT:    pcmpeqd %xmm3, %xmm3
287 ; SSE-NEXT:    ret{{[l|q]}}
289 ; AVX1-LABEL: allones_v32i16:
290 ; AVX1:       # %bb.0:
291 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
292 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
293 ; AVX1-NEXT:    vmovaps %ymm0, %ymm1
294 ; AVX1-NEXT:    ret{{[l|q]}}
296 ; AVX2-LABEL: allones_v32i16:
297 ; AVX2:       # %bb.0:
298 ; AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
299 ; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
300 ; AVX2-NEXT:    ret{{[l|q]}}
302 ; AVX512-LABEL: allones_v32i16:
303 ; AVX512:       # %bb.0:
304 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
305 ; AVX512-NEXT:    ret{{[l|q]}}
306   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>
309 define <16 x i32> @allones_v16i32() nounwind {
310 ; SSE-LABEL: allones_v16i32:
311 ; SSE:       # %bb.0:
312 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
313 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
314 ; SSE-NEXT:    pcmpeqd %xmm2, %xmm2
315 ; SSE-NEXT:    pcmpeqd %xmm3, %xmm3
316 ; SSE-NEXT:    ret{{[l|q]}}
318 ; AVX1-LABEL: allones_v16i32:
319 ; AVX1:       # %bb.0:
320 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
321 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
322 ; AVX1-NEXT:    vmovaps %ymm0, %ymm1
323 ; AVX1-NEXT:    ret{{[l|q]}}
325 ; AVX2-LABEL: allones_v16i32:
326 ; AVX2:       # %bb.0:
327 ; AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
328 ; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
329 ; AVX2-NEXT:    ret{{[l|q]}}
331 ; AVX512-LABEL: allones_v16i32:
332 ; AVX512:       # %bb.0:
333 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
334 ; AVX512-NEXT:    ret{{[l|q]}}
335   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>
338 define <8 x i64> @allones_v8i64() nounwind {
339 ; SSE-LABEL: allones_v8i64:
340 ; SSE:       # %bb.0:
341 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
342 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
343 ; SSE-NEXT:    pcmpeqd %xmm2, %xmm2
344 ; SSE-NEXT:    pcmpeqd %xmm3, %xmm3
345 ; SSE-NEXT:    ret{{[l|q]}}
347 ; AVX1-LABEL: allones_v8i64:
348 ; AVX1:       # %bb.0:
349 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
350 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
351 ; AVX1-NEXT:    vmovaps %ymm0, %ymm1
352 ; AVX1-NEXT:    ret{{[l|q]}}
354 ; AVX2-LABEL: allones_v8i64:
355 ; AVX2:       # %bb.0:
356 ; AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
357 ; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
358 ; AVX2-NEXT:    ret{{[l|q]}}
360 ; AVX512-LABEL: allones_v8i64:
361 ; AVX512:       # %bb.0:
362 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
363 ; AVX512-NEXT:    ret{{[l|q]}}
364   ret <8 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
367 define <8 x double> @allones_v8f64() nounwind {
368 ; SSE-LABEL: allones_v8f64:
369 ; SSE:       # %bb.0:
370 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
371 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
372 ; SSE-NEXT:    pcmpeqd %xmm2, %xmm2
373 ; SSE-NEXT:    pcmpeqd %xmm3, %xmm3
374 ; SSE-NEXT:    ret{{[l|q]}}
376 ; AVX1-LABEL: allones_v8f64:
377 ; AVX1:       # %bb.0:
378 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
379 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
380 ; AVX1-NEXT:    vmovaps %ymm0, %ymm1
381 ; AVX1-NEXT:    ret{{[l|q]}}
383 ; AVX2-LABEL: allones_v8f64:
384 ; AVX2:       # %bb.0:
385 ; AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
386 ; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
387 ; AVX2-NEXT:    ret{{[l|q]}}
389 ; AVX512-LABEL: allones_v8f64:
390 ; AVX512:       # %bb.0:
391 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
392 ; AVX512-NEXT:    ret{{[l|q]}}
393   ret <8 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
396 define <16 x float> @allones_v16f32() nounwind {
397 ; SSE-LABEL: allones_v16f32:
398 ; SSE:       # %bb.0:
399 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
400 ; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
401 ; SSE-NEXT:    pcmpeqd %xmm2, %xmm2
402 ; SSE-NEXT:    pcmpeqd %xmm3, %xmm3
403 ; SSE-NEXT:    ret{{[l|q]}}
405 ; AVX1-LABEL: allones_v16f32:
406 ; AVX1:       # %bb.0:
407 ; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
408 ; AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
409 ; AVX1-NEXT:    vmovaps %ymm0, %ymm1
410 ; AVX1-NEXT:    ret{{[l|q]}}
412 ; AVX2-LABEL: allones_v16f32:
413 ; AVX2:       # %bb.0:
414 ; AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
415 ; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
416 ; AVX2-NEXT:    ret{{[l|q]}}
418 ; AVX512-LABEL: allones_v16f32:
419 ; AVX512:       # %bb.0:
420 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
421 ; AVX512-NEXT:    ret{{[l|q]}}
422   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>