@@ -680,16 +680,14 @@ define float @fmaximum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
680
680
; X64-NEXT: je .LBB30_1
681
681
; X64-NEXT: # %bb.2:
682
682
; X64-NEXT: vmovdqa %xmm1, %xmm2
683
- ; X64-NEXT: vmovdqa %xmm0, %xmm3
684
683
; X64-NEXT: jmp .LBB30_3
685
684
; X64-NEXT: .LBB30_1:
686
685
; X64-NEXT: vmovdqa %xmm0, %xmm2
687
- ; X64-NEXT: vmovdqa %xmm1, %xmm3
686
+ ; X64-NEXT: vmovdqa %xmm1, %xmm0
688
687
; X64-NEXT: .LBB30_3:
689
- ; X64-NEXT: vmaxss %xmm2, %xmm3, %xmm2
690
- ; X64-NEXT: vcmpunordss %xmm1, %xmm0, %xmm0
691
- ; X64-NEXT: vbroadcastss {{.*#+}} xmm1 = [NaN,NaN,NaN,NaN]
692
- ; X64-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
688
+ ; X64-NEXT: vmaxss %xmm2, %xmm0, %xmm1
689
+ ; X64-NEXT: vcmpunordss %xmm0, %xmm0, %xmm2
690
+ ; X64-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
693
691
; X64-NEXT: retq
694
692
;
695
693
; X86-LABEL: fmaximum_v4f32:
@@ -699,17 +697,15 @@ define float @fmaximum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
699
697
; X86-NEXT: je .LBB30_1
700
698
; X86-NEXT: # %bb.2:
701
699
; X86-NEXT: vmovdqa %xmm1, %xmm2
702
- ; X86-NEXT: vmovdqa %xmm0, %xmm3
703
700
; X86-NEXT: jmp .LBB30_3
704
701
; X86-NEXT: .LBB30_1:
705
702
; X86-NEXT: vmovdqa %xmm0, %xmm2
706
- ; X86-NEXT: vmovdqa %xmm1, %xmm3
703
+ ; X86-NEXT: vmovdqa %xmm1, %xmm0
707
704
; X86-NEXT: .LBB30_3:
708
705
; X86-NEXT: pushl %eax
709
- ; X86-NEXT: vmaxss %xmm2, %xmm3, %xmm2
710
- ; X86-NEXT: vcmpunordss %xmm1, %xmm0, %xmm0
711
- ; X86-NEXT: vbroadcastss {{.*#+}} xmm1 = [NaN,NaN,NaN,NaN]
712
- ; X86-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
706
+ ; X86-NEXT: vmaxss %xmm2, %xmm0, %xmm1
707
+ ; X86-NEXT: vcmpunordss %xmm0, %xmm0, %xmm2
708
+ ; X86-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
713
709
; X86-NEXT: vmovss %xmm0, (%esp)
714
710
; X86-NEXT: flds (%esp)
715
711
; X86-NEXT: popl %eax
@@ -727,15 +723,14 @@ define double @fmaximum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
727
723
; X64-NEXT: je .LBB31_1
728
724
; X64-NEXT: # %bb.2:
729
725
; X64-NEXT: vmovdqa %xmm1, %xmm2
730
- ; X64-NEXT: vmovdqa %xmm0, %xmm3
731
726
; X64-NEXT: jmp .LBB31_3
732
727
; X64-NEXT: .LBB31_1:
733
728
; X64-NEXT: vmovdqa %xmm0, %xmm2
734
- ; X64-NEXT: vmovdqa %xmm1, %xmm3
729
+ ; X64-NEXT: vmovdqa %xmm1, %xmm0
735
730
; X64-NEXT: .LBB31_3:
736
- ; X64-NEXT: vmaxsd %xmm2, %xmm3 , %xmm2
737
- ; X64-NEXT: vcmpunordsd %xmm1 , %xmm0, %xmm0
738
- ; X64-NEXT: vblendvpd %xmm0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %xmm2 , %xmm0
731
+ ; X64-NEXT: vmaxsd %xmm2, %xmm0 , %xmm1
732
+ ; X64-NEXT: vcmpunordsd %xmm0 , %xmm0, %xmm2
733
+ ; X64-NEXT: vblendvpd %xmm2, %xmm0 , %xmm1 , %xmm0
739
734
; X64-NEXT: vzeroupper
740
735
; X64-NEXT: retq
741
736
;
@@ -747,19 +742,18 @@ define double @fmaximum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
747
742
; X86-NEXT: je .LBB31_1
748
743
; X86-NEXT: # %bb.2:
749
744
; X86-NEXT: vmovdqa %xmm1, %xmm2
750
- ; X86-NEXT: vmovdqa %xmm0, %xmm3
751
745
; X86-NEXT: jmp .LBB31_3
752
746
; X86-NEXT: .LBB31_1:
753
747
; X86-NEXT: vmovdqa %xmm0, %xmm2
754
- ; X86-NEXT: vmovdqa %xmm1, %xmm3
748
+ ; X86-NEXT: vmovdqa %xmm1, %xmm0
755
749
; X86-NEXT: .LBB31_3:
756
750
; X86-NEXT: pushl %ebp
757
751
; X86-NEXT: movl %esp, %ebp
758
752
; X86-NEXT: andl $-8, %esp
759
753
; X86-NEXT: subl $8, %esp
760
- ; X86-NEXT: vmaxsd %xmm2, %xmm3 , %xmm2
761
- ; X86-NEXT: vcmpunordsd %xmm1 , %xmm0, %xmm0
762
- ; X86-NEXT: vblendvpd %xmm0, {{\.?LCPI[0-9]+_[0-9]+}} , %xmm2 , %xmm0
754
+ ; X86-NEXT: vmaxsd %xmm2, %xmm0 , %xmm1
755
+ ; X86-NEXT: vcmpunordsd %xmm0 , %xmm0, %xmm2
756
+ ; X86-NEXT: vblendvpd %xmm2, %xmm0 , %xmm1 , %xmm0
763
757
; X86-NEXT: vmovlpd %xmm0, (%esp)
764
758
; X86-NEXT: fldl (%esp)
765
759
; X86-NEXT: movl %ebp, %esp
@@ -779,16 +773,14 @@ define float @fminimum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
779
773
; X64-NEXT: je .LBB32_1
780
774
; X64-NEXT: # %bb.2:
781
775
; X64-NEXT: vmovdqa %xmm1, %xmm2
782
- ; X64-NEXT: vmovdqa %xmm0, %xmm3
783
776
; X64-NEXT: jmp .LBB32_3
784
777
; X64-NEXT: .LBB32_1:
785
778
; X64-NEXT: vmovdqa %xmm0, %xmm2
786
- ; X64-NEXT: vmovdqa %xmm1, %xmm3
779
+ ; X64-NEXT: vmovdqa %xmm1, %xmm0
787
780
; X64-NEXT: .LBB32_3:
788
- ; X64-NEXT: vminss %xmm2, %xmm3, %xmm2
789
- ; X64-NEXT: vcmpunordss %xmm1, %xmm0, %xmm0
790
- ; X64-NEXT: vbroadcastss {{.*#+}} xmm1 = [NaN,NaN,NaN,NaN]
791
- ; X64-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
781
+ ; X64-NEXT: vminss %xmm2, %xmm0, %xmm1
782
+ ; X64-NEXT: vcmpunordss %xmm0, %xmm0, %xmm2
783
+ ; X64-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
792
784
; X64-NEXT: retq
793
785
;
794
786
; X86-LABEL: fminimum_v4f32:
@@ -798,17 +790,15 @@ define float @fminimum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
798
790
; X86-NEXT: je .LBB32_1
799
791
; X86-NEXT: # %bb.2:
800
792
; X86-NEXT: vmovdqa %xmm1, %xmm2
801
- ; X86-NEXT: vmovdqa %xmm0, %xmm3
802
793
; X86-NEXT: jmp .LBB32_3
803
794
; X86-NEXT: .LBB32_1:
804
795
; X86-NEXT: vmovdqa %xmm0, %xmm2
805
- ; X86-NEXT: vmovdqa %xmm1, %xmm3
796
+ ; X86-NEXT: vmovdqa %xmm1, %xmm0
806
797
; X86-NEXT: .LBB32_3:
807
798
; X86-NEXT: pushl %eax
808
- ; X86-NEXT: vminss %xmm2, %xmm3, %xmm2
809
- ; X86-NEXT: vcmpunordss %xmm1, %xmm0, %xmm0
810
- ; X86-NEXT: vbroadcastss {{.*#+}} xmm1 = [NaN,NaN,NaN,NaN]
811
- ; X86-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
799
+ ; X86-NEXT: vminss %xmm2, %xmm0, %xmm1
800
+ ; X86-NEXT: vcmpunordss %xmm0, %xmm0, %xmm2
801
+ ; X86-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
812
802
; X86-NEXT: vmovss %xmm0, (%esp)
813
803
; X86-NEXT: flds (%esp)
814
804
; X86-NEXT: popl %eax
@@ -827,15 +817,14 @@ define double @fminimum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
827
817
; X64-NEXT: je .LBB33_1
828
818
; X64-NEXT: # %bb.2:
829
819
; X64-NEXT: vmovdqa %xmm1, %xmm2
830
- ; X64-NEXT: vmovdqa %xmm0, %xmm3
831
820
; X64-NEXT: jmp .LBB33_3
832
821
; X64-NEXT: .LBB33_1:
833
822
; X64-NEXT: vmovdqa %xmm0, %xmm2
834
- ; X64-NEXT: vmovdqa %xmm1, %xmm3
823
+ ; X64-NEXT: vmovdqa %xmm1, %xmm0
835
824
; X64-NEXT: .LBB33_3:
836
- ; X64-NEXT: vminsd %xmm2, %xmm3 , %xmm2
837
- ; X64-NEXT: vcmpunordsd %xmm1 , %xmm0, %xmm0
838
- ; X64-NEXT: vblendvpd %xmm0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %xmm2 , %xmm0
825
+ ; X64-NEXT: vminsd %xmm2, %xmm0 , %xmm1
826
+ ; X64-NEXT: vcmpunordsd %xmm0 , %xmm0, %xmm2
827
+ ; X64-NEXT: vblendvpd %xmm2, %xmm0 , %xmm1 , %xmm0
839
828
; X64-NEXT: vzeroupper
840
829
; X64-NEXT: retq
841
830
;
@@ -848,19 +837,18 @@ define double @fminimum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
848
837
; X86-NEXT: je .LBB33_1
849
838
; X86-NEXT: # %bb.2:
850
839
; X86-NEXT: vmovdqa %xmm1, %xmm2
851
- ; X86-NEXT: vmovdqa %xmm0, %xmm3
852
840
; X86-NEXT: jmp .LBB33_3
853
841
; X86-NEXT: .LBB33_1:
854
842
; X86-NEXT: vmovdqa %xmm0, %xmm2
855
- ; X86-NEXT: vmovdqa %xmm1, %xmm3
843
+ ; X86-NEXT: vmovdqa %xmm1, %xmm0
856
844
; X86-NEXT: .LBB33_3:
857
845
; X86-NEXT: pushl %ebp
858
846
; X86-NEXT: movl %esp, %ebp
859
847
; X86-NEXT: andl $-8, %esp
860
848
; X86-NEXT: subl $8, %esp
861
- ; X86-NEXT: vminsd %xmm2, %xmm3 , %xmm2
862
- ; X86-NEXT: vcmpunordsd %xmm1 , %xmm0, %xmm0
863
- ; X86-NEXT: vblendvpd %xmm0, {{\.?LCPI[0-9]+_[0-9]+}} , %xmm2 , %xmm0
849
+ ; X86-NEXT: vminsd %xmm2, %xmm0 , %xmm1
850
+ ; X86-NEXT: vcmpunordsd %xmm0 , %xmm0, %xmm2
851
+ ; X86-NEXT: vblendvpd %xmm2, %xmm0 , %xmm1 , %xmm0
864
852
; X86-NEXT: vmovlpd %xmm0, (%esp)
865
853
; X86-NEXT: fldl (%esp)
866
854
; X86-NEXT: movl %ebp, %esp
0 commit comments