@@ -2194,10 +2194,7 @@ define <4 x float> @uitofp_4i64_to_4f32_undef(<2 x i64> %a) {
2194
2194
; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm1
2195
2195
; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[0]
2196
2196
; AVX2-NEXT: vaddps %xmm1, %xmm1, %xmm2
2197
- ; AVX2-NEXT: vxorps %xmm3, %xmm3, %xmm3
2198
- ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm3, %ymm0
2199
- ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
2200
- ; AVX2-NEXT: vpackssdw %xmm3, %xmm0, %xmm0
2197
+ ; AVX2-NEXT: vpackssdw %xmm0, %xmm0, %xmm0
2201
2198
; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm1, %xmm0
2202
2199
; AVX2-NEXT: vzeroupper
2203
2200
; AVX2-NEXT: retq
@@ -2593,29 +2590,27 @@ define <4 x float> @uitofp_4i64_to_4f32(<4 x i64> %a) {
2593
2590
;
2594
2591
; AVX2-LABEL: uitofp_4i64_to_4f32:
2595
2592
; AVX2: # %bb.0:
2596
- ; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
2597
- ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm1
2598
- ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
2599
- ; AVX2-NEXT: vpackssdw %xmm2, %xmm1, %xmm1
2600
- ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm2 = [1,1,1,1]
2601
- ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm2
2602
- ; AVX2-NEXT: vpsrlq $1, %ymm0, %ymm3
2603
- ; AVX2-NEXT: vpor %ymm2, %ymm3, %ymm2
2604
- ; AVX2-NEXT: vblendvpd %ymm0, %ymm2, %ymm0, %ymm0
2605
- ; AVX2-NEXT: vpextrq $1, %xmm0, %rax
2606
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm2
2607
- ; AVX2-NEXT: vmovq %xmm0, %rax
2608
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm3
2593
+ ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm1 = [1,1,1,1]
2594
+ ; AVX2-NEXT: vpand %ymm1, %ymm0, %ymm1
2595
+ ; AVX2-NEXT: vpsrlq $1, %ymm0, %ymm2
2596
+ ; AVX2-NEXT: vpor %ymm1, %ymm2, %ymm1
2597
+ ; AVX2-NEXT: vblendvpd %ymm0, %ymm1, %ymm0, %ymm1
2598
+ ; AVX2-NEXT: vpextrq $1, %xmm1, %rax
2599
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm3, %xmm2
2600
+ ; AVX2-NEXT: vmovq %xmm1, %rax
2601
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm3, %xmm3
2609
2602
; AVX2-NEXT: vinsertps {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[2,3]
2610
- ; AVX2-NEXT: vextracti128 $1, %ymm0 , %xmm0
2611
- ; AVX2-NEXT: vmovq %xmm0 , %rax
2603
+ ; AVX2-NEXT: vextracti128 $1, %ymm1 , %xmm1
2604
+ ; AVX2-NEXT: vmovq %xmm1 , %rax
2612
2605
; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm3
2613
2606
; AVX2-NEXT: vinsertps {{.*#+}} xmm2 = xmm2[0,1],xmm3[0],xmm2[3]
2614
- ; AVX2-NEXT: vpextrq $1, %xmm0, %rax
2615
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm0
2616
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[0]
2617
- ; AVX2-NEXT: vaddps %xmm0, %xmm0, %xmm2
2618
- ; AVX2-NEXT: vblendvps %xmm1, %xmm2, %xmm0, %xmm0
2607
+ ; AVX2-NEXT: vpextrq $1, %xmm1, %rax
2608
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm1
2609
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[0]
2610
+ ; AVX2-NEXT: vaddps %xmm1, %xmm1, %xmm2
2611
+ ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
2612
+ ; AVX2-NEXT: vpackssdw %xmm3, %xmm0, %xmm0
2613
+ ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm1, %xmm0
2619
2614
; AVX2-NEXT: vzeroupper
2620
2615
; AVX2-NEXT: retq
2621
2616
;
@@ -4512,29 +4507,27 @@ define <4 x float> @uitofp_load_4i64_to_4f32(<4 x i64> *%a) {
4512
4507
; AVX2-LABEL: uitofp_load_4i64_to_4f32:
4513
4508
; AVX2: # %bb.0:
4514
4509
; AVX2-NEXT: vmovdqa (%rdi), %ymm0
4515
- ; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
4516
- ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm1
4517
- ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
4518
- ; AVX2-NEXT: vpackssdw %xmm2, %xmm1, %xmm1
4519
- ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm2 = [1,1,1,1]
4520
- ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm2
4521
- ; AVX2-NEXT: vpsrlq $1, %ymm0, %ymm3
4522
- ; AVX2-NEXT: vpor %ymm2, %ymm3, %ymm2
4523
- ; AVX2-NEXT: vblendvpd %ymm0, %ymm2, %ymm0, %ymm0
4510
+ ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm1 = [1,1,1,1]
4511
+ ; AVX2-NEXT: vpand %ymm1, %ymm0, %ymm1
4512
+ ; AVX2-NEXT: vpsrlq $1, %ymm0, %ymm2
4513
+ ; AVX2-NEXT: vpor %ymm1, %ymm2, %ymm1
4514
+ ; AVX2-NEXT: vblendvpd %ymm0, %ymm1, %ymm0, %ymm0
4524
4515
; AVX2-NEXT: vpextrq $1, %xmm0, %rax
4525
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4 , %xmm2
4516
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm3 , %xmm1
4526
4517
; AVX2-NEXT: vmovq %xmm0, %rax
4527
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4 , %xmm3
4528
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm2 = xmm3 [0],xmm2 [0],xmm3 [2,3]
4518
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm3 , %xmm2
4519
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm2 [0],xmm1 [0],xmm2 [2,3]
4529
4520
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
4530
4521
; AVX2-NEXT: vmovq %xmm0, %rax
4531
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4 , %xmm3
4532
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm2 = xmm2 [0,1],xmm3 [0],xmm2 [3]
4522
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm3 , %xmm2
4523
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm1 [0,1],xmm2 [0],xmm1 [3]
4533
4524
; AVX2-NEXT: vpextrq $1, %xmm0, %rax
4534
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm4, %xmm0
4535
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[0]
4536
- ; AVX2-NEXT: vaddps %xmm0, %xmm0, %xmm2
4537
- ; AVX2-NEXT: vblendvps %xmm1, %xmm2, %xmm0, %xmm0
4525
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm3, %xmm0
4526
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[0]
4527
+ ; AVX2-NEXT: vaddps %xmm0, %xmm0, %xmm1
4528
+ ; AVX2-NEXT: vmovdqa (%rdi), %xmm2
4529
+ ; AVX2-NEXT: vpackssdw 16(%rdi), %xmm2, %xmm2
4530
+ ; AVX2-NEXT: vblendvps %xmm2, %xmm1, %xmm0, %xmm0
4538
4531
; AVX2-NEXT: vzeroupper
4539
4532
; AVX2-NEXT: retq
4540
4533
;
@@ -4993,50 +4986,47 @@ define <8 x float> @uitofp_load_8i64_to_8f32(<8 x i64> *%a) {
4993
4986
; AVX2: # %bb.0:
4994
4987
; AVX2-NEXT: vmovaps (%rdi), %ymm0
4995
4988
; AVX2-NEXT: vmovdqa 32(%rdi), %ymm1
4996
- ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
4997
- ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm2, %ymm3
4998
- ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4999
- ; AVX2-NEXT: vpackssdw %xmm4, %xmm3, %xmm3
5000
- ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm4 = [1,1,1,1]
5001
- ; AVX2-NEXT: vpand %ymm4, %ymm1, %ymm5
5002
- ; AVX2-NEXT: vpsrlq $1, %ymm1, %ymm6
5003
- ; AVX2-NEXT: vpor %ymm5, %ymm6, %ymm5
5004
- ; AVX2-NEXT: vblendvpd %ymm1, %ymm5, %ymm1, %ymm1
4989
+ ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm2 = [1,1,1,1]
4990
+ ; AVX2-NEXT: vpand %ymm2, %ymm1, %ymm3
4991
+ ; AVX2-NEXT: vpsrlq $1, %ymm1, %ymm4
4992
+ ; AVX2-NEXT: vpor %ymm3, %ymm4, %ymm3
4993
+ ; AVX2-NEXT: vblendvpd %ymm1, %ymm3, %ymm1, %ymm1
5005
4994
; AVX2-NEXT: vpextrq $1, %xmm1, %rax
5006
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm5
4995
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm5 , %xmm3
5007
4996
; AVX2-NEXT: vmovq %xmm1, %rax
5008
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm6
5009
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm5 = xmm6 [0],xmm5 [0],xmm6 [2,3]
4997
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm5 , %xmm4
4998
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm3 = xmm4 [0],xmm3 [0],xmm4 [2,3]
5010
4999
; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm1
5011
5000
; AVX2-NEXT: vmovq %xmm1, %rax
5012
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm6
5013
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm5 = xmm5 [0,1],xmm6 [0],xmm5 [3]
5001
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm5 , %xmm4
5002
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm3 = xmm3 [0,1],xmm4 [0],xmm3 [3]
5014
5003
; AVX2-NEXT: vpextrq $1, %xmm1, %rax
5015
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm1
5016
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm5 [0,1,2],xmm1[0]
5017
- ; AVX2-NEXT: vaddps %xmm1, %xmm1, %xmm5
5018
- ; AVX2-NEXT: vblendvps %xmm3 , %xmm5, %xmm1, %xmm1
5019
- ; AVX2-NEXT: vpcmpgtq %ymm0 , %ymm2, %ymm2
5020
- ; AVX2-NEXT: vextracti128 $1 , %ymm2 , %xmm3
5021
- ; AVX2-NEXT: vpackssdw % xmm3, %xmm2 , %xmm2
5022
- ; AVX2-NEXT: vpand %ymm4 , %ymm0, %ymm3
5023
- ; AVX2-NEXT: vpsrlq $1, %ymm0, %ymm4
5024
- ; AVX2-NEXT: vpor %ymm3 , %ymm4 , %ymm3
5025
- ; AVX2-NEXT: vblendvpd %ymm0, %ymm3 , %ymm0, %ymm0
5004
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm5 , %xmm1
5005
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm3 [0,1,2],xmm1[0]
5006
+ ; AVX2-NEXT: vaddps %xmm1, %xmm1, %xmm3
5007
+ ; AVX2-NEXT: vmovdqa (%rdi) , %xmm4
5008
+ ; AVX2-NEXT: vmovdqa 32(%rdi) , %xmm5
5009
+ ; AVX2-NEXT: vpackssdw 48(%rdi) , %xmm5 , %xmm5
5010
+ ; AVX2-NEXT: vblendvps %xmm5, % xmm3, %xmm1 , %xmm1
5011
+ ; AVX2-NEXT: vandps %ymm2 , %ymm0, %ymm2
5012
+ ; AVX2-NEXT: vpsrlq $1, %ymm0, %ymm3
5013
+ ; AVX2-NEXT: vpor %ymm2 , %ymm3 , %ymm2
5014
+ ; AVX2-NEXT: vblendvpd %ymm0, %ymm2 , %ymm0, %ymm0
5026
5015
; AVX2-NEXT: vpextrq $1, %xmm0, %rax
5027
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm3
5016
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm6 , %xmm2
5028
5017
; AVX2-NEXT: vmovq %xmm0, %rax
5029
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm4
5030
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm3 = xmm4 [0],xmm3 [0],xmm4 [2,3]
5018
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm6 , %xmm3
5019
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm2 = xmm3 [0],xmm2 [0],xmm3 [2,3]
5031
5020
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
5032
5021
; AVX2-NEXT: vmovq %xmm0, %rax
5033
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7 , %xmm4
5034
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm3 = xmm3 [0,1],xmm4 [0],xmm3 [3]
5022
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm6 , %xmm3
5023
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm2 = xmm2 [0,1],xmm3 [0],xmm2 [3]
5035
5024
; AVX2-NEXT: vpextrq $1, %xmm0, %rax
5036
- ; AVX2-NEXT: vcvtsi2ss %rax, %xmm7, %xmm0
5037
- ; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm3[0,1,2],xmm0[0]
5038
- ; AVX2-NEXT: vaddps %xmm0, %xmm0, %xmm3
5039
- ; AVX2-NEXT: vblendvps %xmm2, %xmm3, %xmm0, %xmm0
5025
+ ; AVX2-NEXT: vcvtsi2ss %rax, %xmm6, %xmm0
5026
+ ; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[0]
5027
+ ; AVX2-NEXT: vaddps %xmm0, %xmm0, %xmm2
5028
+ ; AVX2-NEXT: vpackssdw 16(%rdi), %xmm4, %xmm3
5029
+ ; AVX2-NEXT: vblendvps %xmm3, %xmm2, %xmm0, %xmm0
5040
5030
; AVX2-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
5041
5031
; AVX2-NEXT: retq
5042
5032
;
0 commit comments