@@ -546,12 +546,13 @@ define i64 @reduce_ctpop_v8i64(<8 x i64> %a0) {
546
546
; SSE42-NEXT: pshufb %xmm1, %xmm4
547
547
; SSE42-NEXT: paddb %xmm6, %xmm4
548
548
; SSE42-NEXT: paddb %xmm0, %xmm4
549
- ; SSE42-NEXT: paddb %xmm2, %xmm4
550
549
; SSE42-NEXT: pxor %xmm0, %xmm0
551
- ; SSE42-NEXT: psadbw %xmm4, %xmm0
552
- ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
553
- ; SSE42-NEXT: paddq %xmm0, %xmm1
554
- ; SSE42-NEXT: movq %xmm1, %rax
550
+ ; SSE42-NEXT: psadbw %xmm0, %xmm4
551
+ ; SSE42-NEXT: psadbw %xmm0, %xmm2
552
+ ; SSE42-NEXT: paddq %xmm4, %xmm2
553
+ ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]
554
+ ; SSE42-NEXT: paddq %xmm2, %xmm0
555
+ ; SSE42-NEXT: movq %xmm0, %rax
555
556
; SSE42-NEXT: retq
556
557
;
557
558
; AVX2-LABEL: reduce_ctpop_v8i64:
@@ -811,16 +812,15 @@ define i64 @reduce_ctpop_v16i64(<16 x i64> %a0) {
811
812
; SSE42-NEXT: pshufb %xmm3, %xmm1
812
813
; SSE42-NEXT: paddb %xmm7, %xmm1
813
814
; SSE42-NEXT: paddb %xmm11, %xmm1
814
- ; SSE42-NEXT: paddb %xmm5, %xmm1
815
815
; SSE42-NEXT: movdqa %xmm4, %xmm3
816
816
; SSE42-NEXT: pand %xmm9, %xmm3
817
- ; SSE42-NEXT: movdqa %xmm8, %xmm5
818
- ; SSE42-NEXT: pshufb %xmm3, %xmm5
817
+ ; SSE42-NEXT: movdqa %xmm8, %xmm7
818
+ ; SSE42-NEXT: pshufb %xmm3, %xmm7
819
819
; SSE42-NEXT: psrlw $4, %xmm4
820
820
; SSE42-NEXT: pand %xmm9, %xmm4
821
- ; SSE42-NEXT: movdqa %xmm8, %xmm7
822
- ; SSE42-NEXT: pshufb %xmm4, %xmm7
823
- ; SSE42-NEXT: paddb %xmm5 , %xmm7
821
+ ; SSE42-NEXT: movdqa %xmm8, %xmm10
822
+ ; SSE42-NEXT: pshufb %xmm4, %xmm10
823
+ ; SSE42-NEXT: paddb %xmm7 , %xmm10
824
824
; SSE42-NEXT: movdqa %xmm0, %xmm3
825
825
; SSE42-NEXT: pand %xmm9, %xmm3
826
826
; SSE42-NEXT: movdqa %xmm8, %xmm4
@@ -830,7 +830,7 @@ define i64 @reduce_ctpop_v16i64(<16 x i64> %a0) {
830
830
; SSE42-NEXT: movdqa %xmm8, %xmm3
831
831
; SSE42-NEXT: pshufb %xmm0, %xmm3
832
832
; SSE42-NEXT: paddb %xmm4, %xmm3
833
- ; SSE42-NEXT: paddb %xmm7 , %xmm3
833
+ ; SSE42-NEXT: paddb %xmm10 , %xmm3
834
834
; SSE42-NEXT: movdqa %xmm6, %xmm0
835
835
; SSE42-NEXT: pand %xmm9, %xmm0
836
836
; SSE42-NEXT: movdqa %xmm8, %xmm4
@@ -842,20 +842,24 @@ define i64 @reduce_ctpop_v16i64(<16 x i64> %a0) {
842
842
; SSE42-NEXT: paddb %xmm4, %xmm0
843
843
; SSE42-NEXT: movdqa %xmm2, %xmm4
844
844
; SSE42-NEXT: pand %xmm9, %xmm4
845
- ; SSE42-NEXT: movdqa %xmm8, %xmm5
846
- ; SSE42-NEXT: pshufb %xmm4, %xmm5
845
+ ; SSE42-NEXT: movdqa %xmm8, %xmm6
846
+ ; SSE42-NEXT: pshufb %xmm4, %xmm6
847
847
; SSE42-NEXT: psrlw $4, %xmm2
848
848
; SSE42-NEXT: pand %xmm9, %xmm2
849
849
; SSE42-NEXT: pshufb %xmm2, %xmm8
850
- ; SSE42-NEXT: paddb %xmm5 , %xmm8
850
+ ; SSE42-NEXT: paddb %xmm6 , %xmm8
851
851
; SSE42-NEXT: paddb %xmm0, %xmm8
852
- ; SSE42-NEXT: paddb %xmm3, %xmm8
853
- ; SSE42-NEXT: paddb %xmm1, %xmm8
854
852
; SSE42-NEXT: pxor %xmm0, %xmm0
855
- ; SSE42-NEXT: psadbw %xmm8, %xmm0
856
- ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
857
- ; SSE42-NEXT: paddq %xmm0, %xmm1
858
- ; SSE42-NEXT: movq %xmm1, %rax
853
+ ; SSE42-NEXT: psadbw %xmm0, %xmm8
854
+ ; SSE42-NEXT: psadbw %xmm0, %xmm3
855
+ ; SSE42-NEXT: paddq %xmm8, %xmm3
856
+ ; SSE42-NEXT: psadbw %xmm0, %xmm1
857
+ ; SSE42-NEXT: psadbw %xmm0, %xmm5
858
+ ; SSE42-NEXT: paddq %xmm1, %xmm5
859
+ ; SSE42-NEXT: paddq %xmm3, %xmm5
860
+ ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm5[2,3,2,3]
861
+ ; SSE42-NEXT: paddq %xmm5, %xmm0
862
+ ; SSE42-NEXT: movq %xmm0, %rax
859
863
; SSE42-NEXT: retq
860
864
;
861
865
; AVX2-LABEL: reduce_ctpop_v16i64:
@@ -889,9 +893,10 @@ define i64 @reduce_ctpop_v16i64(<16 x i64> %a0) {
889
893
; AVX2-NEXT: vpshufb %ymm1, %ymm6, %ymm1
890
894
; AVX2-NEXT: vpaddb %ymm3, %ymm1, %ymm1
891
895
; AVX2-NEXT: vpaddb %ymm2, %ymm1, %ymm1
892
- ; AVX2-NEXT: vpaddb %ymm1, %ymm0, %ymm0
893
- ; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
894
- ; AVX2-NEXT: vpsadbw %ymm1, %ymm0, %ymm0
896
+ ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
897
+ ; AVX2-NEXT: vpsadbw %ymm2, %ymm1, %ymm1
898
+ ; AVX2-NEXT: vpsadbw %ymm2, %ymm0, %ymm0
899
+ ; AVX2-NEXT: vpaddq %ymm1, %ymm0, %ymm0
895
900
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
896
901
; AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
897
902
; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
0 commit comments