@@ -468,13 +468,11 @@ define <8 x i16> @test13(<8 x i16> %x, <8 x i32> %y) nounwind {
468
468
; SSE2-NEXT: pxor %xmm4, %xmm6
469
469
; SSE2-NEXT: pxor %xmm4, %xmm5
470
470
; SSE2-NEXT: pcmpgtd %xmm5, %xmm6
471
- ; SSE2-NEXT: packssdw %xmm0, %xmm6
472
471
; SSE2-NEXT: movdqa %xmm1, %xmm2
473
472
; SSE2-NEXT: pxor %xmm4, %xmm2
474
473
; SSE2-NEXT: pxor %xmm3, %xmm4
475
474
; SSE2-NEXT: pcmpgtd %xmm4, %xmm2
476
- ; SSE2-NEXT: packssdw %xmm0, %xmm2
477
- ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm6[0]
475
+ ; SSE2-NEXT: packssdw %xmm6, %xmm2
478
476
; SSE2-NEXT: psubd %xmm1, %xmm3
479
477
; SSE2-NEXT: pslld $16, %xmm0
480
478
; SSE2-NEXT: psrad $16, %xmm0
@@ -487,58 +485,54 @@ define <8 x i16> @test13(<8 x i16> %x, <8 x i32> %y) nounwind {
487
485
;
488
486
; SSSE3-LABEL: test13:
489
487
; SSSE3: # BB#0: # %vector.ph
490
- ; SSSE3-NEXT: pxor %xmm4 , %xmm4
491
- ; SSSE3-NEXT: movdqa %xmm0, %xmm3
492
- ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0], xmm4[0],xmm3[1 ],xmm4[1],xmm3[2 ],xmm4[2],xmm3[3 ],xmm4[3]
493
- ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm4 [4],xmm0[5],xmm4 [5],xmm0[6],xmm4 [6],xmm0[7],xmm4 [7]
494
- ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]
488
+ ; SSSE3-NEXT: pxor %xmm3 , %xmm3
489
+ ; SSSE3-NEXT: movdqa %xmm0, %xmm4
490
+ ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0 ],xmm4[1],xmm3[1 ],xmm4[2],xmm3[2 ],xmm4[3],xmm3 [3]
491
+ ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3 [4],xmm0[5],xmm3 [5],xmm0[6],xmm3 [6],xmm0[7],xmm3 [7]
492
+ ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648]
495
493
; SSSE3-NEXT: movdqa %xmm0, %xmm5
496
494
; SSSE3-NEXT: psubd %xmm2, %xmm0
497
495
; SSSE3-NEXT: movdqa %xmm2, %xmm6
498
- ; SSSE3-NEXT: pxor %xmm4 , %xmm6
499
- ; SSSE3-NEXT: pxor %xmm4 , %xmm5
496
+ ; SSSE3-NEXT: pxor %xmm3 , %xmm6
497
+ ; SSSE3-NEXT: pxor %xmm3 , %xmm5
500
498
; SSSE3-NEXT: pcmpgtd %xmm5, %xmm6
501
- ; SSSE3-NEXT: packssdw %xmm0, %xmm6
502
499
; SSSE3-NEXT: movdqa %xmm1, %xmm2
503
- ; SSSE3-NEXT: pxor %xmm4, %xmm2
504
- ; SSSE3-NEXT: pxor %xmm3, %xmm4
505
- ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm2
506
- ; SSSE3-NEXT: packssdw %xmm0, %xmm2
507
- ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm6[0]
508
- ; SSSE3-NEXT: psubd %xmm1, %xmm3
500
+ ; SSSE3-NEXT: pxor %xmm3, %xmm2
501
+ ; SSSE3-NEXT: pxor %xmm4, %xmm3
502
+ ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm2
503
+ ; SSSE3-NEXT: packssdw %xmm6, %xmm2
504
+ ; SSSE3-NEXT: psubd %xmm1, %xmm4
509
505
; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
510
506
; SSSE3-NEXT: pshufb %xmm1, %xmm0
511
- ; SSSE3-NEXT: pshufb %xmm1, %xmm3
512
- ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3 [0],xmm0[0]
513
- ; SSSE3-NEXT: pandn %xmm3 , %xmm2
507
+ ; SSSE3-NEXT: pshufb %xmm1, %xmm4
508
+ ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4 [0],xmm0[0]
509
+ ; SSSE3-NEXT: pandn %xmm4 , %xmm2
514
510
; SSSE3-NEXT: movdqa %xmm2, %xmm0
515
511
; SSSE3-NEXT: retq
516
512
;
517
513
; SSE41-LABEL: test13:
518
514
; SSE41: # BB#0: # %vector.ph
519
515
; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
520
- ; SSE41-NEXT: pmovzxwd {{.*#+}} xmm4 = xmm3[0],zero,xmm3[1],zero,xmm3[2],zero,xmm3[3],zero
521
- ; SSE41-NEXT: pmovzxwd {{.*#+}} xmm3 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
516
+ ; SSE41-NEXT: pmovzxwd {{.*#+}} xmm3 = xmm3[0],zero,xmm3[1],zero,xmm3[2],zero,xmm3[3],zero
517
+ ; SSE41-NEXT: pmovzxwd {{.*#+}} xmm4 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
522
518
; SSE41-NEXT: movdqa {{.*#+}} xmm5 = [2147483648,2147483648,2147483648,2147483648]
523
- ; SSE41-NEXT: movdqa %xmm3 , %xmm6
524
- ; SSE41-NEXT: psubd %xmm1, %xmm3
519
+ ; SSE41-NEXT: movdqa %xmm4 , %xmm6
520
+ ; SSE41-NEXT: psubd %xmm1, %xmm4
525
521
; SSE41-NEXT: movdqa %xmm1, %xmm0
526
522
; SSE41-NEXT: pxor %xmm5, %xmm0
527
523
; SSE41-NEXT: pxor %xmm5, %xmm6
528
524
; SSE41-NEXT: pcmpgtd %xmm6, %xmm0
529
- ; SSE41-NEXT: packssdw %xmm0, %xmm0
530
525
; SSE41-NEXT: movdqa %xmm2, %xmm1
531
526
; SSE41-NEXT: pxor %xmm5, %xmm1
532
- ; SSE41-NEXT: pxor %xmm4 , %xmm5
527
+ ; SSE41-NEXT: pxor %xmm3 , %xmm5
533
528
; SSE41-NEXT: pcmpgtd %xmm5, %xmm1
534
- ; SSE41-NEXT: packssdw %xmm0, %xmm1
535
- ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
536
- ; SSE41-NEXT: psubd %xmm2, %xmm4
529
+ ; SSE41-NEXT: packssdw %xmm1, %xmm0
530
+ ; SSE41-NEXT: psubd %xmm2, %xmm3
537
531
; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
538
- ; SSE41-NEXT: pshufb %xmm1, %xmm3
539
532
; SSE41-NEXT: pshufb %xmm1, %xmm4
540
- ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0]
541
- ; SSE41-NEXT: pandn %xmm3, %xmm0
533
+ ; SSE41-NEXT: pshufb %xmm1, %xmm3
534
+ ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm3[0]
535
+ ; SSE41-NEXT: pandn %xmm4, %xmm0
542
536
; SSE41-NEXT: retq
543
537
;
544
538
; AVX1-LABEL: test13:
@@ -861,13 +855,11 @@ define <8 x i16> @test15(<8 x i16> %x, <8 x i32> %y) nounwind {
861
855
; SSE2-NEXT: pxor %xmm4, %xmm2
862
856
; SSE2-NEXT: pxor %xmm4, %xmm5
863
857
; SSE2-NEXT: pcmpgtd %xmm2, %xmm5
864
- ; SSE2-NEXT: packssdw %xmm0, %xmm5
865
858
; SSE2-NEXT: movdqa %xmm1, %xmm2
866
859
; SSE2-NEXT: pxor %xmm4, %xmm2
867
860
; SSE2-NEXT: pxor %xmm0, %xmm4
868
861
; SSE2-NEXT: pcmpgtd %xmm2, %xmm4
869
- ; SSE2-NEXT: packssdw %xmm0, %xmm4
870
- ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
862
+ ; SSE2-NEXT: packssdw %xmm5, %xmm4
871
863
; SSE2-NEXT: psubd %xmm1, %xmm0
872
864
; SSE2-NEXT: pslld $16, %xmm3
873
865
; SSE2-NEXT: psrad $16, %xmm3
@@ -889,13 +881,11 @@ define <8 x i16> @test15(<8 x i16> %x, <8 x i32> %y) nounwind {
889
881
; SSSE3-NEXT: pxor %xmm4, %xmm2
890
882
; SSSE3-NEXT: pxor %xmm4, %xmm5
891
883
; SSSE3-NEXT: pcmpgtd %xmm2, %xmm5
892
- ; SSSE3-NEXT: packssdw %xmm0, %xmm5
893
884
; SSSE3-NEXT: movdqa %xmm1, %xmm2
894
885
; SSSE3-NEXT: pxor %xmm4, %xmm2
895
886
; SSSE3-NEXT: pxor %xmm3, %xmm4
896
887
; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
897
- ; SSSE3-NEXT: packssdw %xmm0, %xmm4
898
- ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
888
+ ; SSSE3-NEXT: packssdw %xmm5, %xmm4
899
889
; SSSE3-NEXT: psubd %xmm1, %xmm3
900
890
; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
901
891
; SSSE3-NEXT: pshufb %xmm1, %xmm0
@@ -916,13 +906,11 @@ define <8 x i16> @test15(<8 x i16> %x, <8 x i32> %y) nounwind {
916
906
; SSE41-NEXT: pxor %xmm4, %xmm1
917
907
; SSE41-NEXT: pxor %xmm4, %xmm5
918
908
; SSE41-NEXT: pcmpgtd %xmm1, %xmm5
919
- ; SSE41-NEXT: packssdw %xmm0, %xmm5
920
909
; SSE41-NEXT: movdqa %xmm2, %xmm1
921
910
; SSE41-NEXT: pxor %xmm4, %xmm1
922
911
; SSE41-NEXT: pxor %xmm3, %xmm4
923
912
; SSE41-NEXT: pcmpgtd %xmm1, %xmm4
924
- ; SSE41-NEXT: packssdw %xmm0, %xmm4
925
- ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
913
+ ; SSE41-NEXT: packssdw %xmm4, %xmm5
926
914
; SSE41-NEXT: psubd %xmm2, %xmm3
927
915
; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
928
916
; SSE41-NEXT: pshufb %xmm1, %xmm0
@@ -1001,13 +989,11 @@ define <8 x i16> @test16(<8 x i16> %x, <8 x i32> %y) nounwind {
1001
989
; SSE2-NEXT: pxor %xmm4, %xmm2
1002
990
; SSE2-NEXT: pxor %xmm4, %xmm5
1003
991
; SSE2-NEXT: pcmpgtd %xmm2, %xmm5
1004
- ; SSE2-NEXT: packssdw %xmm0, %xmm5
1005
992
; SSE2-NEXT: movdqa %xmm1, %xmm2
1006
993
; SSE2-NEXT: pxor %xmm4, %xmm2
1007
994
; SSE2-NEXT: pxor %xmm0, %xmm4
1008
995
; SSE2-NEXT: pcmpgtd %xmm2, %xmm4
1009
- ; SSE2-NEXT: packssdw %xmm0, %xmm4
1010
- ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
996
+ ; SSE2-NEXT: packssdw %xmm5, %xmm4
1011
997
; SSE2-NEXT: psubd %xmm1, %xmm0
1012
998
; SSE2-NEXT: pslld $16, %xmm3
1013
999
; SSE2-NEXT: psrad $16, %xmm3
@@ -1029,13 +1015,11 @@ define <8 x i16> @test16(<8 x i16> %x, <8 x i32> %y) nounwind {
1029
1015
; SSSE3-NEXT: pxor %xmm4, %xmm2
1030
1016
; SSSE3-NEXT: pxor %xmm4, %xmm5
1031
1017
; SSSE3-NEXT: pcmpgtd %xmm2, %xmm5
1032
- ; SSSE3-NEXT: packssdw %xmm0, %xmm5
1033
1018
; SSSE3-NEXT: movdqa %xmm1, %xmm2
1034
1019
; SSSE3-NEXT: pxor %xmm4, %xmm2
1035
1020
; SSSE3-NEXT: pxor %xmm3, %xmm4
1036
1021
; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
1037
- ; SSSE3-NEXT: packssdw %xmm0, %xmm4
1038
- ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
1022
+ ; SSSE3-NEXT: packssdw %xmm5, %xmm4
1039
1023
; SSSE3-NEXT: psubd %xmm1, %xmm3
1040
1024
; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
1041
1025
; SSSE3-NEXT: pshufb %xmm1, %xmm0
@@ -1056,13 +1040,11 @@ define <8 x i16> @test16(<8 x i16> %x, <8 x i32> %y) nounwind {
1056
1040
; SSE41-NEXT: pxor %xmm4, %xmm1
1057
1041
; SSE41-NEXT: pxor %xmm4, %xmm5
1058
1042
; SSE41-NEXT: pcmpgtd %xmm1, %xmm5
1059
- ; SSE41-NEXT: packssdw %xmm0, %xmm5
1060
1043
; SSE41-NEXT: movdqa %xmm2, %xmm1
1061
1044
; SSE41-NEXT: pxor %xmm4, %xmm1
1062
1045
; SSE41-NEXT: pxor %xmm3, %xmm4
1063
1046
; SSE41-NEXT: pcmpgtd %xmm1, %xmm4
1064
- ; SSE41-NEXT: packssdw %xmm0, %xmm4
1065
- ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
1047
+ ; SSE41-NEXT: packssdw %xmm4, %xmm5
1066
1048
; SSE41-NEXT: psubd %xmm2, %xmm3
1067
1049
; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
1068
1050
; SSE41-NEXT: pshufb %xmm1, %xmm0
0 commit comments