Lines Matching refs:SSE2

2 …RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE2
15 ; SSE2-LABEL: test_v2i64:
16 ; SSE2: # %bb.0:
17 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
18 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]
19 ; SSE2-NEXT: movdqa %xmm0, %xmm3
20 ; SSE2-NEXT: pxor %xmm2, %xmm3
21 ; SSE2-NEXT: pxor %xmm1, %xmm2
22 ; SSE2-NEXT: movdqa %xmm3, %xmm4
23 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm4
24 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
25 ; SSE2-NEXT: pcmpeqd %xmm3, %xmm2
26 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
27 ; SSE2-NEXT: pand %xmm5, %xmm2
28 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
29 ; SSE2-NEXT: por %xmm2, %xmm3
30 ; SSE2-NEXT: pand %xmm3, %xmm0
31 ; SSE2-NEXT: pandn %xmm1, %xmm3
32 ; SSE2-NEXT: por %xmm0, %xmm3
33 ; SSE2-NEXT: movq %xmm3, %rax
34 ; SSE2-NEXT: retq
97 ; SSE2-LABEL: test_v4i64:
98 ; SSE2: # %bb.0:
99 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]
100 ; SSE2-NEXT: movdqa %xmm1, %xmm3
101 ; SSE2-NEXT: pxor %xmm2, %xmm3
102 ; SSE2-NEXT: movdqa %xmm0, %xmm4
103 ; SSE2-NEXT: pxor %xmm2, %xmm4
104 ; SSE2-NEXT: movdqa %xmm4, %xmm5
105 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm5
106 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
107 ; SSE2-NEXT: pcmpeqd %xmm3, %xmm4
108 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
109 ; SSE2-NEXT: pand %xmm6, %xmm3
110 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
111 ; SSE2-NEXT: por %xmm3, %xmm4
112 ; SSE2-NEXT: pand %xmm4, %xmm0
113 ; SSE2-NEXT: pandn %xmm1, %xmm4
114 ; SSE2-NEXT: por %xmm0, %xmm4
115 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]
116 ; SSE2-NEXT: movdqa %xmm4, %xmm1
117 ; SSE2-NEXT: pxor %xmm2, %xmm1
118 ; SSE2-NEXT: pxor %xmm0, %xmm2
119 ; SSE2-NEXT: movdqa %xmm1, %xmm3
120 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm3
121 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
122 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm2
123 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
124 ; SSE2-NEXT: pand %xmm5, %xmm1
125 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
126 ; SSE2-NEXT: por %xmm1, %xmm2
127 ; SSE2-NEXT: pand %xmm2, %xmm4
128 ; SSE2-NEXT: pandn %xmm0, %xmm2
129 ; SSE2-NEXT: por %xmm4, %xmm2
130 ; SSE2-NEXT: movq %xmm2, %rax
131 ; SSE2-NEXT: retq
239 ; SSE2-LABEL: test_v8i64:
240 ; SSE2: # %bb.0:
241 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]
242 ; SSE2-NEXT: movdqa %xmm2, %xmm5
243 ; SSE2-NEXT: pxor %xmm4, %xmm5
244 ; SSE2-NEXT: movdqa %xmm0, %xmm6
245 ; SSE2-NEXT: pxor %xmm4, %xmm6
246 ; SSE2-NEXT: movdqa %xmm6, %xmm7
247 ; SSE2-NEXT: pcmpgtd %xmm5, %xmm7
248 ; SSE2-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
249 ; SSE2-NEXT: pcmpeqd %xmm5, %xmm6
250 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
251 ; SSE2-NEXT: pand %xmm8, %xmm6
252 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
253 ; SSE2-NEXT: por %xmm6, %xmm5
254 ; SSE2-NEXT: pand %xmm5, %xmm0
255 ; SSE2-NEXT: pandn %xmm2, %xmm5
256 ; SSE2-NEXT: por %xmm0, %xmm5
257 ; SSE2-NEXT: movdqa %xmm3, %xmm0
258 ; SSE2-NEXT: pxor %xmm4, %xmm0
259 ; SSE2-NEXT: movdqa %xmm1, %xmm2
260 ; SSE2-NEXT: pxor %xmm4, %xmm2
261 ; SSE2-NEXT: movdqa %xmm2, %xmm6
262 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm6
263 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
264 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm2
265 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
266 ; SSE2-NEXT: pand %xmm7, %xmm0
267 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
268 ; SSE2-NEXT: por %xmm0, %xmm2
269 ; SSE2-NEXT: pand %xmm2, %xmm1
270 ; SSE2-NEXT: pandn %xmm3, %xmm2
271 ; SSE2-NEXT: por %xmm1, %xmm2
272 ; SSE2-NEXT: movdqa %xmm2, %xmm0
273 ; SSE2-NEXT: pxor %xmm4, %xmm0
274 ; SSE2-NEXT: movdqa %xmm5, %xmm1
275 ; SSE2-NEXT: pxor %xmm4, %xmm1
276 ; SSE2-NEXT: movdqa %xmm1, %xmm3
277 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm3
278 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
279 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm1
280 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
281 ; SSE2-NEXT: pand %xmm6, %xmm0
282 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
283 ; SSE2-NEXT: por %xmm0, %xmm1
284 ; SSE2-NEXT: pand %xmm1, %xmm5
285 ; SSE2-NEXT: pandn %xmm2, %xmm1
286 ; SSE2-NEXT: por %xmm5, %xmm1
287 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
288 ; SSE2-NEXT: movdqa %xmm1, %xmm2
289 ; SSE2-NEXT: pxor %xmm4, %xmm2
290 ; SSE2-NEXT: pxor %xmm0, %xmm4
291 ; SSE2-NEXT: movdqa %xmm2, %xmm3
292 ; SSE2-NEXT: pcmpgtd %xmm4, %xmm3
293 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
294 ; SSE2-NEXT: pcmpeqd %xmm2, %xmm4
295 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
296 ; SSE2-NEXT: pand %xmm5, %xmm2
297 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
298 ; SSE2-NEXT: por %xmm2, %xmm3
299 ; SSE2-NEXT: pand %xmm3, %xmm1
300 ; SSE2-NEXT: pandn %xmm0, %xmm3
301 ; SSE2-NEXT: por %xmm1, %xmm3
302 ; SSE2-NEXT: movq %xmm3, %rax
303 ; SSE2-NEXT: retq
461 ; SSE2-LABEL: test_v16i64:
462 ; SSE2: # %bb.0:
463 ; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]
464 ; SSE2-NEXT: movdqa %xmm5, %xmm9
465 ; SSE2-NEXT: pxor %xmm8, %xmm9
466 ; SSE2-NEXT: movdqa %xmm1, %xmm10
467 ; SSE2-NEXT: pxor %xmm8, %xmm10
468 ; SSE2-NEXT: movdqa %xmm10, %xmm11
469 ; SSE2-NEXT: pcmpgtd %xmm9, %xmm11
470 ; SSE2-NEXT: pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]
471 ; SSE2-NEXT: pcmpeqd %xmm9, %xmm10
472 ; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm10[1,1,3,3]
473 ; SSE2-NEXT: pand %xmm12, %xmm10
474 ; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm11[1,1,3,3]
475 ; SSE2-NEXT: por %xmm10, %xmm9
476 ; SSE2-NEXT: pand %xmm9, %xmm1
477 ; SSE2-NEXT: pandn %xmm5, %xmm9
478 ; SSE2-NEXT: por %xmm1, %xmm9
479 ; SSE2-NEXT: movdqa %xmm7, %xmm1
480 ; SSE2-NEXT: pxor %xmm8, %xmm1
481 ; SSE2-NEXT: movdqa %xmm3, %xmm5
482 ; SSE2-NEXT: pxor %xmm8, %xmm5
483 ; SSE2-NEXT: movdqa %xmm5, %xmm10
484 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm10
485 ; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]
486 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm5
487 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
488 ; SSE2-NEXT: pand %xmm11, %xmm5
489 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm10[1,1,3,3]
490 ; SSE2-NEXT: por %xmm5, %xmm1
491 ; SSE2-NEXT: pand %xmm1, %xmm3
492 ; SSE2-NEXT: pandn %xmm7, %xmm1
493 ; SSE2-NEXT: por %xmm3, %xmm1
494 ; SSE2-NEXT: movdqa %xmm4, %xmm3
495 ; SSE2-NEXT: pxor %xmm8, %xmm3
496 ; SSE2-NEXT: movdqa %xmm0, %xmm5
497 ; SSE2-NEXT: pxor %xmm8, %xmm5
498 ; SSE2-NEXT: movdqa %xmm5, %xmm7
499 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm7
500 ; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm7[0,0,2,2]
501 ; SSE2-NEXT: pcmpeqd %xmm3, %xmm5
502 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
503 ; SSE2-NEXT: pand %xmm10, %xmm5
504 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
505 ; SSE2-NEXT: por %xmm5, %xmm3
506 ; SSE2-NEXT: pand %xmm3, %xmm0
507 ; SSE2-NEXT: pandn %xmm4, %xmm3
508 ; SSE2-NEXT: por %xmm0, %xmm3
509 ; SSE2-NEXT: movdqa %xmm6, %xmm0
510 ; SSE2-NEXT: pxor %xmm8, %xmm0
511 ; SSE2-NEXT: movdqa %xmm2, %xmm4
512 ; SSE2-NEXT: pxor %xmm8, %xmm4
513 ; SSE2-NEXT: movdqa %xmm4, %xmm5
514 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm5
515 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm5[0,0,2,2]
516 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm4
517 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
518 ; SSE2-NEXT: pand %xmm7, %xmm0
519 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
520 ; SSE2-NEXT: por %xmm0, %xmm4
521 ; SSE2-NEXT: pand %xmm4, %xmm2
522 ; SSE2-NEXT: pandn %xmm6, %xmm4
523 ; SSE2-NEXT: por %xmm2, %xmm4
524 ; SSE2-NEXT: movdqa %xmm4, %xmm0
525 ; SSE2-NEXT: pxor %xmm8, %xmm0
526 ; SSE2-NEXT: movdqa %xmm3, %xmm2
527 ; SSE2-NEXT: pxor %xmm8, %xmm2
528 ; SSE2-NEXT: movdqa %xmm2, %xmm5
529 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm5
530 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
531 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm2
532 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
533 ; SSE2-NEXT: pand %xmm6, %xmm2
534 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm5[1,1,3,3]
535 ; SSE2-NEXT: por %xmm2, %xmm0
536 ; SSE2-NEXT: pand %xmm0, %xmm3
537 ; SSE2-NEXT: pandn %xmm4, %xmm0
538 ; SSE2-NEXT: por %xmm3, %xmm0
539 ; SSE2-NEXT: movdqa %xmm1, %xmm2
540 ; SSE2-NEXT: pxor %xmm8, %xmm2
541 ; SSE2-NEXT: movdqa %xmm9, %xmm3
542 ; SSE2-NEXT: pxor %xmm8, %xmm3
543 ; SSE2-NEXT: movdqa %xmm3, %xmm4
544 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm4
545 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
546 ; SSE2-NEXT: pcmpeqd %xmm2, %xmm3
547 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
548 ; SSE2-NEXT: pand %xmm5, %xmm2
549 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
550 ; SSE2-NEXT: por %xmm2, %xmm3
551 ; SSE2-NEXT: pand %xmm3, %xmm9
552 ; SSE2-NEXT: pandn %xmm1, %xmm3
553 ; SSE2-NEXT: por %xmm9, %xmm3
554 ; SSE2-NEXT: movdqa %xmm3, %xmm1
555 ; SSE2-NEXT: pxor %xmm8, %xmm1
556 ; SSE2-NEXT: movdqa %xmm0, %xmm2
557 ; SSE2-NEXT: pxor %xmm8, %xmm2
558 ; SSE2-NEXT: movdqa %xmm2, %xmm4
559 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm4
560 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
561 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm2
562 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
563 ; SSE2-NEXT: pand %xmm5, %xmm1
564 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
565 ; SSE2-NEXT: por %xmm1, %xmm2
566 ; SSE2-NEXT: pand %xmm2, %xmm0
567 ; SSE2-NEXT: pandn %xmm3, %xmm2
568 ; SSE2-NEXT: por %xmm0, %xmm2
569 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]
570 ; SSE2-NEXT: movdqa %xmm2, %xmm1
571 ; SSE2-NEXT: pxor %xmm8, %xmm1
572 ; SSE2-NEXT: pxor %xmm0, %xmm8
573 ; SSE2-NEXT: movdqa %xmm1, %xmm3
574 ; SSE2-NEXT: pcmpgtd %xmm8, %xmm3
575 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
576 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm8
577 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm8[1,1,3,3]
578 ; SSE2-NEXT: pand %xmm4, %xmm1
579 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
580 ; SSE2-NEXT: por %xmm1, %xmm3
581 ; SSE2-NEXT: pand %xmm3, %xmm2
582 ; SSE2-NEXT: pandn %xmm0, %xmm3
583 ; SSE2-NEXT: por %xmm2, %xmm3
584 ; SSE2-NEXT: movq %xmm3, %rax
585 ; SSE2-NEXT: retq
844 ; SSE2-LABEL: test_v2i32:
845 ; SSE2: # %bb.0:
846 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
847 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
848 ; SSE2-NEXT: movdqa %xmm0, %xmm3
849 ; SSE2-NEXT: pxor %xmm2, %xmm3
850 ; SSE2-NEXT: pxor %xmm1, %xmm2
851 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm3
852 ; SSE2-NEXT: pand %xmm3, %xmm0
853 ; SSE2-NEXT: pandn %xmm1, %xmm3
854 ; SSE2-NEXT: por %xmm0, %xmm3
855 ; SSE2-NEXT: movd %xmm3, %eax
856 ; SSE2-NEXT: retq
883 ; SSE2-LABEL: test_v4i32:
884 ; SSE2: # %bb.0:
885 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
886 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
887 ; SSE2-NEXT: movdqa %xmm0, %xmm3
888 ; SSE2-NEXT: pxor %xmm2, %xmm3
889 ; SSE2-NEXT: movdqa %xmm1, %xmm4
890 ; SSE2-NEXT: pxor %xmm2, %xmm4
891 ; SSE2-NEXT: pcmpgtd %xmm4, %xmm3
892 ; SSE2-NEXT: pand %xmm3, %xmm0
893 ; SSE2-NEXT: pandn %xmm1, %xmm3
894 ; SSE2-NEXT: por %xmm0, %xmm3
895 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[1,1,1,1]
896 ; SSE2-NEXT: movdqa %xmm3, %xmm1
897 ; SSE2-NEXT: pxor %xmm2, %xmm1
898 ; SSE2-NEXT: pxor %xmm0, %xmm2
899 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm1
900 ; SSE2-NEXT: pand %xmm1, %xmm3
901 ; SSE2-NEXT: pandn %xmm0, %xmm1
902 ; SSE2-NEXT: por %xmm3, %xmm1
903 ; SSE2-NEXT: movd %xmm1, %eax
904 ; SSE2-NEXT: retq
937 ; SSE2-LABEL: test_v8i32:
938 ; SSE2: # %bb.0:
939 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
940 ; SSE2-NEXT: movdqa %xmm1, %xmm3
941 ; SSE2-NEXT: pxor %xmm2, %xmm3
942 ; SSE2-NEXT: movdqa %xmm0, %xmm4
943 ; SSE2-NEXT: pxor %xmm2, %xmm4
944 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm4
945 ; SSE2-NEXT: pand %xmm4, %xmm0
946 ; SSE2-NEXT: pandn %xmm1, %xmm4
947 ; SSE2-NEXT: por %xmm0, %xmm4
948 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]
949 ; SSE2-NEXT: movdqa %xmm4, %xmm1
950 ; SSE2-NEXT: pxor %xmm2, %xmm1
951 ; SSE2-NEXT: movdqa %xmm0, %xmm3
952 ; SSE2-NEXT: pxor %xmm2, %xmm3
953 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm1
954 ; SSE2-NEXT: pand %xmm1, %xmm4
955 ; SSE2-NEXT: pandn %xmm0, %xmm1
956 ; SSE2-NEXT: por %xmm4, %xmm1
957 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
958 ; SSE2-NEXT: movdqa %xmm1, %xmm3
959 ; SSE2-NEXT: pxor %xmm2, %xmm3
960 ; SSE2-NEXT: pxor %xmm0, %xmm2
961 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm3
962 ; SSE2-NEXT: pand %xmm3, %xmm1
963 ; SSE2-NEXT: pandn %xmm0, %xmm3
964 ; SSE2-NEXT: por %xmm1, %xmm3
965 ; SSE2-NEXT: movd %xmm3, %eax
966 ; SSE2-NEXT: retq
1018 ; SSE2-LABEL: test_v16i32:
1019 ; SSE2: # %bb.0:
1020 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]
1021 ; SSE2-NEXT: movdqa %xmm2, %xmm6
1022 ; SSE2-NEXT: pxor %xmm4, %xmm6
1023 ; SSE2-NEXT: movdqa %xmm0, %xmm5
1024 ; SSE2-NEXT: pxor %xmm4, %xmm5
1025 ; SSE2-NEXT: pcmpgtd %xmm6, %xmm5
1026 ; SSE2-NEXT: pand %xmm5, %xmm0
1027 ; SSE2-NEXT: pandn %xmm2, %xmm5
1028 ; SSE2-NEXT: por %xmm0, %xmm5
1029 ; SSE2-NEXT: movdqa %xmm3, %xmm0
1030 ; SSE2-NEXT: pxor %xmm4, %xmm0
1031 ; SSE2-NEXT: movdqa %xmm1, %xmm2
1032 ; SSE2-NEXT: pxor %xmm4, %xmm2
1033 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm2
1034 ; SSE2-NEXT: pand %xmm2, %xmm1
1035 ; SSE2-NEXT: pandn %xmm3, %xmm2
1036 ; SSE2-NEXT: por %xmm1, %xmm2
1037 ; SSE2-NEXT: movdqa %xmm2, %xmm0
1038 ; SSE2-NEXT: pxor %xmm4, %xmm0
1039 ; SSE2-NEXT: movdqa %xmm5, %xmm1
1040 ; SSE2-NEXT: pxor %xmm4, %xmm1
1041 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
1042 ; SSE2-NEXT: pand %xmm1, %xmm5
1043 ; SSE2-NEXT: pandn %xmm2, %xmm1
1044 ; SSE2-NEXT: por %xmm5, %xmm1
1045 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
1046 ; SSE2-NEXT: movdqa %xmm1, %xmm2
1047 ; SSE2-NEXT: pxor %xmm4, %xmm2
1048 ; SSE2-NEXT: movdqa %xmm0, %xmm3
1049 ; SSE2-NEXT: pxor %xmm4, %xmm3
1050 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm2
1051 ; SSE2-NEXT: pand %xmm2, %xmm1
1052 ; SSE2-NEXT: pandn %xmm0, %xmm2
1053 ; SSE2-NEXT: por %xmm1, %xmm2
1054 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,1,1]
1055 ; SSE2-NEXT: movdqa %xmm2, %xmm1
1056 ; SSE2-NEXT: pxor %xmm4, %xmm1
1057 ; SSE2-NEXT: pxor %xmm0, %xmm4
1058 ; SSE2-NEXT: pcmpgtd %xmm4, %xmm1
1059 ; SSE2-NEXT: pand %xmm1, %xmm2
1060 ; SSE2-NEXT: pandn %xmm0, %xmm1
1061 ; SSE2-NEXT: por %xmm2, %xmm1
1062 ; SSE2-NEXT: movd %xmm1, %eax
1063 ; SSE2-NEXT: retq
1123 ; SSE2-LABEL: test_v32i32:
1124 ; SSE2: # %bb.0:
1125 ; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]
1126 ; SSE2-NEXT: movdqa %xmm5, %xmm10
1127 ; SSE2-NEXT: pxor %xmm8, %xmm10
1128 ; SSE2-NEXT: movdqa %xmm1, %xmm9
1129 ; SSE2-NEXT: pxor %xmm8, %xmm9
1130 ; SSE2-NEXT: pcmpgtd %xmm10, %xmm9
1131 ; SSE2-NEXT: pand %xmm9, %xmm1
1132 ; SSE2-NEXT: pandn %xmm5, %xmm9
1133 ; SSE2-NEXT: por %xmm1, %xmm9
1134 ; SSE2-NEXT: movdqa %xmm7, %xmm5
1135 ; SSE2-NEXT: pxor %xmm8, %xmm5
1136 ; SSE2-NEXT: movdqa %xmm3, %xmm1
1137 ; SSE2-NEXT: pxor %xmm8, %xmm1
1138 ; SSE2-NEXT: pcmpgtd %xmm5, %xmm1
1139 ; SSE2-NEXT: pand %xmm1, %xmm3
1140 ; SSE2-NEXT: pandn %xmm7, %xmm1
1141 ; SSE2-NEXT: por %xmm3, %xmm1
1142 ; SSE2-NEXT: movdqa %xmm4, %xmm5
1143 ; SSE2-NEXT: pxor %xmm8, %xmm5
1144 ; SSE2-NEXT: movdqa %xmm0, %xmm3
1145 ; SSE2-NEXT: pxor %xmm8, %xmm3
1146 ; SSE2-NEXT: pcmpgtd %xmm5, %xmm3
1147 ; SSE2-NEXT: pand %xmm3, %xmm0
1148 ; SSE2-NEXT: pandn %xmm4, %xmm3
1149 ; SSE2-NEXT: por %xmm0, %xmm3
1150 ; SSE2-NEXT: movdqa %xmm6, %xmm0
1151 ; SSE2-NEXT: pxor %xmm8, %xmm0
1152 ; SSE2-NEXT: movdqa %xmm2, %xmm4
1153 ; SSE2-NEXT: pxor %xmm8, %xmm4
1154 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm4
1155 ; SSE2-NEXT: pand %xmm4, %xmm2
1156 ; SSE2-NEXT: pandn %xmm6, %xmm4
1157 ; SSE2-NEXT: por %xmm2, %xmm4
1158 ; SSE2-NEXT: movdqa %xmm4, %xmm2
1159 ; SSE2-NEXT: pxor %xmm8, %xmm2
1160 ; SSE2-NEXT: movdqa %xmm3, %xmm0
1161 ; SSE2-NEXT: pxor %xmm8, %xmm0
1162 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm0
1163 ; SSE2-NEXT: pand %xmm0, %xmm3
1164 ; SSE2-NEXT: pandn %xmm4, %xmm0
1165 ; SSE2-NEXT: por %xmm3, %xmm0
1166 ; SSE2-NEXT: movdqa %xmm1, %xmm2
1167 ; SSE2-NEXT: pxor %xmm8, %xmm2
1168 ; SSE2-NEXT: movdqa %xmm9, %xmm3
1169 ; SSE2-NEXT: pxor %xmm8, %xmm3
1170 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm3
1171 ; SSE2-NEXT: pand %xmm3, %xmm9
1172 ; SSE2-NEXT: pandn %xmm1, %xmm3
1173 ; SSE2-NEXT: por %xmm9, %xmm3
1174 ; SSE2-NEXT: movdqa %xmm3, %xmm1
1175 ; SSE2-NEXT: pxor %xmm8, %xmm1
1176 ; SSE2-NEXT: movdqa %xmm0, %xmm2
1177 ; SSE2-NEXT: pxor %xmm8, %xmm2
1178 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
1179 ; SSE2-NEXT: pand %xmm2, %xmm0
1180 ; SSE2-NEXT: pandn %xmm3, %xmm2
1181 ; SSE2-NEXT: por %xmm0, %xmm2
1182 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]
1183 ; SSE2-NEXT: movdqa %xmm2, %xmm1
1184 ; SSE2-NEXT: pxor %xmm8, %xmm1
1185 ; SSE2-NEXT: movdqa %xmm0, %xmm3
1186 ; SSE2-NEXT: pxor %xmm8, %xmm3
1187 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm1
1188 ; SSE2-NEXT: pand %xmm1, %xmm2
1189 ; SSE2-NEXT: pandn %xmm0, %xmm1
1190 ; SSE2-NEXT: por %xmm2, %xmm1
1191 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1192 ; SSE2-NEXT: movdqa %xmm1, %xmm2
1193 ; SSE2-NEXT: pxor %xmm8, %xmm2
1194 ; SSE2-NEXT: pxor %xmm0, %xmm8
1195 ; SSE2-NEXT: pcmpgtd %xmm8, %xmm2
1196 ; SSE2-NEXT: pand %xmm2, %xmm1
1197 ; SSE2-NEXT: pandn %xmm0, %xmm2
1198 ; SSE2-NEXT: por %xmm1, %xmm2
1199 ; SSE2-NEXT: movd %xmm2, %eax
1200 ; SSE2-NEXT: retq
1277 ; SSE2-LABEL: test_v2i16:
1278 ; SSE2: # %bb.0:
1279 ; SSE2-NEXT: movdqa %xmm0, %xmm1
1280 ; SSE2-NEXT: psrld $16, %xmm1
1281 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1282 ; SSE2-NEXT: paddw %xmm0, %xmm1
1283 ; SSE2-NEXT: movd %xmm1, %eax
1284 ; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1285 ; SSE2-NEXT: retq
1316 ; SSE2-LABEL: test_v4i16:
1317 ; SSE2: # %bb.0:
1318 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1319 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1320 ; SSE2-NEXT: paddw %xmm0, %xmm1
1321 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1322 ; SSE2-NEXT: psrld $16, %xmm0
1323 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1324 ; SSE2-NEXT: paddw %xmm1, %xmm0
1325 ; SSE2-NEXT: movd %xmm0, %eax
1326 ; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1327 ; SSE2-NEXT: retq
1364 ; SSE2-LABEL: test_v8i16:
1365 ; SSE2: # %bb.0:
1366 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1367 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1368 ; SSE2-NEXT: paddw %xmm0, %xmm1
1369 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1370 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1371 ; SSE2-NEXT: paddw %xmm1, %xmm0
1372 ; SSE2-NEXT: movdqa %xmm0, %xmm1
1373 ; SSE2-NEXT: psrld $16, %xmm1
1374 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1375 ; SSE2-NEXT: paddw %xmm0, %xmm1
1376 ; SSE2-NEXT: movd %xmm1, %eax
1377 ; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1378 ; SSE2-NEXT: retq
1424 ; SSE2-LABEL: test_v16i16:
1425 ; SSE2: # %bb.0:
1426 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1427 ; SSE2-NEXT: paddw %xmm0, %xmm1
1428 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
1429 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1430 ; SSE2-NEXT: paddw %xmm1, %xmm0
1431 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1432 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1433 ; SSE2-NEXT: paddw %xmm0, %xmm1
1434 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1435 ; SSE2-NEXT: psrld $16, %xmm0
1436 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1437 ; SSE2-NEXT: paddw %xmm1, %xmm0
1438 ; SSE2-NEXT: movd %xmm0, %eax
1439 ; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1440 ; SSE2-NEXT: retq
1507 ; SSE2-LABEL: test_v32i16:
1508 ; SSE2: # %bb.0:
1509 ; SSE2-NEXT: psubusw %xmm0, %xmm2
1510 ; SSE2-NEXT: paddw %xmm0, %xmm2
1511 ; SSE2-NEXT: psubusw %xmm1, %xmm3
1512 ; SSE2-NEXT: paddw %xmm1, %xmm3
1513 ; SSE2-NEXT: psubusw %xmm2, %xmm3
1514 ; SSE2-NEXT: paddw %xmm2, %xmm3
1515 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[2,3,2,3]
1516 ; SSE2-NEXT: psubusw %xmm3, %xmm0
1517 ; SSE2-NEXT: paddw %xmm3, %xmm0
1518 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1519 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1520 ; SSE2-NEXT: paddw %xmm0, %xmm1
1521 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1522 ; SSE2-NEXT: psrld $16, %xmm0
1523 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1524 ; SSE2-NEXT: paddw %xmm1, %xmm0
1525 ; SSE2-NEXT: movd %xmm0, %eax
1526 ; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1527 ; SSE2-NEXT: retq
1604 ; SSE2-LABEL: test_v64i16:
1605 ; SSE2: # %bb.0:
1606 ; SSE2-NEXT: psubusw %xmm1, %xmm5
1607 ; SSE2-NEXT: paddw %xmm1, %xmm5
1608 ; SSE2-NEXT: psubusw %xmm3, %xmm7
1609 ; SSE2-NEXT: paddw %xmm3, %xmm7
1610 ; SSE2-NEXT: psubusw %xmm0, %xmm4
1611 ; SSE2-NEXT: paddw %xmm0, %xmm4
1612 ; SSE2-NEXT: psubusw %xmm2, %xmm6
1613 ; SSE2-NEXT: paddw %xmm2, %xmm6
1614 ; SSE2-NEXT: psubusw %xmm4, %xmm6
1615 ; SSE2-NEXT: paddw %xmm4, %xmm6
1616 ; SSE2-NEXT: psubusw %xmm5, %xmm7
1617 ; SSE2-NEXT: paddw %xmm5, %xmm7
1618 ; SSE2-NEXT: psubusw %xmm6, %xmm7
1619 ; SSE2-NEXT: paddw %xmm6, %xmm7
1620 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm7[2,3,2,3]
1621 ; SSE2-NEXT: psubusw %xmm7, %xmm0
1622 ; SSE2-NEXT: paddw %xmm7, %xmm0
1623 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1624 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1625 ; SSE2-NEXT: paddw %xmm0, %xmm1
1626 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1627 ; SSE2-NEXT: psrld $16, %xmm0
1628 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1629 ; SSE2-NEXT: paddw %xmm1, %xmm0
1630 ; SSE2-NEXT: movd %xmm0, %eax
1631 ; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1632 ; SSE2-NEXT: retq
1834 ; SSE2-LABEL: test_v16i8:
1835 ; SSE2: # %bb.0:
1836 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1837 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
1838 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1839 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
1840 ; SSE2-NEXT: movdqa %xmm0, %xmm1
1841 ; SSE2-NEXT: psrld $16, %xmm1
1842 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
1843 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1844 ; SSE2-NEXT: psrlw $8, %xmm0
1845 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
1846 ; SSE2-NEXT: movd %xmm0, %eax
1847 ; SSE2-NEXT: # kill: def $al killed $al killed $eax
1848 ; SSE2-NEXT: retq
1903 ; SSE2-LABEL: test_v32i8:
1904 ; SSE2: # %bb.0:
1905 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
1906 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1907 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
1908 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1909 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
1910 ; SSE2-NEXT: movdqa %xmm0, %xmm1
1911 ; SSE2-NEXT: psrld $16, %xmm1
1912 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
1913 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1914 ; SSE2-NEXT: psrlw $8, %xmm0
1915 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
1916 ; SSE2-NEXT: movd %xmm0, %eax
1917 ; SSE2-NEXT: # kill: def $al killed $al killed $eax
1918 ; SSE2-NEXT: retq
1996 ; SSE2-LABEL: test_v64i8:
1997 ; SSE2: # %bb.0:
1998 ; SSE2-NEXT: pmaxub %xmm3, %xmm1
1999 ; SSE2-NEXT: pmaxub %xmm2, %xmm1
2000 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
2001 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
2002 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
2003 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
2004 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
2005 ; SSE2-NEXT: movdqa %xmm1, %xmm0
2006 ; SSE2-NEXT: psrld $16, %xmm0
2007 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
2008 ; SSE2-NEXT: movdqa %xmm0, %xmm1
2009 ; SSE2-NEXT: psrlw $8, %xmm1
2010 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
2011 ; SSE2-NEXT: movd %xmm1, %eax
2012 ; SSE2-NEXT: # kill: def $al killed $al killed $eax
2013 ; SSE2-NEXT: retq
2101 ; SSE2-LABEL: test_v128i8:
2102 ; SSE2: # %bb.0:
2103 ; SSE2-NEXT: pmaxub %xmm6, %xmm2
2104 ; SSE2-NEXT: pmaxub %xmm7, %xmm3
2105 ; SSE2-NEXT: pmaxub %xmm5, %xmm3
2106 ; SSE2-NEXT: pmaxub %xmm1, %xmm3
2107 ; SSE2-NEXT: pmaxub %xmm4, %xmm2
2108 ; SSE2-NEXT: pmaxub %xmm3, %xmm2
2109 ; SSE2-NEXT: pmaxub %xmm0, %xmm2
2110 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]
2111 ; SSE2-NEXT: pmaxub %xmm2, %xmm0
2112 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
2113 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
2114 ; SSE2-NEXT: movdqa %xmm1, %xmm0
2115 ; SSE2-NEXT: psrld $16, %xmm0
2116 ; SSE2-NEXT: pmaxub %xmm1, %xmm0
2117 ; SSE2-NEXT: movdqa %xmm0, %xmm1
2118 ; SSE2-NEXT: psrlw $8, %xmm1
2119 ; SSE2-NEXT: pmaxub %xmm0, %xmm1
2120 ; SSE2-NEXT: movd %xmm1, %eax
2121 ; SSE2-NEXT: # kill: def $al killed $al killed $eax
2122 ; SSE2-NEXT: retq