@@ -800,34 +800,32 @@ define <4 x double> @uitofp_v4i64_v4f64(<4 x i64> %x) #0 {
800
800
;
801
801
; AVX1-64-LABEL: uitofp_v4i64_v4f64:
802
802
; AVX1-64: # %bb.0:
803
- ; AVX1-64-NEXT: vxorps %xmm1 , %xmm1 , %xmm1
804
- ; AVX1-64-NEXT: vblendps {{.*#+}} ymm1 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7]
805
- ; AVX1-64-NEXT: vextractf128 $1 , %ymm1 , %xmm2
806
- ; AVX1-64-NEXT: vpextrq $1, %xmm2 , %rax
803
+ ; AVX1-64-NEXT: vextractf128 $1 , %ymm0 , %xmm1
804
+ ; AVX1-64-NEXT: vpextrd $2, %xmm1, %eax
805
+ ; AVX1-64-NEXT: vcvtsi2sd %rax , %xmm2 , %xmm2
806
+ ; AVX1-64-NEXT: vmovd %xmm1 , %eax
807
807
; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm3, %xmm3
808
- ; AVX1-64-NEXT: vmovq %xmm2, %rax
809
- ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm2
810
- ; AVX1-64-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]
811
- ; AVX1-64-NEXT: vpextrq $1, %xmm1, %rax
808
+ ; AVX1-64-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm3[0],xmm2[0]
809
+ ; AVX1-64-NEXT: vextractps $2, %xmm0, %eax
812
810
; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm3
813
- ; AVX1-64-NEXT: vmovq %xmm1, %rax
814
- ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm1
811
+ ; AVX1-64-NEXT: vmovq %xmm0, %rax
812
+ ; AVX1-64-NEXT: movl %eax, %eax
813
+ ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm4
814
+ ; AVX1-64-NEXT: vunpcklpd {{.*#+}} xmm3 = xmm4[0],xmm3[0]
815
+ ; AVX1-64-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
816
+ ; AVX1-64-NEXT: vpextrd $3, %xmm1, %eax
817
+ ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm5, %xmm3
818
+ ; AVX1-64-NEXT: vpextrd $1, %xmm1, %eax
819
+ ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm5, %xmm1
815
820
; AVX1-64-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm1[0],xmm3[0]
816
- ; AVX1-64-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
817
- ; AVX1-64-NEXT: vextractf128 $1, %ymm0, %xmm2
818
- ; AVX1-64-NEXT: vextractps $3, %xmm2, %eax
819
- ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm3
820
- ; AVX1-64-NEXT: vextractps $1, %xmm2, %eax
821
- ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm2
822
- ; AVX1-64-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]
823
821
; AVX1-64-NEXT: vpextrd $3, %xmm0, %eax
824
- ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4 , %xmm3
822
+ ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm5 , %xmm3
825
823
; AVX1-64-NEXT: vpextrd $1, %xmm0, %eax
826
- ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm4 , %xmm0
824
+ ; AVX1-64-NEXT: vcvtsi2sd %rax, %xmm5 , %xmm0
827
825
; AVX1-64-NEXT: vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm3[0]
828
- ; AVX1-64-NEXT: vinsertf128 $1, %xmm2 , %ymm0, %ymm0
826
+ ; AVX1-64-NEXT: vinsertf128 $1, %xmm1 , %ymm0, %ymm0
829
827
; AVX1-64-NEXT: vmulpd {{.*}}(%rip), %ymm0, %ymm0
830
- ; AVX1-64-NEXT: vaddpd %ymm1 , %ymm0, %ymm0
828
+ ; AVX1-64-NEXT: vaddpd %ymm2 , %ymm0, %ymm0
831
829
; AVX1-64-NEXT: retq
832
830
;
833
831
; AVX2-64-LABEL: uitofp_v4i64_v4f64:
@@ -836,31 +834,29 @@ define <4 x double> @uitofp_v4i64_v4f64(<4 x i64> %x) #0 {
836
834
; AVX2-64-NEXT: vextractps $3, %xmm1, %eax
837
835
; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm2, %xmm2
838
836
; AVX2-64-NEXT: vextractps $1, %xmm1, %eax
839
- ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm3, %xmm1
840
- ; AVX2-64-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm1[0],xmm2[0]
841
- ; AVX2-64-NEXT: vextractps $3, %xmm0, %eax
842
- ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm3, %xmm2
843
- ; AVX2-64-NEXT: vextractps $1, %xmm0, %eax
844
837
; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm3, %xmm3
845
838
; AVX2-64-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm3[0],xmm2[0]
846
- ; AVX2-64-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm1
847
- ; AVX2-64-NEXT: vbroadcastsd {{.*#+}} ymm2 = [4.294967296E+9,4.294967296E+9,4.294967296E+9,4.294967296E+9]
848
- ; AVX2-64-NEXT: vmulpd %ymm2, %ymm1, %ymm1
849
- ; AVX2-64-NEXT: vxorpd %xmm2, %xmm2, %xmm2
850
- ; AVX2-64-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2],ymm2[3],ymm0[4],ymm2[5],ymm0[6],ymm2[7]
851
- ; AVX2-64-NEXT: vextracti128 $1, %ymm0, %xmm2
852
- ; AVX2-64-NEXT: vpextrq $1, %xmm2, %rax
853
- ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm3
854
- ; AVX2-64-NEXT: vmovq %xmm2, %rax
855
- ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm2
856
- ; AVX2-64-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]
857
- ; AVX2-64-NEXT: vpextrq $1, %xmm0, %rax
839
+ ; AVX2-64-NEXT: vextractps $3, %xmm0, %eax
858
840
; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm3
841
+ ; AVX2-64-NEXT: vextractps $1, %xmm0, %eax
842
+ ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm4
843
+ ; AVX2-64-NEXT: vunpcklpd {{.*#+}} xmm3 = xmm4[0],xmm3[0]
844
+ ; AVX2-64-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
845
+ ; AVX2-64-NEXT: vbroadcastsd {{.*#+}} ymm3 = [4.294967296E+9,4.294967296E+9,4.294967296E+9,4.294967296E+9]
846
+ ; AVX2-64-NEXT: vmulpd %ymm3, %ymm2, %ymm2
847
+ ; AVX2-64-NEXT: vextractps $2, %xmm1, %eax
848
+ ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm5, %xmm3
849
+ ; AVX2-64-NEXT: vmovd %xmm1, %eax
850
+ ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm5, %xmm1
851
+ ; AVX2-64-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm1[0],xmm3[0]
852
+ ; AVX2-64-NEXT: vextractps $2, %xmm0, %eax
853
+ ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm5, %xmm3
859
854
; AVX2-64-NEXT: vmovq %xmm0, %rax
860
- ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm4, %xmm0
855
+ ; AVX2-64-NEXT: movl %eax, %eax
856
+ ; AVX2-64-NEXT: vcvtsi2sd %rax, %xmm5, %xmm0
861
857
; AVX2-64-NEXT: vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm3[0]
862
- ; AVX2-64-NEXT: vinsertf128 $1, %xmm2 , %ymm0, %ymm0
863
- ; AVX2-64-NEXT: vaddpd %ymm0, %ymm1 , %ymm0
858
+ ; AVX2-64-NEXT: vinsertf128 $1, %xmm1 , %ymm0, %ymm0
859
+ ; AVX2-64-NEXT: vaddpd %ymm0, %ymm2 , %ymm0
864
860
; AVX2-64-NEXT: retq
865
861
;
866
862
; AVX512F-64-LABEL: uitofp_v4i64_v4f64:
0 commit comments