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,0,2147483648,0]
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
106 ; SSE41-LABEL: max_gt_v4i64:
107 ; SSE41: # BB#0:
108 ; SSE41-NEXT: movdqa %xmm0, %xmm8
109 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
110 ; SSE41-NEXT: movdqa %xmm3, %xmm5
111 ; SSE41-NEXT: pxor %xmm0, %xmm5
112 ; SSE41-NEXT: movdqa %xmm1, %xmm6
113 ; SSE41-NEXT: pxor %xmm0, %xmm6
114 ; SSE41-NEXT: movdqa %xmm6, %xmm7
115 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
116 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
117 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
118 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
119 ; SSE41-NEXT: pand %xmm4, %xmm6
120 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
121 ; SSE41-NEXT: por %xmm6, %xmm5
122 ; SSE41-NEXT: movdqa %xmm2, %xmm4
123 ; SSE41-NEXT: pxor %xmm0, %xmm4
124 ; SSE41-NEXT: pxor %xmm8, %xmm0
125 ; SSE41-NEXT: movdqa %xmm0, %xmm6
126 ; SSE41-NEXT: pcmpgtd %xmm4, %xmm6
127 ; SSE41-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
128 ; SSE41-NEXT: pcmpeqd %xmm4, %xmm0
129 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
130 ; SSE41-NEXT: pand %xmm7, %xmm4
131 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
132 ; SSE41-NEXT: por %xmm4, %xmm0
133 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
134 ; SSE41-NEXT: movdqa %xmm5, %xmm0
135 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
136 ; SSE41-NEXT: movapd %xmm2, %xmm0
137 ; SSE41-NEXT: movapd %xmm3, %xmm1
138 ; SSE41-NEXT: retq
190 ; SSE41-LABEL: max_gt_v4i32:
191 ; SSE41: # BB#0:
192 ; SSE41-NEXT: pmaxsd %xmm1, %xmm0
193 ; SSE41-NEXT: retq
226 ; SSE41-LABEL: max_gt_v8i32:
227 ; SSE41: # BB#0:
228 ; SSE41-NEXT: pmaxsd %xmm2, %xmm0
229 ; SSE41-NEXT: pmaxsd %xmm3, %xmm1
230 ; SSE41-NEXT: retq
317 ; SSE41-LABEL: max_gt_v16i8:
318 ; SSE41: # BB#0:
319 ; SSE41-NEXT: pmaxsb %xmm1, %xmm0
320 ; SSE41-NEXT: retq
353 ; SSE41-LABEL: max_gt_v32i8:
354 ; SSE41: # BB#0:
355 ; SSE41-NEXT: pmaxsb %xmm2, %xmm0
356 ; SSE41-NEXT: pmaxsb %xmm3, %xmm1
357 ; SSE41-NEXT: retq
415 ; SSE41-LABEL: max_ge_v2i64:
416 ; SSE41: # BB#0:
417 ; SSE41-NEXT: movdqa %xmm0, %xmm2
418 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
419 ; SSE41-NEXT: movdqa %xmm2, %xmm3
420 ; SSE41-NEXT: pxor %xmm0, %xmm3
421 ; SSE41-NEXT: pxor %xmm1, %xmm0
422 ; SSE41-NEXT: movdqa %xmm0, %xmm4
423 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
424 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
425 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
426 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
427 ; SSE41-NEXT: pand %xmm5, %xmm0
428 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
429 ; SSE41-NEXT: por %xmm0, %xmm3
430 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
431 ; SSE41-NEXT: pxor %xmm3, %xmm0
432 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
433 ; SSE41-NEXT: movapd %xmm1, %xmm0
434 ; SSE41-NEXT: retq
500 ; SSE41-LABEL: max_ge_v4i64:
501 ; SSE41: # BB#0:
502 ; SSE41-NEXT: movdqa %xmm0, %xmm8
503 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
504 ; SSE41-NEXT: movdqa %xmm1, %xmm5
505 ; SSE41-NEXT: pxor %xmm0, %xmm5
506 ; SSE41-NEXT: movdqa %xmm3, %xmm6
507 ; SSE41-NEXT: pxor %xmm0, %xmm6
508 ; SSE41-NEXT: movdqa %xmm6, %xmm7
509 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
510 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
511 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
512 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
513 ; SSE41-NEXT: pand %xmm4, %xmm6
514 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
515 ; SSE41-NEXT: por %xmm6, %xmm5
516 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
517 ; SSE41-NEXT: pxor %xmm9, %xmm5
518 ; SSE41-NEXT: movdqa %xmm8, %xmm6
519 ; SSE41-NEXT: pxor %xmm0, %xmm6
520 ; SSE41-NEXT: pxor %xmm2, %xmm0
521 ; SSE41-NEXT: movdqa %xmm0, %xmm7
522 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
523 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
524 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
525 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
526 ; SSE41-NEXT: pand %xmm4, %xmm6
527 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
528 ; SSE41-NEXT: por %xmm6, %xmm0
529 ; SSE41-NEXT: pxor %xmm9, %xmm0
530 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
531 ; SSE41-NEXT: movdqa %xmm5, %xmm0
532 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
533 ; SSE41-NEXT: movapd %xmm2, %xmm0
534 ; SSE41-NEXT: movapd %xmm3, %xmm1
535 ; SSE41-NEXT: retq
600 ; SSE41-LABEL: max_ge_v4i32:
601 ; SSE41: # BB#0:
602 ; SSE41-NEXT: pmaxsd %xmm1, %xmm0
603 ; SSE41-NEXT: retq
640 ; SSE41-LABEL: max_ge_v8i32:
641 ; SSE41: # BB#0:
642 ; SSE41-NEXT: pmaxsd %xmm2, %xmm0
643 ; SSE41-NEXT: pmaxsd %xmm3, %xmm1
644 ; SSE41-NEXT: retq
733 ; SSE41-LABEL: max_ge_v16i8:
734 ; SSE41: # BB#0:
735 ; SSE41-NEXT: pmaxsb %xmm1, %xmm0
736 ; SSE41-NEXT: retq
773 ; SSE41-LABEL: max_ge_v32i8:
774 ; SSE41: # BB#0:
775 ; SSE41-NEXT: pmaxsb %xmm2, %xmm0
776 ; SSE41-NEXT: pmaxsb %xmm3, %xmm1
777 ; SSE41-NEXT: retq
832 ; SSE41-LABEL: min_lt_v2i64:
833 ; SSE41: # BB#0:
834 ; SSE41-NEXT: movdqa %xmm0, %xmm2
835 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
836 ; SSE41-NEXT: movdqa %xmm2, %xmm3
837 ; SSE41-NEXT: pxor %xmm0, %xmm3
838 ; SSE41-NEXT: pxor %xmm1, %xmm0
839 ; SSE41-NEXT: movdqa %xmm0, %xmm4
840 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
841 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
842 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
843 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
844 ; SSE41-NEXT: pand %xmm5, %xmm3
845 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
846 ; SSE41-NEXT: por %xmm3, %xmm0
847 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
848 ; SSE41-NEXT: movapd %xmm1, %xmm0
849 ; SSE41-NEXT: retq
905 ; SSE41-LABEL: min_lt_v4i64:
906 ; SSE41: # BB#0:
907 ; SSE41-NEXT: movdqa %xmm0, %xmm8
908 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
909 ; SSE41-NEXT: movdqa %xmm1, %xmm5
910 ; SSE41-NEXT: pxor %xmm0, %xmm5
911 ; SSE41-NEXT: movdqa %xmm3, %xmm6
912 ; SSE41-NEXT: pxor %xmm0, %xmm6
913 ; SSE41-NEXT: movdqa %xmm6, %xmm7
914 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
915 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
916 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
917 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
918 ; SSE41-NEXT: pand %xmm4, %xmm6
919 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
920 ; SSE41-NEXT: por %xmm6, %xmm5
921 ; SSE41-NEXT: movdqa %xmm8, %xmm4
922 ; SSE41-NEXT: pxor %xmm0, %xmm4
923 ; SSE41-NEXT: pxor %xmm2, %xmm0
924 ; SSE41-NEXT: movdqa %xmm0, %xmm6
925 ; SSE41-NEXT: pcmpgtd %xmm4, %xmm6
926 ; SSE41-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
927 ; SSE41-NEXT: pcmpeqd %xmm4, %xmm0
928 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
929 ; SSE41-NEXT: pand %xmm7, %xmm4
930 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
931 ; SSE41-NEXT: por %xmm4, %xmm0
932 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
933 ; SSE41-NEXT: movdqa %xmm5, %xmm0
934 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
935 ; SSE41-NEXT: movapd %xmm2, %xmm0
936 ; SSE41-NEXT: movapd %xmm3, %xmm1
937 ; SSE41-NEXT: retq
989 ; SSE41-LABEL: min_lt_v4i32:
990 ; SSE41: # BB#0:
991 ; SSE41-NEXT: pminsd %xmm1, %xmm0
992 ; SSE41-NEXT: retq
1023 ; SSE41-LABEL: min_lt_v8i32:
1024 ; SSE41: # BB#0:
1025 ; SSE41-NEXT: pminsd %xmm2, %xmm0
1026 ; SSE41-NEXT: pminsd %xmm3, %xmm1
1027 ; SSE41-NEXT: retq
1113 ; SSE41-LABEL: min_lt_v16i8:
1114 ; SSE41: # BB#0:
1115 ; SSE41-NEXT: pminsb %xmm1, %xmm0
1116 ; SSE41-NEXT: retq
1147 ; SSE41-LABEL: min_lt_v32i8:
1148 ; SSE41: # BB#0:
1149 ; SSE41-NEXT: pminsb %xmm2, %xmm0
1150 ; SSE41-NEXT: pminsb %xmm3, %xmm1
1151 ; SSE41-NEXT: retq
1209 ; SSE41-LABEL: min_le_v2i64:
1210 ; SSE41: # BB#0:
1211 ; SSE41-NEXT: movdqa %xmm0, %xmm2
1212 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
1213 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1214 ; SSE41-NEXT: pxor %xmm0, %xmm3
1215 ; SSE41-NEXT: pxor %xmm2, %xmm0
1216 ; SSE41-NEXT: movdqa %xmm0, %xmm4
1217 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
1218 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1219 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
1220 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1221 ; SSE41-NEXT: pand %xmm5, %xmm0
1222 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
1223 ; SSE41-NEXT: por %xmm0, %xmm3
1224 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
1225 ; SSE41-NEXT: pxor %xmm3, %xmm0
1226 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
1227 ; SSE41-NEXT: movapd %xmm1, %xmm0
1228 ; SSE41-NEXT: retq
1293 ; SSE41-LABEL: min_le_v4i64:
1294 ; SSE41: # BB#0:
1295 ; SSE41-NEXT: movdqa %xmm0, %xmm8
1296 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
1297 ; SSE41-NEXT: movdqa %xmm3, %xmm5
1298 ; SSE41-NEXT: pxor %xmm0, %xmm5
1299 ; SSE41-NEXT: movdqa %xmm1, %xmm6
1300 ; SSE41-NEXT: pxor %xmm0, %xmm6
1301 ; SSE41-NEXT: movdqa %xmm6, %xmm7
1302 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
1303 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1304 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
1305 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
1306 ; SSE41-NEXT: pand %xmm4, %xmm6
1307 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
1308 ; SSE41-NEXT: por %xmm6, %xmm5
1309 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
1310 ; SSE41-NEXT: pxor %xmm9, %xmm5
1311 ; SSE41-NEXT: movdqa %xmm2, %xmm6
1312 ; SSE41-NEXT: pxor %xmm0, %xmm6
1313 ; SSE41-NEXT: pxor %xmm8, %xmm0
1314 ; SSE41-NEXT: movdqa %xmm0, %xmm7
1315 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
1316 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1317 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
1318 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
1319 ; SSE41-NEXT: pand %xmm4, %xmm6
1320 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
1321 ; SSE41-NEXT: por %xmm6, %xmm0
1322 ; SSE41-NEXT: pxor %xmm9, %xmm0
1323 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
1324 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1325 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1326 ; SSE41-NEXT: movapd %xmm2, %xmm0
1327 ; SSE41-NEXT: movapd %xmm3, %xmm1
1328 ; SSE41-NEXT: retq
1392 ; SSE41-LABEL: min_le_v4i32:
1393 ; SSE41: # BB#0:
1394 ; SSE41-NEXT: pminsd %xmm1, %xmm0
1395 ; SSE41-NEXT: retq
1432 ; SSE41-LABEL: min_le_v8i32:
1433 ; SSE41: # BB#0:
1434 ; SSE41-NEXT: pminsd %xmm2, %xmm0
1435 ; SSE41-NEXT: pminsd %xmm3, %xmm1
1436 ; SSE41-NEXT: retq
1525 ; SSE41-LABEL: min_le_v16i8:
1526 ; SSE41: # BB#0:
1527 ; SSE41-NEXT: pminsb %xmm1, %xmm0
1528 ; SSE41-NEXT: retq
1565 ; SSE41-LABEL: min_le_v32i8:
1566 ; SSE41: # BB#0:
1567 ; SSE41-NEXT: pminsb %xmm2, %xmm0
1568 ; SSE41-NEXT: pminsb %xmm3, %xmm1
1569 ; SSE41-NEXT: retq