@@ -401,8 +401,7 @@ define <16 x i32> @vpaddd_broadcast_test(<16 x i32> %i) nounwind {
401
401
define <16 x i32 > @vpaddd_mask_test (<16 x i32 > %i , <16 x i32 > %j , <16 x i32 > %mask1 ) nounwind readnone {
402
402
; CHECK-LABEL: vpaddd_mask_test:
403
403
; CHECK: # %bb.0:
404
- ; CHECK-NEXT: vpxor %xmm3, %xmm3, %xmm3
405
- ; CHECK-NEXT: vpcmpneqd %zmm3, %zmm2, %k1
404
+ ; CHECK-NEXT: vptestmd %zmm2, %zmm2, %k1
406
405
; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm0 {%k1}
407
406
; CHECK-NEXT: retq
408
407
%mask = icmp ne <16 x i32 > %mask1 , zeroinitializer
@@ -414,8 +413,7 @@ define <16 x i32> @vpaddd_mask_test(<16 x i32> %i, <16 x i32> %j, <16 x i32> %ma
414
413
define <16 x i32 > @vpaddd_maskz_test (<16 x i32 > %i , <16 x i32 > %j , <16 x i32 > %mask1 ) nounwind readnone {
415
414
; CHECK-LABEL: vpaddd_maskz_test:
416
415
; CHECK: # %bb.0:
417
- ; CHECK-NEXT: vpxor %xmm3, %xmm3, %xmm3
418
- ; CHECK-NEXT: vpcmpneqd %zmm3, %zmm2, %k1
416
+ ; CHECK-NEXT: vptestmd %zmm2, %zmm2, %k1
419
417
; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm0 {%k1} {z}
420
418
; CHECK-NEXT: retq
421
419
%mask = icmp ne <16 x i32 > %mask1 , zeroinitializer
@@ -427,8 +425,7 @@ define <16 x i32> @vpaddd_maskz_test(<16 x i32> %i, <16 x i32> %j, <16 x i32> %m
427
425
define <16 x i32 > @vpaddd_mask_fold_test (<16 x i32 > %i , <16 x i32 >* %j.ptr , <16 x i32 > %mask1 ) nounwind readnone {
428
426
; CHECK-LABEL: vpaddd_mask_fold_test:
429
427
; CHECK: # %bb.0:
430
- ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2
431
- ; CHECK-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
428
+ ; CHECK-NEXT: vptestmd %zmm1, %zmm1, %k1
432
429
; CHECK-NEXT: vpaddd (%rdi), %zmm0, %zmm0 {%k1}
433
430
; CHECK-NEXT: retq
434
431
%mask = icmp ne <16 x i32 > %mask1 , zeroinitializer
@@ -441,8 +438,7 @@ define <16 x i32> @vpaddd_mask_fold_test(<16 x i32> %i, <16 x i32>* %j.ptr, <16
441
438
define <16 x i32 > @vpaddd_mask_broadcast_test (<16 x i32 > %i , <16 x i32 > %mask1 ) nounwind readnone {
442
439
; CHECK-LABEL: vpaddd_mask_broadcast_test:
443
440
; CHECK: # %bb.0:
444
- ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2
445
- ; CHECK-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
441
+ ; CHECK-NEXT: vptestmd %zmm1, %zmm1, %k1
446
442
; CHECK-NEXT: vpaddd {{.*}}(%rip){1to16}, %zmm0, %zmm0 {%k1}
447
443
; CHECK-NEXT: retq
448
444
%mask = icmp ne <16 x i32 > %mask1 , zeroinitializer
@@ -454,8 +450,7 @@ define <16 x i32> @vpaddd_mask_broadcast_test(<16 x i32> %i, <16 x i32> %mask1)
454
450
define <16 x i32 > @vpaddd_maskz_fold_test (<16 x i32 > %i , <16 x i32 >* %j.ptr , <16 x i32 > %mask1 ) nounwind readnone {
455
451
; CHECK-LABEL: vpaddd_maskz_fold_test:
456
452
; CHECK: # %bb.0:
457
- ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2
458
- ; CHECK-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
453
+ ; CHECK-NEXT: vptestmd %zmm1, %zmm1, %k1
459
454
; CHECK-NEXT: vpaddd (%rdi), %zmm0, %zmm0 {%k1} {z}
460
455
; CHECK-NEXT: retq
461
456
%mask = icmp ne <16 x i32 > %mask1 , zeroinitializer
@@ -468,8 +463,7 @@ define <16 x i32> @vpaddd_maskz_fold_test(<16 x i32> %i, <16 x i32>* %j.ptr, <16
468
463
define <16 x i32 > @vpaddd_maskz_broadcast_test (<16 x i32 > %i , <16 x i32 > %mask1 ) nounwind readnone {
469
464
; CHECK-LABEL: vpaddd_maskz_broadcast_test:
470
465
; CHECK: # %bb.0:
471
- ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2
472
- ; CHECK-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
466
+ ; CHECK-NEXT: vptestmd %zmm1, %zmm1, %k1
473
467
; CHECK-NEXT: vpaddd {{.*}}(%rip){1to16}, %zmm0, %zmm0 {%k1} {z}
474
468
; CHECK-NEXT: retq
475
469
%mask = icmp ne <16 x i32 > %mask1 , zeroinitializer
@@ -671,8 +665,7 @@ entry:
671
665
define <16 x float > @test_mask_vaddps (<16 x float > %dst , <16 x float > %i ,
672
666
; CHECK-LABEL: test_mask_vaddps:
673
667
; CHECK: # %bb.0:
674
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
675
- ; CHECK-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
668
+ ; CHECK-NEXT: vptestmd %zmm3, %zmm3, %k1
676
669
; CHECK-NEXT: vaddps %zmm2, %zmm1, %zmm0 {%k1}
677
670
; CHECK-NEXT: retq
678
671
<16 x float > %j , <16 x i32 > %mask1 )
@@ -686,8 +679,7 @@ define <16 x float> @test_mask_vaddps(<16 x float> %dst, <16 x float> %i,
686
679
define <16 x float > @test_mask_vmulps (<16 x float > %dst , <16 x float > %i ,
687
680
; CHECK-LABEL: test_mask_vmulps:
688
681
; CHECK: # %bb.0:
689
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
690
- ; CHECK-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
682
+ ; CHECK-NEXT: vptestmd %zmm3, %zmm3, %k1
691
683
; CHECK-NEXT: vmulps %zmm2, %zmm1, %zmm0 {%k1}
692
684
; CHECK-NEXT: retq
693
685
<16 x float > %j , <16 x i32 > %mask1 )
@@ -701,8 +693,7 @@ define <16 x float> @test_mask_vmulps(<16 x float> %dst, <16 x float> %i,
701
693
define <16 x float > @test_mask_vminps (<16 x float > %dst , <16 x float > %i ,
702
694
; CHECK-LABEL: test_mask_vminps:
703
695
; CHECK: # %bb.0:
704
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
705
- ; CHECK-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
696
+ ; CHECK-NEXT: vptestmd %zmm3, %zmm3, %k1
706
697
; CHECK-NEXT: vminps %zmm2, %zmm1, %zmm0 {%k1}
707
698
; CHECK-NEXT: retq
708
699
<16 x float > %j , <16 x i32 > %mask1 )
@@ -718,38 +709,33 @@ define <8 x double> @test_mask_vminpd(<8 x double> %dst, <8 x double> %i,
718
709
; AVX512F-LABEL: test_mask_vminpd:
719
710
; AVX512F: # %bb.0:
720
711
; AVX512F-NEXT: # kill: def %ymm3 killed %ymm3 def %zmm3
721
- ; AVX512F-NEXT: vpxor %xmm4, %xmm4, %xmm4
722
- ; AVX512F-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
712
+ ; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k1
723
713
; AVX512F-NEXT: vminpd %zmm2, %zmm1, %zmm0 {%k1}
724
714
; AVX512F-NEXT: retq
725
715
;
726
716
; AVX512VL-LABEL: test_mask_vminpd:
727
717
; AVX512VL: # %bb.0:
728
- ; AVX512VL-NEXT: vpxor %xmm4, %xmm4, %xmm4
729
- ; AVX512VL-NEXT: vpcmpneqd %ymm4, %ymm3, %k1
718
+ ; AVX512VL-NEXT: vptestmd %ymm3, %ymm3, %k1
730
719
; AVX512VL-NEXT: vminpd %zmm2, %zmm1, %zmm0 {%k1}
731
720
; AVX512VL-NEXT: retq
732
721
;
733
722
; AVX512BW-LABEL: test_mask_vminpd:
734
723
; AVX512BW: # %bb.0:
735
724
; AVX512BW-NEXT: # kill: def %ymm3 killed %ymm3 def %zmm3
736
- ; AVX512BW-NEXT: vpxor %xmm4, %xmm4, %xmm4
737
- ; AVX512BW-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
725
+ ; AVX512BW-NEXT: vptestmd %zmm3, %zmm3, %k1
738
726
; AVX512BW-NEXT: vminpd %zmm2, %zmm1, %zmm0 {%k1}
739
727
; AVX512BW-NEXT: retq
740
728
;
741
729
; AVX512DQ-LABEL: test_mask_vminpd:
742
730
; AVX512DQ: # %bb.0:
743
731
; AVX512DQ-NEXT: # kill: def %ymm3 killed %ymm3 def %zmm3
744
- ; AVX512DQ-NEXT: vpxor %xmm4, %xmm4, %xmm4
745
- ; AVX512DQ-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
732
+ ; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k1
746
733
; AVX512DQ-NEXT: vminpd %zmm2, %zmm1, %zmm0 {%k1}
747
734
; AVX512DQ-NEXT: retq
748
735
;
749
736
; SKX-LABEL: test_mask_vminpd:
750
737
; SKX: # %bb.0:
751
- ; SKX-NEXT: vpxor %xmm4, %xmm4, %xmm4
752
- ; SKX-NEXT: vpcmpneqd %ymm4, %ymm3, %k1
738
+ ; SKX-NEXT: vptestmd %ymm3, %ymm3, %k1
753
739
; SKX-NEXT: vminpd %zmm2, %zmm1, %zmm0 {%k1}
754
740
; SKX-NEXT: retq
755
741
<8 x double > %j , <8 x i32 > %mask1 )
@@ -764,8 +750,7 @@ define <8 x double> @test_mask_vminpd(<8 x double> %dst, <8 x double> %i,
764
750
define <16 x float > @test_mask_vmaxps (<16 x float > %dst , <16 x float > %i ,
765
751
; CHECK-LABEL: test_mask_vmaxps:
766
752
; CHECK: # %bb.0:
767
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
768
- ; CHECK-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
753
+ ; CHECK-NEXT: vptestmd %zmm3, %zmm3, %k1
769
754
; CHECK-NEXT: vmaxps %zmm2, %zmm1, %zmm0 {%k1}
770
755
; CHECK-NEXT: retq
771
756
<16 x float > %j , <16 x i32 > %mask1 )
@@ -781,38 +766,33 @@ define <8 x double> @test_mask_vmaxpd(<8 x double> %dst, <8 x double> %i,
781
766
; AVX512F-LABEL: test_mask_vmaxpd:
782
767
; AVX512F: # %bb.0:
783
768
; AVX512F-NEXT: # kill: def %ymm3 killed %ymm3 def %zmm3
784
- ; AVX512F-NEXT: vpxor %xmm4, %xmm4, %xmm4
785
- ; AVX512F-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
769
+ ; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k1
786
770
; AVX512F-NEXT: vmaxpd %zmm2, %zmm1, %zmm0 {%k1}
787
771
; AVX512F-NEXT: retq
788
772
;
789
773
; AVX512VL-LABEL: test_mask_vmaxpd:
790
774
; AVX512VL: # %bb.0:
791
- ; AVX512VL-NEXT: vpxor %xmm4, %xmm4, %xmm4
792
- ; AVX512VL-NEXT: vpcmpneqd %ymm4, %ymm3, %k1
775
+ ; AVX512VL-NEXT: vptestmd %ymm3, %ymm3, %k1
793
776
; AVX512VL-NEXT: vmaxpd %zmm2, %zmm1, %zmm0 {%k1}
794
777
; AVX512VL-NEXT: retq
795
778
;
796
779
; AVX512BW-LABEL: test_mask_vmaxpd:
797
780
; AVX512BW: # %bb.0:
798
781
; AVX512BW-NEXT: # kill: def %ymm3 killed %ymm3 def %zmm3
799
- ; AVX512BW-NEXT: vpxor %xmm4, %xmm4, %xmm4
800
- ; AVX512BW-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
782
+ ; AVX512BW-NEXT: vptestmd %zmm3, %zmm3, %k1
801
783
; AVX512BW-NEXT: vmaxpd %zmm2, %zmm1, %zmm0 {%k1}
802
784
; AVX512BW-NEXT: retq
803
785
;
804
786
; AVX512DQ-LABEL: test_mask_vmaxpd:
805
787
; AVX512DQ: # %bb.0:
806
788
; AVX512DQ-NEXT: # kill: def %ymm3 killed %ymm3 def %zmm3
807
- ; AVX512DQ-NEXT: vpxor %xmm4, %xmm4, %xmm4
808
- ; AVX512DQ-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
789
+ ; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k1
809
790
; AVX512DQ-NEXT: vmaxpd %zmm2, %zmm1, %zmm0 {%k1}
810
791
; AVX512DQ-NEXT: retq
811
792
;
812
793
; SKX-LABEL: test_mask_vmaxpd:
813
794
; SKX: # %bb.0:
814
- ; SKX-NEXT: vpxor %xmm4, %xmm4, %xmm4
815
- ; SKX-NEXT: vpcmpneqd %ymm4, %ymm3, %k1
795
+ ; SKX-NEXT: vptestmd %ymm3, %ymm3, %k1
816
796
; SKX-NEXT: vmaxpd %zmm2, %zmm1, %zmm0 {%k1}
817
797
; SKX-NEXT: retq
818
798
<8 x double > %j , <8 x i32 > %mask1 )
@@ -827,8 +807,7 @@ define <8 x double> @test_mask_vmaxpd(<8 x double> %dst, <8 x double> %i,
827
807
define <16 x float > @test_mask_vsubps (<16 x float > %dst , <16 x float > %i ,
828
808
; CHECK-LABEL: test_mask_vsubps:
829
809
; CHECK: # %bb.0:
830
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
831
- ; CHECK-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
810
+ ; CHECK-NEXT: vptestmd %zmm3, %zmm3, %k1
832
811
; CHECK-NEXT: vsubps %zmm2, %zmm1, %zmm0 {%k1}
833
812
; CHECK-NEXT: retq
834
813
<16 x float > %j , <16 x i32 > %mask1 )
@@ -842,8 +821,7 @@ define <16 x float> @test_mask_vsubps(<16 x float> %dst, <16 x float> %i,
842
821
define <16 x float > @test_mask_vdivps (<16 x float > %dst , <16 x float > %i ,
843
822
; CHECK-LABEL: test_mask_vdivps:
844
823
; CHECK: # %bb.0:
845
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
846
- ; CHECK-NEXT: vpcmpneqd %zmm4, %zmm3, %k1
824
+ ; CHECK-NEXT: vptestmd %zmm3, %zmm3, %k1
847
825
; CHECK-NEXT: vdivps %zmm2, %zmm1, %zmm0 {%k1}
848
826
; CHECK-NEXT: retq
849
827
<16 x float > %j , <16 x i32 > %mask1 )
@@ -857,8 +835,7 @@ define <16 x float> @test_mask_vdivps(<16 x float> %dst, <16 x float> %i,
857
835
define <8 x double > @test_mask_vaddpd (<8 x double > %dst , <8 x double > %i ,
858
836
; CHECK-LABEL: test_mask_vaddpd:
859
837
; CHECK: # %bb.0:
860
- ; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4
861
- ; CHECK-NEXT: vpcmpneqq %zmm4, %zmm3, %k1
838
+ ; CHECK-NEXT: vptestmq %zmm3, %zmm3, %k1
862
839
; CHECK-NEXT: vaddpd %zmm2, %zmm1, %zmm0 {%k1}
863
840
; CHECK-NEXT: retq
864
841
<8 x double > %j , <8 x i64 > %mask1 )
@@ -872,8 +849,7 @@ define <8 x double> @test_mask_vaddpd(<8 x double> %dst, <8 x double> %i,
872
849
define <8 x double > @test_maskz_vaddpd (<8 x double > %i , <8 x double > %j ,
873
850
; CHECK-LABEL: test_maskz_vaddpd:
874
851
; CHECK: # %bb.0:
875
- ; CHECK-NEXT: vpxor %xmm3, %xmm3, %xmm3
876
- ; CHECK-NEXT: vpcmpneqq %zmm3, %zmm2, %k1
852
+ ; CHECK-NEXT: vptestmq %zmm2, %zmm2, %k1
877
853
; CHECK-NEXT: vaddpd %zmm1, %zmm0, %zmm0 {%k1} {z}
878
854
; CHECK-NEXT: retq
879
855
<8 x i64 > %mask1 ) nounwind readnone {
@@ -886,8 +862,7 @@ define <8 x double> @test_maskz_vaddpd(<8 x double> %i, <8 x double> %j,
886
862
define <8 x double > @test_mask_fold_vaddpd (<8 x double > %dst , <8 x double > %i ,
887
863
; CHECK-LABEL: test_mask_fold_vaddpd:
888
864
; CHECK: # %bb.0:
889
- ; CHECK-NEXT: vpxor %xmm3, %xmm3, %xmm3
890
- ; CHECK-NEXT: vpcmpneqq %zmm3, %zmm2, %k1
865
+ ; CHECK-NEXT: vptestmq %zmm2, %zmm2, %k1
891
866
; CHECK-NEXT: vaddpd (%rdi), %zmm1, %zmm0 {%k1}
892
867
; CHECK-NEXT: retq
893
868
<8 x double >* %j , <8 x i64 > %mask1 )
@@ -902,8 +877,7 @@ define <8 x double> @test_mask_fold_vaddpd(<8 x double> %dst, <8 x double> %i,
902
877
define <8 x double > @test_maskz_fold_vaddpd (<8 x double > %i , <8 x double >* %j ,
903
878
; CHECK-LABEL: test_maskz_fold_vaddpd:
904
879
; CHECK: # %bb.0:
905
- ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2
906
- ; CHECK-NEXT: vpcmpneqq %zmm2, %zmm1, %k1
880
+ ; CHECK-NEXT: vptestmq %zmm1, %zmm1, %k1
907
881
; CHECK-NEXT: vaddpd (%rdi), %zmm0, %zmm0 {%k1} {z}
908
882
; CHECK-NEXT: retq
909
883
<8 x i64 > %mask1 ) nounwind {
@@ -930,8 +904,7 @@ define <8 x double> @test_broadcast_vaddpd(<8 x double> %i, double* %j) nounwind
930
904
define <8 x double > @test_mask_broadcast_vaddpd (<8 x double > %dst , <8 x double > %i ,
931
905
; CHECK-LABEL: test_mask_broadcast_vaddpd:
932
906
; CHECK: # %bb.0:
933
- ; CHECK-NEXT: vpxor %xmm0, %xmm0, %xmm0
934
- ; CHECK-NEXT: vpcmpneqq %zmm0, %zmm2, %k1
907
+ ; CHECK-NEXT: vptestmq %zmm2, %zmm2, %k1
935
908
; CHECK-NEXT: vaddpd (%rdi){1to8}, %zmm1, %zmm1 {%k1}
936
909
; CHECK-NEXT: vmovapd %zmm1, %zmm0
937
910
; CHECK-NEXT: retq
@@ -949,8 +922,7 @@ define <8 x double> @test_mask_broadcast_vaddpd(<8 x double> %dst, <8 x double>
949
922
define <8 x double > @test_maskz_broadcast_vaddpd (<8 x double > %i , double * %j ,
950
923
; CHECK-LABEL: test_maskz_broadcast_vaddpd:
951
924
; CHECK: # %bb.0:
952
- ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2
953
- ; CHECK-NEXT: vpcmpneqq %zmm2, %zmm1, %k1
925
+ ; CHECK-NEXT: vptestmq %zmm1, %zmm1, %k1
954
926
; CHECK-NEXT: vaddpd (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z}
955
927
; CHECK-NEXT: retq
956
928
<8 x i64 > %mask1 ) nounwind {
0 commit comments