Lines Matching refs:AVX
2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --che…
3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --ch…
4 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX -…
7 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=X32-AVX
10 ; AVX-LABEL: merge_4f64_2f64_23:
11 ; AVX: # BB#0:
12 ; AVX-NEXT: vmovups 32(%rdi), %ymm0
13 ; AVX-NEXT: retq
15 ; X32-AVX-LABEL: merge_4f64_2f64_23:
16 ; X32-AVX: # BB#0:
17 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
18 ; X32-AVX-NEXT: vmovups 32(%eax), %ymm0
19 ; X32-AVX-NEXT: retl
29 ; AVX-LABEL: merge_4f64_2f64_2z:
30 ; AVX: # BB#0:
31 ; AVX-NEXT: vmovaps 32(%rdi), %xmm0
32 ; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
33 ; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
34 ; AVX-NEXT: retq
36 ; X32-AVX-LABEL: merge_4f64_2f64_2z:
37 ; X32-AVX: # BB#0:
38 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
39 ; X32-AVX-NEXT: vmovaps 32(%eax), %xmm0
40 ; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
41 ; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
42 ; X32-AVX-NEXT: retl
50 ; AVX-LABEL: merge_4f64_f64_2345:
51 ; AVX: # BB#0:
52 ; AVX-NEXT: vmovups 16(%rdi), %ymm0
53 ; AVX-NEXT: retq
55 ; X32-AVX-LABEL: merge_4f64_f64_2345:
56 ; X32-AVX: # BB#0:
57 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
58 ; X32-AVX-NEXT: vmovups 16(%eax), %ymm0
59 ; X32-AVX-NEXT: retl
76 ; AVX-LABEL: merge_4f64_f64_3zuu:
77 ; AVX: # BB#0:
78 ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
79 ; AVX-NEXT: retq
81 ; X32-AVX-LABEL: merge_4f64_f64_3zuu:
82 ; X32-AVX: # BB#0:
83 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
84 ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
85 ; X32-AVX-NEXT: retl
94 ; AVX-LABEL: merge_4f64_f64_34uu:
95 ; AVX: # BB#0:
96 ; AVX-NEXT: vmovups 24(%rdi), %xmm0
97 ; AVX-NEXT: retq
99 ; X32-AVX-LABEL: merge_4f64_f64_34uu:
100 ; X32-AVX: # BB#0:
101 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
102 ; X32-AVX-NEXT: vmovups 24(%eax), %xmm0
103 ; X32-AVX-NEXT: retl
114 ; AVX-LABEL: merge_4f64_f64_45zz:
115 ; AVX: # BB#0:
116 ; AVX-NEXT: vmovups 32(%rdi), %xmm0
117 ; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
118 ; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
119 ; AVX-NEXT: retq
121 ; X32-AVX-LABEL: merge_4f64_f64_45zz:
122 ; X32-AVX: # BB#0:
123 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
124 ; X32-AVX-NEXT: vmovups 32(%eax), %xmm0
125 ; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
126 ; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
127 ; X32-AVX-NEXT: retl
138 ; AVX-LABEL: merge_4f64_f64_34z6:
139 ; AVX: # BB#0:
140 ; AVX-NEXT: vxorpd %ymm0, %ymm0, %ymm0
141 ; AVX-NEXT: vblendpd {{.*#+}} ymm0 = mem[0,1],ymm0[2],mem[3]
142 ; AVX-NEXT: retq
144 ; X32-AVX-LABEL: merge_4f64_f64_34z6:
145 ; X32-AVX: # BB#0:
146 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
147 ; X32-AVX-NEXT: vxorpd %ymm0, %ymm0, %ymm0
148 ; X32-AVX-NEXT: vblendpd {{.*#+}} ymm0 = mem[0,1],ymm0[2],mem[3]
149 ; X32-AVX-NEXT: retl
164 ; AVX-LABEL: merge_4i64_2i64_3z:
165 ; AVX: # BB#0:
166 ; AVX-NEXT: vmovaps 48(%rdi), %xmm0
167 ; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
168 ; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
169 ; AVX-NEXT: retq
171 ; X32-AVX-LABEL: merge_4i64_2i64_3z:
172 ; X32-AVX: # BB#0:
173 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
174 ; X32-AVX-NEXT: vmovaps 48(%eax), %xmm0
175 ; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
176 ; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
177 ; X32-AVX-NEXT: retl
185 ; AVX-LABEL: merge_4i64_i64_1234:
186 ; AVX: # BB#0:
187 ; AVX-NEXT: vmovups 8(%rdi), %ymm0
188 ; AVX-NEXT: retq
190 ; X32-AVX-LABEL: merge_4i64_i64_1234:
191 ; X32-AVX: # BB#0:
192 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
193 ; X32-AVX-NEXT: vmovups 8(%eax), %ymm0
194 ; X32-AVX-NEXT: retl
211 ; AVX-LABEL: merge_4i64_i64_1zzu:
212 ; AVX: # BB#0:
213 ; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
214 ; AVX-NEXT: retq
216 ; X32-AVX-LABEL: merge_4i64_i64_1zzu:
217 ; X32-AVX: # BB#0:
218 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
219 ; X32-AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
220 ; X32-AVX-NEXT: retl
230 ; AVX-LABEL: merge_4i64_i64_23zz:
231 ; AVX: # BB#0:
232 ; AVX-NEXT: vmovups 16(%rdi), %xmm0
233 ; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
234 ; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
235 ; AVX-NEXT: retq
237 ; X32-AVX-LABEL: merge_4i64_i64_23zz:
238 ; X32-AVX: # BB#0:
239 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
240 ; X32-AVX-NEXT: vmovups 16(%eax), %xmm0
241 ; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
242 ; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
243 ; X32-AVX-NEXT: retl
278 ; X32-AVX-LABEL: merge_8f32_2f32_23z5:
279 ; X32-AVX: # BB#0:
280 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
281 ; X32-AVX-NEXT: vxorpd %ymm0, %ymm0, %ymm0
282 ; X32-AVX-NEXT: vblendpd {{.*#+}} ymm0 = mem[0,1],ymm0[2],mem[3]
283 ; X32-AVX-NEXT: retl
297 ; AVX-LABEL: merge_8f32_4f32_z2:
298 ; AVX: # BB#0:
299 ; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0
300 ; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0
301 ; AVX-NEXT: retq
303 ; X32-AVX-LABEL: merge_8f32_4f32_z2:
304 ; X32-AVX: # BB#0:
305 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
306 ; X32-AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0
307 ; X32-AVX-NEXT: vinsertf128 $1, 32(%eax), %ymm0, %ymm0
308 ; X32-AVX-NEXT: retl
316 ; AVX-LABEL: merge_8f32_f32_12zzuuzz:
317 ; AVX: # BB#0:
318 ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
319 ; AVX-NEXT: retq
321 ; X32-AVX-LABEL: merge_8f32_f32_12zzuuzz:
322 ; X32-AVX: # BB#0:
323 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
324 ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
325 ; X32-AVX-NEXT: retl
340 ; AVX-LABEL: merge_8f32_f32_1u3u5zu8:
341 ; AVX: # BB#0:
342 ; AVX-NEXT: vxorps %ymm0, %ymm0, %ymm0
343 ; AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7]
344 ; AVX-NEXT: retq
346 ; X32-AVX-LABEL: merge_8f32_f32_1u3u5zu8:
347 ; X32-AVX: # BB#0:
348 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
349 ; X32-AVX-NEXT: vxorps %ymm0, %ymm0, %ymm0
350 ; X32-AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7]
351 ; X32-AVX-NEXT: retl
369 ; AVX-LABEL: merge_8i32_4i32_z3:
370 ; AVX: # BB#0:
371 ; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0
372 ; AVX-NEXT: vinsertf128 $1, 48(%rdi), %ymm0, %ymm0
373 ; AVX-NEXT: retq
375 ; X32-AVX-LABEL: merge_8i32_4i32_z3:
376 ; X32-AVX: # BB#0:
377 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
378 ; X32-AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0
379 ; X32-AVX-NEXT: vinsertf128 $1, 48(%eax), %ymm0, %ymm0
380 ; X32-AVX-NEXT: retl
409 ; X32-AVX-LABEL: merge_8i32_i32_56zz9uzz:
410 ; X32-AVX: # BB#0:
411 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
412 ; X32-AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
413 ; X32-AVX-NEXT: vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero
414 ; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
415 ; X32-AVX-NEXT: retl
451 ; X32-AVX-LABEL: merge_8i32_i32_1u3u5zu8:
452 ; X32-AVX: # BB#0:
453 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
454 ; X32-AVX-NEXT: vxorps %ymm0, %ymm0, %ymm0
455 ; X32-AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7]
456 ; X32-AVX-NEXT: retl
474 ; AVX-LABEL: merge_16i16_i16_89zzzuuuuuuuuuuuz:
475 ; AVX: # BB#0:
476 ; AVX-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
477 ; AVX-NEXT: retq
479 ; X32-AVX-LABEL: merge_16i16_i16_89zzzuuuuuuuuuuuz:
480 ; X32-AVX: # BB#0:
481 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
482 ; X32-AVX-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
483 ; X32-AVX-NEXT: retl
498 ; AVX-LABEL: merge_16i16_i16_45u7uuuuuuuuuuuu:
499 ; AVX: # BB#0:
500 ; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
501 ; AVX-NEXT: retq
503 ; X32-AVX-LABEL: merge_16i16_i16_45u7uuuuuuuuuuuu:
504 ; X32-AVX: # BB#0:
505 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
506 ; X32-AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
507 ; X32-AVX-NEXT: retl
521 ; AVX-LABEL: merge_16i16_i16_0uu3uuuuuuuuCuEF:
522 ; AVX: # BB#0:
523 ; AVX-NEXT: vmovups (%rdi), %ymm0
524 ; AVX-NEXT: retq
526 ; X32-AVX-LABEL: merge_16i16_i16_0uu3uuuuuuuuCuEF:
527 ; X32-AVX: # BB#0:
528 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
529 ; X32-AVX-NEXT: vmovups (%eax), %ymm0
530 ; X32-AVX-NEXT: retl
568 ; X32-AVX-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF:
569 ; X32-AVX: # BB#0:
570 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
571 ; X32-AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,0,0,65535,0,0,0,0,0,0,0,0,65535,0,65535,65535]
572 ; X32-AVX-NEXT: vandps (%eax), %ymm0, %ymm0
573 ; X32-AVX-NEXT: retl
596 ; AVX-LABEL: merge_32i8_i8_45u7uuuuuuuuuuuuuuuuuuuuuuuuuuuu:
597 ; AVX: # BB#0:
598 ; AVX-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
599 ; AVX-NEXT: retq
601 ; X32-AVX-LABEL: merge_32i8_i8_45u7uuuuuuuuuuuuuuuuuuuuuuuuuuuu:
602 ; X32-AVX: # BB#0:
603 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
604 ; X32-AVX-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
605 ; X32-AVX-NEXT: retl
619 ; AVX-LABEL: merge_32i8_i8_23u5uuuuuuuuuuzzzzuuuuuuuuuuuuuu:
620 ; AVX: # BB#0:
621 ; AVX-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
622 ; AVX-NEXT: retq
624 ; X32-AVX-LABEL: merge_32i8_i8_23u5uuuuuuuuuuzzzzuuuuuuuuuuuuuu:
625 ; X32-AVX: # BB#0:
626 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
627 ; X32-AVX-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
628 ; X32-AVX-NEXT: retl
674 ; X32-AVX-LABEL: merge_4f64_f64_34uz_volatile:
675 ; X32-AVX: # BB#0:
676 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
677 ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
678 ; X32-AVX-NEXT: vmovhpd {{.*#+}} xmm0 = xmm0[0],mem[0]
679 ; X32-AVX-NEXT: vxorpd %xmm1, %xmm1, %xmm1
680 ; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
681 ; X32-AVX-NEXT: retl
726 ; X32-AVX-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile:
727 ; X32-AVX: # BB#0:
728 ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
729 ; X32-AVX-NEXT: vpxor %xmm0, %xmm0, %xmm0
730 ; X32-AVX-NEXT: vpinsrw $0, (%eax), %xmm0, %xmm1
731 ; X32-AVX-NEXT: vpinsrw $3, 6(%eax), %xmm1, %xmm1
732 ; X32-AVX-NEXT: vpinsrw $4, 24(%eax), %xmm0, %xmm0
733 ; X32-AVX-NEXT: vpinsrw $6, 28(%eax), %xmm0, %xmm0
734 ; X32-AVX-NEXT: vpinsrw $7, 30(%eax), %xmm0, %xmm0
735 ; X32-AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
736 ; X32-AVX-NEXT: retl