Home | History | Annotate | Download | only in X86

Lines Matching full:sse41

3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE41
34 ; SSE41-LABEL: max_gt_v2i64:
35 ; SSE41: # BB#0:
36 ; SSE41-NEXT: movdqa %xmm0, %xmm2
37 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
38 ; SSE41-NEXT: movdqa %xmm1, %xmm3
39 ; SSE41-NEXT: pxor %xmm0, %xmm3
40 ; SSE41-NEXT: pxor %xmm2, %xmm0
41 ; SSE41-NEXT: movdqa %xmm0, %xmm4
42 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
43 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
44 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
45 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
46 ; SSE41-NEXT: pand %xmm5, %xmm3
47 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
48 ; SSE41-NEXT: por %xmm3, %xmm0
49 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
50 ; SSE41-NEXT: movapd %xmm1, %xmm0
51 ; SSE41-NEXT: retq
113 ; SSE41-LABEL: max_gt_v4i64:
114 ; SSE41: # BB#0:
115 ; SSE41-NEXT: movdqa %xmm0, %xmm8
116 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
117 ; SSE41-NEXT: movdqa %xmm3, %xmm5
118 ; SSE41-NEXT: pxor %xmm0, %xmm5
119 ; SSE41-NEXT: movdqa %xmm1, %xmm6
120 ; SSE41-NEXT: pxor %xmm0, %xmm6
121 ; SSE41-NEXT: movdqa %xmm6, %xmm7
122 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
123 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
124 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
125 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
126 ; SSE41-NEXT: pand %xmm4, %xmm6
127 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
128 ; SSE41-NEXT: por %xmm6, %xmm5
129 ; SSE41-NEXT: movdqa %xmm2, %xmm4
130 ; SSE41-NEXT: pxor %xmm0, %xmm4
131 ; SSE41-NEXT: pxor %xmm8, %xmm0
132 ; SSE41-NEXT: movdqa %xmm0, %xmm6
133 ; SSE41-NEXT: pcmpgtd %xmm4, %xmm6
134 ; SSE41-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
135 ; SSE41-NEXT: pcmpeqd %xmm4, %xmm0
136 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
137 ; SSE41-NEXT: pand %xmm7, %xmm4
138 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
139 ; SSE41-NEXT: por %xmm4, %xmm0
140 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
141 ; SSE41-NEXT: movdqa %xmm5, %xmm0
142 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
143 ; SSE41-NEXT: movapd %xmm2, %xmm0
144 ; SSE41-NEXT: movapd %xmm3, %xmm1
145 ; SSE41-NEXT: retq
217 ; SSE41-LABEL: max_gt_v4i32:
218 ; SSE41: # BB#0:
219 ; SSE41-NEXT: pmaxud %xmm1, %xmm0
220 ; SSE41-NEXT: retq
258 ; SSE41-LABEL: max_gt_v8i32:
259 ; SSE41: # BB#0:
260 ; SSE41-NEXT: pmaxud %xmm2, %xmm0
261 ; SSE41-NEXT: pmaxud %xmm3, %xmm1
262 ; SSE41-NEXT: retq
306 ; SSE41-LABEL: max_gt_v8i16:
307 ; SSE41: # BB#0:
308 ; SSE41-NEXT: pmaxuw %xmm1, %xmm0
309 ; SSE41-NEXT: retq
347 ; SSE41-LABEL: max_gt_v16i16:
348 ; SSE41: # BB#0:
349 ; SSE41-NEXT: pmaxuw %xmm2, %xmm0
350 ; SSE41-NEXT: pmaxuw %xmm3, %xmm1
351 ; SSE41-NEXT: retq
454 ; SSE41-LABEL: max_ge_v2i64:
455 ; SSE41: # BB#0:
456 ; SSE41-NEXT: movdqa %xmm0, %xmm2
457 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
458 ; SSE41-NEXT: movdqa %xmm2, %xmm3
459 ; SSE41-NEXT: pxor %xmm0, %xmm3
460 ; SSE41-NEXT: pxor %xmm1, %xmm0
461 ; SSE41-NEXT: movdqa %xmm0, %xmm4
462 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
463 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
464 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
465 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
466 ; SSE41-NEXT: pand %xmm5, %xmm0
467 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
468 ; SSE41-NEXT: por %xmm0, %xmm3
469 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
470 ; SSE41-NEXT: pxor %xmm3, %xmm0
471 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
472 ; SSE41
473 ; SSE41-NEXT: retq
544 ; SSE41-LABEL: max_ge_v4i64:
545 ; SSE41: # BB#0:
546 ; SSE41-NEXT: movdqa %xmm0, %xmm8
547 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
548 ; SSE41-NEXT: movdqa %xmm1, %xmm5
549 ; SSE41-NEXT: pxor %xmm0, %xmm5
550 ; SSE41-NEXT: movdqa %xmm3, %xmm6
551 ; SSE41-NEXT: pxor %xmm0, %xmm6
552 ; SSE41-NEXT: movdqa %xmm6, %xmm7
553 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
554 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
555 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
556 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
557 ; SSE41-NEXT: pand %xmm4, %xmm6
558 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
559 ; SSE41-NEXT: por %xmm6, %xmm5
560 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
561 ; SSE41-NEXT: pxor %xmm9, %xmm5
562 ; SSE41-NEXT: movdqa %xmm8, %xmm6
563 ; SSE41-NEXT: pxor %xmm0, %xmm6
564 ; SSE41-NEXT: pxor %xmm2, %xmm0
565 ; SSE41-NEXT: movdqa %xmm0, %xmm7
566 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
567 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
568 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
569 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
570 ; SSE41-NEXT: pand %xmm4, %xmm6
571 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
572 ; SSE41-NEXT: por %xmm6, %xmm0
573 ; SSE41-NEXT: pxor %xmm9, %xmm0
574 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
575 ; SSE41-NEXT: movdqa %xmm5, %xmm0
576 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
577 ; SSE41-NEXT: movapd %xmm2, %xmm0
578 ; SSE41-NEXT: movapd %xmm3, %xmm1
579 ; SSE41-NEXT: retq
664 ; SSE41-LABEL: max_ge_v4i32:
665 ; SSE41: # BB#0:
666 ; SSE41-NEXT: pmaxud %xmm1, %xmm0
667 ; SSE41-NEXT: retq
710 ; SSE41-LABEL: max_ge_v8i32:
711 ; SSE41: # BB#0:
712 ; SSE41-NEXT: pmaxud %xmm2, %xmm0
713 ; SSE41-NEXT: pmaxud %xmm3, %xmm1
714 ; SSE41-NEXT: retq
757 ; SSE41-LABEL: max_ge_v8i16:
758 ; SSE41: # BB#0:
759 ; SSE41-NEXT: pmaxuw %xmm1, %xmm0
760 ; SSE41-NEXT: retq
794 ; SSE41-LABEL: max_ge_v16i16:
795 ; SSE41: # BB#0:
796 ; SSE41-NEXT: pmaxuw %xmm2, %xmm0
797 ; SSE41-NEXT: pmaxuw %xmm3, %xmm1
798 ; SSE41-NEXT: retq
898 ; SSE41-LABEL: min_lt_v2i64:
899 ; SSE41: # BB#0:
900 ; SSE41-NEXT: movdqa %xmm0, %xmm2
901 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
902 ; SSE41-NEXT: movdqa %xmm2, %xmm3
903 ; SSE41-NEXT: pxor %xmm0, %xmm3
904 ; SSE41-NEXT: pxor %xmm1, %xmm0
905 ; SSE41-NEXT: movdqa %xmm0, %xmm4
906 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
907 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
908 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
909 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
910 ; SSE41-NEXT: pand %xmm5, %xmm3
911 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
912 ; SSE41-NEXT: por %xmm3, %xmm0
913 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
914 ; SSE41-NEXT: movapd %xmm1, %xmm0
915 ; SSE41-NEXT: retq
977 ; SSE41-LABEL: min_lt_v4i64:
978 ; SSE41: # BB#0:
979 ; SSE41-NEXT: movdqa %xmm0, %xmm8
980 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
981 ; SSE41-NEXT: movdqa %xmm1, %xmm5
982 ; SSE41-NEXT: pxor %xmm0, %xmm5
983 ; SSE41-NEXT: movdqa %xmm3, %xmm6
984 ; SSE41-NEXT: pxor %xmm0, %xmm6
985 ; SSE41-NEXT: movdqa %xmm6, %xmm7
986 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
987 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
988 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
989 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
990 ; SSE41-NEXT: pand %xmm4, %xmm6
991 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
992 ; SSE41-NEXT: por %xmm6, %xmm5
993 ; SSE41-NEXT: movdqa %xmm8, %xmm4
994 ; SSE41-NEXT: pxor %xmm0, %xmm4
995 ; SSE41-NEXT: pxor %xmm2, %xmm0
996 ; SSE41-NEXT: movdqa %xmm0, %xmm6
997 ; SSE41-NEXT: pcmpgtd %xmm4, %xmm6
998 ; SSE41-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
999 ; SSE41-NEXT: pcmpeqd %xmm4, %xmm0
1000 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
1001 ; SSE41-NEXT: pand %xmm7, %xmm4
1002 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
1003 ; SSE41-NEXT: por %xmm4, %xmm0
1004 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
1005 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1006 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1007 ; SSE41-NEXT: movapd %xmm2, %xmm0
1008 ; SSE41-NEXT: movapd %xmm3, %xmm1
1009 ; SSE41-NEXT: retq
1081 ; SSE41-LABEL: min_lt_v4i32:
1082 ; SSE41: # BB#0:
1083 ; SSE41-NEXT: pminud %xmm1, %xmm0
1084 ; SSE41-NEXT: retq
1121 ; SSE41-LABEL: min_lt_v8i32:
1122 ; SSE41: # BB#0:
1123 ; SSE41-NEXT: pminud %xmm2, %xmm0
1124 ; SSE41-NEXT: pminud %xmm3, %xmm1
1125 ; SSE41-NEXT: retq
1169 ; SSE41-LABEL: min_lt_v8i16:
1170 ; SSE41: # BB#0:
1171 ; SSE41-NEXT: pminuw %xmm1, %xmm0
1172 ; SSE41-NEXT: retq
1209 ; SSE41-LABEL: min_lt_v16i16:
1210 ; SSE41: # BB#0:
1211 ; SSE41-NEXT: pminuw %xmm2, %xmm0
1212 ; SSE41-NEXT: pminuw %xmm3, %xmm1
1213 ; SSE41-NEXT: retq
1316 ; SSE41-LABEL: min_le_v2i64:
1317 ; SSE41: # BB#0:
1318 ; SSE41-NEXT: movdqa %xmm0, %xmm2
1319 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
1320 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1321 ; SSE41-NEXT: pxor %xmm0, %xmm3
1322 ; SSE41-NEXT: pxor %xmm2, %xmm0
1323 ; SSE41-NEXT: movdqa %xmm0, %xmm4
1324 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
1325 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1326 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
1327 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1328 ; SSE41-NEXT: pand %xmm5, %xmm0
1329 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
1330 ; SSE41-NEXT: por %xmm0, %xmm3
1331 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
1332 ; SSE41-NEXT: pxor %xmm3, %xmm0
1333 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
1334 ; SSE41-NEXT: movapd %xmm1, %xmm0
1335 ; SSE41-NEXT: retq
1407 ; SSE41-LABEL: min_le_v4i64:
1408 ; SSE41: # BB#0:
1409 ; SSE41-NEXT: movdqa %xmm0, %xmm8
1410 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
1411 ; SSE41-NEXT: movdqa %xmm3, %xmm5
1412 ; SSE41-NEXT: pxor %xmm0, %xmm5
1413 ; SSE41-NEXT: movdqa %xmm1, %xmm6
1414 ; SSE41-NEXT: pxor %xmm0, %xmm6
1415 ; SSE41-NEXT: movdqa %xmm6, %xmm7
1416 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
1417 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1418 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
1419 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
1420 ; SSE41-NEXT: pand %xmm4, %xmm6
1421 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
1422 ; SSE41-NEXT: por %xmm6, %xmm5
1423 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
1424 ; SSE41-NEXT: pxor %xmm9, %xmm5
1425 ; SSE41-NEXT: movdqa %xmm2, %xmm6
1426 ; SSE41-NEXT: pxor %xmm0, %xmm6
1427 ; SSE41-NEXT: pxor %xmm8, %xmm0
1428 ; SSE41-NEXT: movdqa %xmm0, %xmm7
1429 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
1430 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1431 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
1432 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
1433 ; SSE41-NEXT: pand %xmm4, %xmm6
1434 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
1435 ; SSE41-NEXT: por %xmm6, %xmm0
1436 ; SSE41-NEXT: pxor %xmm9, %xmm0
1437 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
1438 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1439 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1440 ; SSE41-NEXT: movapd %xmm2, %xmm0
1441 ; SSE41-NEXT: movapd %xmm3, %xmm1
1442 ; SSE41-NEXT: retq
1527 ; SSE41-LABEL: min_le_v4i32:
1528 ; SSE41: # BB#0:
1529 ; SSE41-NEXT: pminud %xmm1, %xmm0
1530 ; SSE41-NEXT: retq
1573 ; SSE41-LABEL: min_le_v8i32:
1574 ; SSE41: # BB#0:
1575 ; SSE41-NEXT: pminud %xmm2, %xmm0
1576 ; SSE41-NEXT: pminud %xmm3, %xmm1
1577 ; SSE41-NEXT: retq
1620 ; SSE41-LABEL: min_le_v8i16:
1621 ; SSE41: # BB#0:
1622 ; SSE41-NEXT: pminuw %xmm1, %xmm0
1623 ; SSE41-NEXT: retq
1659 ; SSE41-LABEL: min_le_v16i16:
1660 ; SSE41: # BB#0:
1661 ; SSE41-NEXT: pminuw %xmm2, %xmm0
1662 ; SSE41-NEXT: pminuw %xmm3, %xmm1
1663 ; SSE41-NEXT: retq