Lines Matching refs:AVX
4 …le=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX-SLOW,AVX1-SLOW
5 …le=x86_64-unknown -mattr=+avx,fast-hops | FileCheck %s --check-prefixes=AVX,AVX-FAST,AVX1-FAST
6 …le=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX-SLOW,AVX2-SLOW
7 …le=x86_64-unknown -mattr=+avx2,fast-hops | FileCheck %s --check-prefixes=AVX,AVX-FAST,AVX2-FAST
8 …=x86_64-unknown -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX-SLOW,AVX512-SLOW
9 …=x86_64-unknown -mattr=+avx512vl,fast-hops | FileCheck %s --check-prefixes=AVX,AVX-FAST,AVX512-FAST
28 ; AVX-SLOW-LABEL: extract_extract01_v4i32_add_i32:
29 ; AVX-SLOW: # %bb.0:
30 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
31 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
32 ; AVX-SLOW-NEXT: addl %ecx, %eax
33 ; AVX-SLOW-NEXT: retq
35 ; AVX-FAST-LABEL: extract_extract01_v4i32_add_i32:
36 ; AVX-FAST: # %bb.0:
37 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
38 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
39 ; AVX-FAST-NEXT: retq
63 ; AVX-SLOW-LABEL: extract_extract23_v4i32_add_i32:
64 ; AVX-SLOW: # %bb.0:
65 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %ecx
66 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %eax
67 ; AVX-SLOW-NEXT: addl %ecx, %eax
68 ; AVX-SLOW-NEXT: retq
70 ; AVX-FAST-LABEL: extract_extract23_v4i32_add_i32:
71 ; AVX-FAST: # %bb.0:
72 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
73 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, %eax
74 ; AVX-FAST-NEXT: retq
96 ; AVX-SLOW-LABEL: extract_extract01_v4i32_add_i32_commute:
97 ; AVX-SLOW: # %bb.0:
98 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
99 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
100 ; AVX-SLOW-NEXT: addl %ecx, %eax
101 ; AVX-SLOW-NEXT: retq
103 ; AVX-FAST-LABEL: extract_extract01_v4i32_add_i32_commute:
104 ; AVX-FAST: # %bb.0:
105 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
106 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
107 ; AVX-FAST-NEXT: retq
131 ; AVX-SLOW-LABEL: extract_extract23_v4i32_add_i32_commute:
132 ; AVX-SLOW: # %bb.0:
133 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %ecx
134 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %eax
135 ; AVX-SLOW-NEXT: addl %ecx, %eax
136 ; AVX-SLOW-NEXT: retq
138 ; AVX-FAST-LABEL: extract_extract23_v4i32_add_i32_commute:
139 ; AVX-FAST: # %bb.0:
140 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
141 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, %eax
142 ; AVX-FAST-NEXT: retq
165 ; AVX-SLOW-LABEL: extract_extract01_v8i16_add_i16:
166 ; AVX-SLOW: # %bb.0:
167 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
168 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %eax
169 ; AVX-SLOW-NEXT: addl %ecx, %eax
170 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
171 ; AVX-SLOW-NEXT: retq
173 ; AVX-FAST-LABEL: extract_extract01_v8i16_add_i16:
174 ; AVX-FAST: # %bb.0:
175 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
176 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
177 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
178 ; AVX-FAST-NEXT: retq
201 ; AVX-SLOW-LABEL: extract_extract45_v8i16_add_i16:
202 ; AVX-SLOW: # %bb.0:
203 ; AVX-SLOW-NEXT: vpextrw $4, %xmm0, %ecx
204 ; AVX-SLOW-NEXT: vpextrw $5, %xmm0, %eax
205 ; AVX-SLOW-NEXT: addl %ecx, %eax
206 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
207 ; AVX-SLOW-NEXT: retq
209 ; AVX-FAST-LABEL: extract_extract45_v8i16_add_i16:
210 ; AVX-FAST: # %bb.0:
211 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
212 ; AVX-FAST-NEXT: vpextrw $2, %xmm0, %eax
213 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
214 ; AVX-FAST-NEXT: retq
237 ; AVX-SLOW-LABEL: extract_extract01_v8i16_add_i16_commute:
238 ; AVX-SLOW: # %bb.0:
239 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
240 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %eax
241 ; AVX-SLOW-NEXT: addl %ecx, %eax
242 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
243 ; AVX-SLOW-NEXT: retq
245 ; AVX-FAST-LABEL: extract_extract01_v8i16_add_i16_commute:
246 ; AVX-FAST: # %bb.0:
247 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
248 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
249 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
250 ; AVX-FAST-NEXT: retq
273 ; AVX-SLOW-LABEL: extract_extract45_v8i16_add_i16_commute:
274 ; AVX-SLOW: # %bb.0:
275 ; AVX-SLOW-NEXT: vpextrw $4, %xmm0, %ecx
276 ; AVX-SLOW-NEXT: vpextrw $5, %xmm0, %eax
277 ; AVX-SLOW-NEXT: addl %ecx, %eax
278 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
279 ; AVX-SLOW-NEXT: retq
281 ; AVX-FAST-LABEL: extract_extract45_v8i16_add_i16_commute:
282 ; AVX-FAST: # %bb.0:
283 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
284 ; AVX-FAST-NEXT: vpextrw $2, %xmm0, %eax
285 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
286 ; AVX-FAST-NEXT: retq
308 ; AVX-SLOW-LABEL: extract_extract01_v4i32_sub_i32:
309 ; AVX-SLOW: # %bb.0:
310 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
311 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %ecx
312 ; AVX-SLOW-NEXT: subl %ecx, %eax
313 ; AVX-SLOW-NEXT: retq
315 ; AVX-FAST-LABEL: extract_extract01_v4i32_sub_i32:
316 ; AVX-FAST: # %bb.0:
317 ; AVX-FAST-NEXT: vphsubd %xmm0, %xmm0, %xmm0
318 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
319 ; AVX-FAST-NEXT: retq
343 ; AVX-SLOW-LABEL: extract_extract23_v4i32_sub_i32:
344 ; AVX-SLOW: # %bb.0:
345 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %eax
346 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %ecx
347 ; AVX-SLOW-NEXT: subl %ecx, %eax
348 ; AVX-SLOW-NEXT: retq
350 ; AVX-FAST-LABEL: extract_extract23_v4i32_sub_i32:
351 ; AVX-FAST: # %bb.0:
352 ; AVX-FAST-NEXT: vphsubd %xmm0, %xmm0, %xmm0
353 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, %eax
354 ; AVX-FAST-NEXT: retq
370 ; AVX-LABEL: extract_extract01_v4i32_sub_i32_commute:
371 ; AVX: # %bb.0:
372 ; AVX-NEXT: vmovd %xmm0, %ecx
373 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
374 ; AVX-NEXT: subl %ecx, %eax
375 ; AVX-NEXT: retq
392 ; AVX-LABEL: extract_extract23_v4i32_sub_i32_commute:
393 ; AVX: # %bb.0:
394 ; AVX-NEXT: vextractps $2, %xmm0, %ecx
395 ; AVX-NEXT: vextractps $3, %xmm0, %eax
396 ; AVX-NEXT: subl %ecx, %eax
397 ; AVX-NEXT: retq
420 ; AVX-SLOW-LABEL: extract_extract01_v8i16_sub_i16:
421 ; AVX-SLOW: # %bb.0:
422 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
423 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %ecx
424 ; AVX-SLOW-NEXT: subl %ecx, %eax
425 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
426 ; AVX-SLOW-NEXT: retq
428 ; AVX-FAST-LABEL: extract_extract01_v8i16_sub_i16:
429 ; AVX-FAST: # %bb.0:
430 ; AVX-FAST-NEXT: vphsubw %xmm0, %xmm0, %xmm0
431 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
432 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
433 ; AVX-FAST-NEXT: retq
456 ; AVX-SLOW-LABEL: extract_extract23_v8i16_sub_i16:
457 ; AVX-SLOW: # %bb.0:
458 ; AVX-SLOW-NEXT: vpextrw $2, %xmm0, %eax
459 ; AVX-SLOW-NEXT: vpextrw $3, %xmm0, %ecx
460 ; AVX-SLOW-NEXT: subl %ecx, %eax
461 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
462 ; AVX-SLOW-NEXT: retq
464 ; AVX-FAST-LABEL: extract_extract23_v8i16_sub_i16:
465 ; AVX-FAST: # %bb.0:
466 ; AVX-FAST-NEXT: vphsubw %xmm0, %xmm0, %xmm0
467 ; AVX-FAST-NEXT: vpextrw $1, %xmm0, %eax
468 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
469 ; AVX-FAST-NEXT: retq
485 ; AVX-LABEL: extract_extract01_v8i16_sub_i16_commute:
486 ; AVX: # %bb.0:
487 ; AVX-NEXT: vmovd %xmm0, %ecx
488 ; AVX-NEXT: vpextrw $1, %xmm0, %eax
489 ; AVX-NEXT: subl %ecx, %eax
490 ; AVX-NEXT: # kill: def $ax killed $ax killed $eax
491 ; AVX-NEXT: retq
507 ; AVX-LABEL: extract_extract23_v8i16_sub_i16_commute:
508 ; AVX: # %bb.0:
509 ; AVX-NEXT: vpextrw $2, %xmm0, %ecx
510 ; AVX-NEXT: vpextrw $3, %xmm0, %eax
511 ; AVX-NEXT: subl %ecx, %eax
512 ; AVX-NEXT: # kill: def $ax killed $ax killed $eax
513 ; AVX-NEXT: retq
537 ; AVX-SLOW-LABEL: extract_extract01_v8i32_add_i32:
538 ; AVX-SLOW: # %bb.0:
539 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
540 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
541 ; AVX-SLOW-NEXT: addl %ecx, %eax
542 ; AVX-SLOW-NEXT: vzeroupper
543 ; AVX-SLOW-NEXT: retq
545 ; AVX-FAST-LABEL: extract_extract01_v8i32_add_i32:
546 ; AVX-FAST: # %bb.0:
547 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
548 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
549 ; AVX-FAST-NEXT: vzeroupper
550 ; AVX-FAST-NEXT: retq
574 ; AVX-SLOW-LABEL: extract_extract23_v8i32_add_i32:
575 ; AVX-SLOW: # %bb.0:
576 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %ecx
577 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %eax
578 ; AVX-SLOW-NEXT: addl %ecx, %eax
579 ; AVX-SLOW-NEXT: vzeroupper
580 ; AVX-SLOW-NEXT: retq
582 ; AVX-FAST-LABEL: extract_extract23_v8i32_add_i32:
583 ; AVX-FAST: # %bb.0:
584 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
585 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, %eax
586 ; AVX-FAST-NEXT: vzeroupper
587 ; AVX-FAST-NEXT: retq
611 ; AVX-SLOW-LABEL: extract_extract67_v8i32_add_i32:
612 ; AVX-SLOW: # %bb.0:
613 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
614 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %ecx
615 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %eax
616 ; AVX-SLOW-NEXT: addl %ecx, %eax
617 ; AVX-SLOW-NEXT: vzeroupper
618 ; AVX-SLOW-NEXT: retq
664 ; AVX-SLOW-LABEL: extract_extract01_v8i32_add_i32_commute:
665 ; AVX-SLOW: # %bb.0:
666 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
667 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
668 ; AVX-SLOW-NEXT: addl %ecx, %eax
669 ; AVX-SLOW-NEXT: vzeroupper
670 ; AVX-SLOW-NEXT: retq
672 ; AVX-FAST-LABEL: extract_extract01_v8i32_add_i32_commute:
673 ; AVX-FAST: # %bb.0:
674 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
675 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
676 ; AVX-FAST-NEXT: vzeroupper
677 ; AVX-FAST-NEXT: retq
701 ; AVX-SLOW-LABEL: extract_extract23_v8i32_add_i32_commute:
702 ; AVX-SLOW: # %bb.0:
703 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %ecx
704 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %eax
705 ; AVX-SLOW-NEXT: addl %ecx, %eax
706 ; AVX-SLOW-NEXT: vzeroupper
707 ; AVX-SLOW-NEXT: retq
709 ; AVX-FAST-LABEL: extract_extract23_v8i32_add_i32_commute:
710 ; AVX-FAST: # %bb.0:
711 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
712 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, %eax
713 ; AVX-FAST-NEXT: vzeroupper
714 ; AVX-FAST-NEXT: retq
738 ; AVX-SLOW-LABEL: extract_extract67_v8i32_add_i32_commute:
739 ; AVX-SLOW: # %bb.0:
740 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
741 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %ecx
742 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %eax
743 ; AVX-SLOW-NEXT: addl %ecx, %eax
744 ; AVX-SLOW-NEXT: vzeroupper
745 ; AVX-SLOW-NEXT: retq
792 ; AVX-SLOW-LABEL: extract_extract01_v16i16_add_i16:
793 ; AVX-SLOW: # %bb.0:
794 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
795 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %eax
796 ; AVX-SLOW-NEXT: addl %ecx, %eax
797 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
798 ; AVX-SLOW-NEXT: vzeroupper
799 ; AVX-SLOW-NEXT: retq
801 ; AVX-FAST-LABEL: extract_extract01_v16i16_add_i16:
802 ; AVX-FAST: # %bb.0:
803 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
804 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
805 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
806 ; AVX-FAST-NEXT: vzeroupper
807 ; AVX-FAST-NEXT: retq
830 ; AVX-SLOW-LABEL: extract_extract23_v16i16_add_i16:
831 ; AVX-SLOW: # %bb.0:
832 ; AVX-SLOW-NEXT: vpextrw $2, %xmm0, %ecx
833 ; AVX-SLOW-NEXT: vpextrw $3, %xmm0, %eax
834 ; AVX-SLOW-NEXT: addl %ecx, %eax
835 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
836 ; AVX-SLOW-NEXT: vzeroupper
837 ; AVX-SLOW-NEXT: retq
839 ; AVX-FAST-LABEL: extract_extract23_v16i16_add_i16:
840 ; AVX-FAST: # %bb.0:
841 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
842 ; AVX-FAST-NEXT: vpextrw $1, %xmm0, %eax
843 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
844 ; AVX-FAST-NEXT: vzeroupper
845 ; AVX-FAST-NEXT: retq
946 ; AVX-SLOW-LABEL: extract_extract01_v16i16_add_i16_commute:
947 ; AVX-SLOW: # %bb.0:
948 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
949 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %eax
950 ; AVX-SLOW-NEXT: addl %ecx, %eax
951 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
952 ; AVX-SLOW-NEXT: vzeroupper
953 ; AVX-SLOW-NEXT: retq
955 ; AVX-FAST-LABEL: extract_extract01_v16i16_add_i16_commute:
956 ; AVX-FAST: # %bb.0:
957 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
958 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
959 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
960 ; AVX-FAST-NEXT: vzeroupper
961 ; AVX-FAST-NEXT: retq
984 ; AVX-SLOW-LABEL: extract_extract45_v16i16_add_i16_commute:
985 ; AVX-SLOW: # %bb.0:
986 ; AVX-SLOW-NEXT: vpextrw $4, %xmm0, %ecx
987 ; AVX-SLOW-NEXT: vpextrw $5, %xmm0, %eax
988 ; AVX-SLOW-NEXT: addl %ecx, %eax
989 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
990 ; AVX-SLOW-NEXT: vzeroupper
991 ; AVX-SLOW-NEXT: retq
993 ; AVX-FAST-LABEL: extract_extract45_v16i16_add_i16_commute:
994 ; AVX-FAST: # %bb.0:
995 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
996 ; AVX-FAST-NEXT: vpextrw $2, %xmm0, %eax
997 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
998 ; AVX-FAST-NEXT: vzeroupper
999 ; AVX-FAST-NEXT: retq
1099 ; AVX-SLOW-LABEL: extract_extract01_v8i32_sub_i32:
1100 ; AVX-SLOW: # %bb.0:
1101 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1102 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %ecx
1103 ; AVX-SLOW-NEXT: subl %ecx, %eax
1104 ; AVX-SLOW-NEXT: vzeroupper
1105 ; AVX-SLOW-NEXT: retq
1107 ; AVX-FAST-LABEL: extract_extract01_v8i32_sub_i32:
1108 ; AVX-FAST: # %bb.0:
1109 ; AVX-FAST-NEXT: vphsubd %xmm0, %xmm0, %xmm0
1110 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1111 ; AVX-FAST-NEXT: vzeroupper
1112 ; AVX-FAST-NEXT: retq
1136 ; AVX-SLOW-LABEL: extract_extract23_v8i32_sub_i32:
1137 ; AVX-SLOW: # %bb.0:
1138 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %eax
1139 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %ecx
1140 ; AVX-SLOW-NEXT: subl %ecx, %eax
1141 ; AVX-SLOW-NEXT: vzeroupper
1142 ; AVX-SLOW-NEXT: retq
1144 ; AVX-FAST-LABEL: extract_extract23_v8i32_sub_i32:
1145 ; AVX-FAST: # %bb.0:
1146 ; AVX-FAST-NEXT: vphsubd %xmm0, %xmm0, %xmm0
1147 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, %eax
1148 ; AVX-FAST-NEXT: vzeroupper
1149 ; AVX-FAST-NEXT: retq
1173 ; AVX-SLOW-LABEL: extract_extract67_v8i32_sub_i32:
1174 ; AVX-SLOW: # %bb.0:
1175 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
1176 ; AVX-SLOW-NEXT: vextractps $2, %xmm0, %eax
1177 ; AVX-SLOW-NEXT: vextractps $3, %xmm0, %ecx
1178 ; AVX-SLOW-NEXT: subl %ecx, %eax
1179 ; AVX-SLOW-NEXT: vzeroupper
1180 ; AVX-SLOW-NEXT: retq
1222 ; AVX-LABEL: extract_extract01_v8i32_sub_i32_commute:
1223 ; AVX: # %bb.0:
1224 ; AVX-NEXT: vmovd %xmm0, %ecx
1225 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
1226 ; AVX-NEXT: subl %ecx, %eax
1227 ; AVX-NEXT: vzeroupper
1228 ; AVX-NEXT: retq
1251 ; AVX-SLOW-LABEL: extract_extract01_v16i16_sub_i16:
1252 ; AVX-SLOW: # %bb.0:
1253 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1254 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %ecx
1255 ; AVX-SLOW-NEXT: subl %ecx, %eax
1256 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1257 ; AVX-SLOW-NEXT: vzeroupper
1258 ; AVX-SLOW-NEXT: retq
1260 ; AVX-FAST-LABEL: extract_extract01_v16i16_sub_i16:
1261 ; AVX-FAST: # %bb.0:
1262 ; AVX-FAST-NEXT: vphsubw %xmm0, %xmm0, %xmm0
1263 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1264 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1265 ; AVX-FAST-NEXT: vzeroupper
1266 ; AVX-FAST-NEXT: retq
1284 ; AVX-LABEL: extract_extract01_v16i16_sub_i16_commute:
1285 ; AVX: # %bb.0:
1286 ; AVX-NEXT: vmovd %xmm0, %ecx
1287 ; AVX-NEXT: vpextrw $1, %xmm0, %eax
1288 ; AVX-NEXT: subl %ecx, %eax
1289 ; AVX-NEXT: # kill: def $ax killed $ax killed $eax
1290 ; AVX-NEXT: vzeroupper
1291 ; AVX-NEXT: retq
1315 ; AVX-SLOW-LABEL: extract_extract01_v16i32_add_i32:
1316 ; AVX-SLOW: # %bb.0:
1317 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
1318 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
1319 ; AVX-SLOW-NEXT: addl %ecx, %eax
1320 ; AVX-SLOW-NEXT: vzeroupper
1321 ; AVX-SLOW-NEXT: retq
1323 ; AVX-FAST-LABEL: extract_extract01_v16i32_add_i32:
1324 ; AVX-FAST: # %bb.0:
1325 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1326 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1327 ; AVX-FAST-NEXT: vzeroupper
1328 ; AVX-FAST-NEXT: retq
1350 ; AVX-SLOW-LABEL: extract_extract01_v16i32_add_i32_commute:
1351 ; AVX-SLOW: # %bb.0:
1352 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
1353 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
1354 ; AVX-SLOW-NEXT: addl %ecx, %eax
1355 ; AVX-SLOW-NEXT: vzeroupper
1356 ; AVX-SLOW-NEXT: retq
1358 ; AVX-FAST-LABEL: extract_extract01_v16i32_add_i32_commute:
1359 ; AVX-FAST: # %bb.0:
1360 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1361 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1362 ; AVX-FAST-NEXT: vzeroupper
1363 ; AVX-FAST-NEXT: retq
1386 ; AVX-SLOW-LABEL: extract_extract01_v32i16_add_i16:
1387 ; AVX-SLOW: # %bb.0:
1388 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
1389 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %eax
1390 ; AVX-SLOW-NEXT: addl %ecx, %eax
1391 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1392 ; AVX-SLOW-NEXT: vzeroupper
1393 ; AVX-SLOW-NEXT: retq
1395 ; AVX-FAST-LABEL: extract_extract01_v32i16_add_i16:
1396 ; AVX-FAST: # %bb.0:
1397 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
1398 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1399 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1400 ; AVX-FAST-NEXT: vzeroupper
1401 ; AVX-FAST-NEXT: retq
1424 ; AVX-SLOW-LABEL: extract_extract01_v32i16_add_i16_commute:
1425 ; AVX-SLOW: # %bb.0:
1426 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
1427 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %eax
1428 ; AVX-SLOW-NEXT: addl %ecx, %eax
1429 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1430 ; AVX-SLOW-NEXT: vzeroupper
1431 ; AVX-SLOW-NEXT: retq
1433 ; AVX-FAST-LABEL: extract_extract01_v32i16_add_i16_commute:
1434 ; AVX-FAST: # %bb.0:
1435 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
1436 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1437 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1438 ; AVX-FAST-NEXT: vzeroupper
1439 ; AVX-FAST-NEXT: retq
1461 ; AVX-SLOW-LABEL: extract_extract01_v16i32_sub_i32:
1462 ; AVX-SLOW: # %bb.0:
1463 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1464 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %ecx
1465 ; AVX-SLOW-NEXT: subl %ecx, %eax
1466 ; AVX-SLOW-NEXT: vzeroupper
1467 ; AVX-SLOW-NEXT: retq
1469 ; AVX-FAST-LABEL: extract_extract01_v16i32_sub_i32:
1470 ; AVX-FAST: # %bb.0:
1471 ; AVX-FAST-NEXT: vphsubd %xmm0, %xmm0, %xmm0
1472 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1473 ; AVX-FAST-NEXT: vzeroupper
1474 ; AVX-FAST-NEXT: retq
1490 ; AVX-LABEL: extract_extract01_v16i32_sub_i32_commute:
1491 ; AVX: # %bb.0:
1492 ; AVX-NEXT: vmovd %xmm0, %ecx
1493 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
1494 ; AVX-NEXT: subl %ecx, %eax
1495 ; AVX-NEXT: vzeroupper
1496 ; AVX-NEXT: retq
1519 ; AVX-SLOW-LABEL: extract_extract01_v32i16_sub_i16:
1520 ; AVX-SLOW: # %bb.0:
1521 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1522 ; AVX-SLOW-NEXT: vpextrw $1, %xmm0, %ecx
1523 ; AVX-SLOW-NEXT: subl %ecx, %eax
1524 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1525 ; AVX-SLOW-NEXT: vzeroupper
1526 ; AVX-SLOW-NEXT: retq
1528 ; AVX-FAST-LABEL: extract_extract01_v32i16_sub_i16:
1529 ; AVX-FAST: # %bb.0:
1530 ; AVX-FAST-NEXT: vphsubw %xmm0, %xmm0, %xmm0
1531 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1532 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1533 ; AVX-FAST-NEXT: vzeroupper
1534 ; AVX-FAST-NEXT: retq
1550 ; AVX-LABEL: extract_extract01_v32i16_sub_i16_commute:
1551 ; AVX: # %bb.0:
1552 ; AVX-NEXT: vmovd %xmm0, %ecx
1553 ; AVX-NEXT: vpextrw $1, %xmm0, %eax
1554 ; AVX-NEXT: subl %ecx, %eax
1555 ; AVX-NEXT: # kill: def $ax killed $ax killed $eax
1556 ; AVX-NEXT: vzeroupper
1557 ; AVX-NEXT: retq
1583 ; AVX-SLOW-LABEL: extract_extract01_v4i32_add_i32_uses1:
1584 ; AVX-SLOW: # %bb.0:
1585 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
1586 ; AVX-SLOW-NEXT: vmovd %xmm0, (%rdi)
1587 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
1588 ; AVX-SLOW-NEXT: addl %ecx, %eax
1589 ; AVX-SLOW-NEXT: retq
1591 ; AVX-FAST-LABEL: extract_extract01_v4i32_add_i32_uses1:
1592 ; AVX-FAST: # %bb.0:
1593 ; AVX-FAST-NEXT: vmovd %xmm0, (%rdi)
1594 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1595 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1596 ; AVX-FAST-NEXT: retq
1622 ; AVX-SLOW-LABEL: extract_extract01_v4i32_add_i32_uses2:
1623 ; AVX-SLOW: # %bb.0:
1624 ; AVX-SLOW-NEXT: vmovd %xmm0, %ecx
1625 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, %eax
1626 ; AVX-SLOW-NEXT: addl %ecx, %eax
1627 ; AVX-SLOW-NEXT: vpextrd $1, %xmm0, (%rdi)
1628 ; AVX-SLOW-NEXT: retq
1630 ; AVX-FAST-LABEL: extract_extract01_v4i32_add_i32_uses2:
1631 ; AVX-FAST: # %bb.0:
1632 ; AVX-FAST-NEXT: vpextrd $1, %xmm0, (%rdi)
1633 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1634 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1635 ; AVX-FAST-NEXT: retq
1654 ; AVX-LABEL: extract_extract01_v4i32_add_i32_uses3:
1655 ; AVX: # %bb.0:
1656 ; AVX-NEXT: vmovd %xmm0, %ecx
1657 ; AVX-NEXT: vmovd %xmm0, (%rdi)
1658 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
1659 ; AVX-NEXT: addl %ecx, %eax
1660 ; AVX-NEXT: vpextrd $1, %xmm0, (%rsi)
1661 ; AVX-NEXT: retq
1690 ; AVX-SLOW-LABEL: partial_reduction_add_v8i32:
1691 ; AVX-SLOW: # %bb.0:
1692 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1693 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
1694 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1695 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
1696 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1697 ; AVX-SLOW-NEXT: vzeroupper
1698 ; AVX-SLOW-NEXT: retq
1700 ; AVX-FAST-LABEL: partial_reduction_add_v8i32:
1701 ; AVX-FAST: # %bb.0:
1702 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1703 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1704 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1705 ; AVX-FAST-NEXT: vzeroupper
1706 ; AVX-FAST-NEXT: retq
1733 ; AVX-SLOW-LABEL: partial_reduction_add_v16i32:
1734 ; AVX-SLOW: # %bb.0:
1735 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1736 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
1737 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1738 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
1739 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1740 ; AVX-SLOW-NEXT: vzeroupper
1741 ; AVX-SLOW-NEXT: retq
1743 ; AVX-FAST-LABEL: partial_reduction_add_v16i32:
1744 ; AVX-FAST: # %bb.0:
1745 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1746 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
1747 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1748 ; AVX-FAST-NEXT: vzeroupper
1749 ; AVX-FAST-NEXT: retq
1776 ; AVX-SLOW-LABEL: partial_reduction_sub_v8i32:
1777 ; AVX-SLOW: # %bb.0:
1778 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1779 ; AVX-SLOW-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1780 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1781 ; AVX-SLOW-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1782 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1783 ; AVX-SLOW-NEXT: vzeroupper
1784 ; AVX-SLOW-NEXT: retq
1786 ; AVX-FAST-LABEL: partial_reduction_sub_v8i32:
1787 ; AVX-FAST: # %bb.0:
1788 ; AVX-FAST-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1789 ; AVX-FAST-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1790 ; AVX-FAST-NEXT: vphsubd %xmm0, %xmm0, %xmm0
1791 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1792 ; AVX-FAST-NEXT: vzeroupper
1793 ; AVX-FAST-NEXT: retq
1820 ; AVX-SLOW-LABEL: partial_reduction_sub_v16i32:
1821 ; AVX-SLOW: # %bb.0:
1822 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1823 ; AVX-SLOW-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1824 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1825 ; AVX-SLOW-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1826 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1827 ; AVX-SLOW-NEXT: vzeroupper
1828 ; AVX-SLOW-NEXT: retq
1948 ; AVX-SLOW-LABEL: hadd16_8:
1949 ; AVX-SLOW: # %bb.0:
1950 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1951 ; AVX-SLOW-NEXT: vpaddw %xmm1, %xmm0, %xmm0
1952 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1953 ; AVX-SLOW-NEXT: vpaddw %xmm1, %xmm0, %xmm0
1954 ; AVX-SLOW-NEXT: vpsrld $16, %xmm0, %xmm1
1955 ; AVX-SLOW-NEXT: vpaddw %xmm1, %xmm0, %xmm0
1956 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
1957 ; AVX-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1958 ; AVX-SLOW-NEXT: retq
1960 ; AVX-FAST-LABEL: hadd16_8:
1961 ; AVX-FAST: # %bb.0:
1962 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
1963 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
1964 ; AVX-FAST-NEXT: vphaddw %xmm0, %xmm0, %xmm0
1965 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
1966 ; AVX-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1967 ; AVX-FAST-NEXT: retq
1995 ; AVX-SLOW-LABEL: hadd32_4:
1996 ; AVX-SLOW: # %bb.0:
1997 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1998 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
1999 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
2000 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
2001 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
2002 ; AVX-SLOW-NEXT: retq
2004 ; AVX-FAST-LABEL: hadd32_4:
2005 ; AVX-FAST: # %bb.0:
2006 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2007 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2008 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
2009 ; AVX-FAST-NEXT: retq
2036 ; AVX-SLOW-LABEL: hadd32_8:
2037 ; AVX-SLOW: # %bb.0:
2038 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2039 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
2040 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
2041 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
2042 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
2043 ; AVX-SLOW-NEXT: vzeroupper
2044 ; AVX-SLOW-NEXT: retq
2046 ; AVX-FAST-LABEL: hadd32_8:
2047 ; AVX-FAST: # %bb.0:
2048 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2049 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2050 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
2051 ; AVX-FAST-NEXT: vzeroupper
2052 ; AVX-FAST-NEXT: retq
2079 ; AVX-SLOW-LABEL: hadd32_16:
2080 ; AVX-SLOW: # %bb.0:
2081 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2082 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
2083 ; AVX-SLOW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
2084 ; AVX-SLOW-NEXT: vpaddd %xmm1, %xmm0, %xmm0
2085 ; AVX-SLOW-NEXT: vmovd %xmm0, %eax
2086 ; AVX-SLOW-NEXT: vzeroupper
2087 ; AVX-SLOW-NEXT: retq
2089 ; AVX-FAST-LABEL: hadd32_16:
2090 ; AVX-FAST: # %bb.0:
2091 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2092 ; AVX-FAST-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2093 ; AVX-FAST-NEXT: vmovd %xmm0, %eax
2094 ; AVX-FAST-NEXT: vzeroupper
2095 ; AVX-FAST-NEXT: retq
2114 ; AVX-LABEL: hadd16_8_optsize:
2115 ; AVX: # %bb.0:
2116 ; AVX-NEXT: vphaddw %xmm0, %xmm0, %xmm0
2117 ; AVX-NEXT: vphaddw %xmm0, %xmm0, %xmm0
2118 ; AVX-NEXT: vphaddw %xmm0, %xmm0, %xmm0
2119 ; AVX-NEXT: vmovd %xmm0, %eax
2120 ; AVX-NEXT: # kill: def $ax killed $ax killed $eax
2121 ; AVX-NEXT: retq
2140 ; AVX-LABEL: hadd32_4_optsize:
2141 ; AVX: # %bb.0:
2142 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2143 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2144 ; AVX-NEXT: vmovd %xmm0, %eax
2145 ; AVX-NEXT: retq
2162 ; AVX-LABEL: hadd32_4_pgso:
2163 ; AVX: # %bb.0:
2164 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2165 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2166 ; AVX-NEXT: vmovd %xmm0, %eax
2167 ; AVX-NEXT: retq
2185 ; AVX-LABEL: hadd32_8_optsize:
2186 ; AVX: # %bb.0:
2187 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2188 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2189 ; AVX-NEXT: vmovd %xmm0, %eax
2190 ; AVX-NEXT: vzeroupper
2191 ; AVX-NEXT: retq
2209 ; AVX-LABEL: hadd32_16_optsize:
2210 ; AVX: # %bb.0:
2211 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2212 ; AVX-NEXT: vphaddd %xmm0, %xmm0, %xmm0
2213 ; AVX-NEXT: vmovd %xmm0, %eax
2214 ; AVX-NEXT: vzeroupper
2215 ; AVX-NEXT: retq