@@ -677,35 +677,35 @@ define float @fmaximum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
677
677
; X64: # %bb.0:
678
678
; X64-NEXT: vmovd %xmm0, %eax
679
679
; X64-NEXT: testl %eax, %eax
680
- ; X64-NEXT: je .LBB30_1
680
+ ; X64-NEXT: js .LBB30_1
681
681
; X64-NEXT: # %bb.2:
682
- ; X64-NEXT: vmovdqa %xmm1 , %xmm2
682
+ ; X64-NEXT: vmovdqa %xmm0 , %xmm2
683
683
; X64-NEXT: jmp .LBB30_3
684
684
; X64-NEXT: .LBB30_1:
685
- ; X64-NEXT: vmovdqa %xmm0 , %xmm2
686
- ; X64-NEXT: vmovdqa %xmm1 , %xmm0
685
+ ; X64-NEXT: vmovdqa %xmm1 , %xmm2
686
+ ; X64-NEXT: vmovdqa %xmm0 , %xmm1
687
687
; X64-NEXT: .LBB30_3:
688
- ; X64-NEXT: vmaxss %xmm2, %xmm0 , %xmm1
689
- ; X64-NEXT: vcmpunordss %xmm0 , %xmm0 , %xmm2
690
- ; X64-NEXT: vblendvps %xmm2, %xmm0 , %xmm1 , %xmm0
688
+ ; X64-NEXT: vmaxss %xmm2, %xmm1 , %xmm0
689
+ ; X64-NEXT: vcmpunordss %xmm1 , %xmm1 , %xmm2
690
+ ; X64-NEXT: vblendvps %xmm2, %xmm1 , %xmm0 , %xmm0
691
691
; X64-NEXT: retq
692
692
;
693
693
; X86-LABEL: fmaximum_v4f32:
694
694
; X86: # %bb.0:
695
695
; X86-NEXT: vmovd %xmm0, %eax
696
696
; X86-NEXT: testl %eax, %eax
697
- ; X86-NEXT: je .LBB30_1
697
+ ; X86-NEXT: js .LBB30_1
698
698
; X86-NEXT: # %bb.2:
699
- ; X86-NEXT: vmovdqa %xmm1 , %xmm2
699
+ ; X86-NEXT: vmovdqa %xmm0 , %xmm2
700
700
; X86-NEXT: jmp .LBB30_3
701
701
; X86-NEXT: .LBB30_1:
702
- ; X86-NEXT: vmovdqa %xmm0 , %xmm2
703
- ; X86-NEXT: vmovdqa %xmm1 , %xmm0
702
+ ; X86-NEXT: vmovdqa %xmm1 , %xmm2
703
+ ; X86-NEXT: vmovdqa %xmm0 , %xmm1
704
704
; X86-NEXT: .LBB30_3:
705
705
; X86-NEXT: pushl %eax
706
- ; X86-NEXT: vmaxss %xmm2, %xmm0 , %xmm1
707
- ; X86-NEXT: vcmpunordss %xmm0 , %xmm0 , %xmm2
708
- ; X86-NEXT: vblendvps %xmm2, %xmm0 , %xmm1 , %xmm0
706
+ ; X86-NEXT: vmaxss %xmm2, %xmm1 , %xmm0
707
+ ; X86-NEXT: vcmpunordss %xmm1 , %xmm1 , %xmm2
708
+ ; X86-NEXT: vblendvps %xmm2, %xmm1 , %xmm0 , %xmm0
709
709
; X86-NEXT: vmovss %xmm0, (%esp)
710
710
; X86-NEXT: flds (%esp)
711
711
; X86-NEXT: popl %eax
@@ -720,40 +720,39 @@ define double @fmaximum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
720
720
; X64: # %bb.0:
721
721
; X64-NEXT: vmovq %xmm0, %rax
722
722
; X64-NEXT: testq %rax, %rax
723
- ; X64-NEXT: je .LBB31_1
723
+ ; X64-NEXT: js .LBB31_1
724
724
; X64-NEXT: # %bb.2:
725
- ; X64-NEXT: vmovdqa %xmm1 , %xmm2
725
+ ; X64-NEXT: vmovdqa %xmm0 , %xmm2
726
726
; X64-NEXT: jmp .LBB31_3
727
727
; X64-NEXT: .LBB31_1:
728
- ; X64-NEXT: vmovdqa %xmm0 , %xmm2
729
- ; X64-NEXT: vmovdqa %xmm1 , %xmm0
728
+ ; X64-NEXT: vmovdqa %xmm1 , %xmm2
729
+ ; X64-NEXT: vmovdqa %xmm0 , %xmm1
730
730
; X64-NEXT: .LBB31_3:
731
- ; X64-NEXT: vmaxsd %xmm2, %xmm0 , %xmm1
732
- ; X64-NEXT: vcmpunordsd %xmm0 , %xmm0 , %xmm2
733
- ; X64-NEXT: vblendvpd %xmm2, %xmm0 , %xmm1 , %xmm0
731
+ ; X64-NEXT: vmaxsd %xmm2, %xmm1 , %xmm0
732
+ ; X64-NEXT: vcmpunordsd %xmm1 , %xmm1 , %xmm2
733
+ ; X64-NEXT: vblendvpd %xmm2, %xmm1 , %xmm0 , %xmm0
734
734
; X64-NEXT: vzeroupper
735
735
; X64-NEXT: retq
736
736
;
737
737
; X86-LABEL: fmaximum_v4f64:
738
738
; X86: # %bb.0:
739
- ; X86-NEXT: vpextrd $1, %xmm0, %eax
740
- ; X86-NEXT: vmovd %xmm0, %ecx
741
- ; X86-NEXT: orl %eax, %ecx
742
- ; X86-NEXT: je .LBB31_1
739
+ ; X86-NEXT: vextractps $1, %xmm0, %eax
740
+ ; X86-NEXT: testl %eax, %eax
741
+ ; X86-NEXT: js .LBB31_1
743
742
; X86-NEXT: # %bb.2:
744
- ; X86-NEXT: vmovdqa %xmm1 , %xmm2
743
+ ; X86-NEXT: vmovapd %xmm0 , %xmm2
745
744
; X86-NEXT: jmp .LBB31_3
746
745
; X86-NEXT: .LBB31_1:
747
- ; X86-NEXT: vmovdqa %xmm0 , %xmm2
748
- ; X86-NEXT: vmovdqa %xmm1 , %xmm0
746
+ ; X86-NEXT: vmovapd %xmm1 , %xmm2
747
+ ; X86-NEXT: vmovapd %xmm0 , %xmm1
749
748
; X86-NEXT: .LBB31_3:
750
749
; X86-NEXT: pushl %ebp
751
750
; X86-NEXT: movl %esp, %ebp
752
751
; X86-NEXT: andl $-8, %esp
753
752
; X86-NEXT: subl $8, %esp
754
- ; X86-NEXT: vmaxsd %xmm2, %xmm0 , %xmm1
755
- ; X86-NEXT: vcmpunordsd %xmm0 , %xmm0 , %xmm2
756
- ; X86-NEXT: vblendvpd %xmm2, %xmm0 , %xmm1 , %xmm0
753
+ ; X86-NEXT: vmaxsd %xmm2, %xmm1 , %xmm0
754
+ ; X86-NEXT: vcmpunordsd %xmm1 , %xmm1 , %xmm2
755
+ ; X86-NEXT: vblendvpd %xmm2, %xmm1 , %xmm0 , %xmm0
757
756
; X86-NEXT: vmovlpd %xmm0, (%esp)
758
757
; X86-NEXT: fldl (%esp)
759
758
; X86-NEXT: movl %ebp, %esp
@@ -769,8 +768,8 @@ define float @fminimum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
769
768
; X64-LABEL: fminimum_v4f32:
770
769
; X64: # %bb.0:
771
770
; X64-NEXT: vmovd %xmm0, %eax
772
- ; X64-NEXT: cmpl $-2147483648 , %eax # imm = 0x80000000
773
- ; X64-NEXT: je .LBB32_1
771
+ ; X64-NEXT: testl %eax , %eax
772
+ ; X64-NEXT: js .LBB32_1
774
773
; X64-NEXT: # %bb.2:
775
774
; X64-NEXT: vmovdqa %xmm1, %xmm2
776
775
; X64-NEXT: jmp .LBB32_3
@@ -786,8 +785,8 @@ define float @fminimum_v4f32(<4 x float> %x, <4 x float> %y) nounwind {
786
785
; X86-LABEL: fminimum_v4f32:
787
786
; X86: # %bb.0:
788
787
; X86-NEXT: vmovd %xmm0, %eax
789
- ; X86-NEXT: cmpl $-2147483648 , %eax # imm = 0x80000000
790
- ; X86-NEXT: je .LBB32_1
788
+ ; X86-NEXT: testl %eax , %eax
789
+ ; X86-NEXT: js .LBB32_1
791
790
; X86-NEXT: # %bb.2:
792
791
; X86-NEXT: vmovdqa %xmm1, %xmm2
793
792
; X86-NEXT: jmp .LBB32_3
@@ -812,9 +811,8 @@ define double @fminimum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
812
811
; X64-LABEL: fminimum_v4f64:
813
812
; X64: # %bb.0:
814
813
; X64-NEXT: vmovq %xmm0, %rax
815
- ; X64-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000
816
- ; X64-NEXT: cmpq %rcx, %rax
817
- ; X64-NEXT: je .LBB33_1
814
+ ; X64-NEXT: testq %rax, %rax
815
+ ; X64-NEXT: js .LBB33_1
818
816
; X64-NEXT: # %bb.2:
819
817
; X64-NEXT: vmovdqa %xmm1, %xmm2
820
818
; X64-NEXT: jmp .LBB33_3
@@ -830,17 +828,15 @@ define double @fminimum_v4f64(<4 x double> %x, <4 x double> %y) nounwind {
830
828
;
831
829
; X86-LABEL: fminimum_v4f64:
832
830
; X86: # %bb.0:
833
- ; X86-NEXT: vmovd %xmm0, %eax
834
- ; X86-NEXT: vpextrd $1, %xmm0, %ecx
835
- ; X86-NEXT: addl $-2147483648, %ecx # imm = 0x80000000
836
- ; X86-NEXT: orl %eax, %ecx
837
- ; X86-NEXT: je .LBB33_1
831
+ ; X86-NEXT: vextractps $1, %xmm0, %eax
832
+ ; X86-NEXT: testl %eax, %eax
833
+ ; X86-NEXT: js .LBB33_1
838
834
; X86-NEXT: # %bb.2:
839
- ; X86-NEXT: vmovdqa %xmm1, %xmm2
835
+ ; X86-NEXT: vmovapd %xmm1, %xmm2
840
836
; X86-NEXT: jmp .LBB33_3
841
837
; X86-NEXT: .LBB33_1:
842
- ; X86-NEXT: vmovdqa %xmm0, %xmm2
843
- ; X86-NEXT: vmovdqa %xmm1, %xmm0
838
+ ; X86-NEXT: vmovapd %xmm0, %xmm2
839
+ ; X86-NEXT: vmovapd %xmm1, %xmm0
844
840
; X86-NEXT: .LBB33_3:
845
841
; X86-NEXT: pushl %ebp
846
842
; X86-NEXT: movl %esp, %ebp
0 commit comments