@@ -683,47 +683,41 @@ define i64 @fcvt_l_d(double %a) nounwind {
683
683
define i64 @fcvt_l_d_sat (double %a ) nounwind {
684
684
; RV32IFD-LABEL: fcvt_l_d_sat:
685
685
; RV32IFD: # %bb.0: # %start
686
- ; RV32IFD-NEXT: addi sp, sp, -32
687
- ; RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
688
- ; RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill
689
- ; RV32IFD-NEXT: sw s1, 20(sp) # 4-byte Folded Spill
690
- ; RV32IFD-NEXT: sw s2, 16(sp) # 4-byte Folded Spill
691
- ; RV32IFD-NEXT: sw s3, 12(sp) # 4-byte Folded Spill
686
+ ; RV32IFD-NEXT: addi sp, sp, -16
687
+ ; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
688
+ ; RV32IFD-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
692
689
; RV32IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill
693
690
; RV32IFD-NEXT: lui a0, %hi(.LCPI12_0)
694
691
; RV32IFD-NEXT: fld fa5, %lo(.LCPI12_0)(a0)
695
- ; RV32IFD-NEXT: lui a0, %hi(.LCPI12_1)
696
- ; RV32IFD-NEXT: fld fa4, %lo(.LCPI12_1)(a0)
697
692
; RV32IFD-NEXT: fmv.d fs0, fa0
698
- ; RV32IFD-NEXT: flt.d s0, fa5, fa0
699
- ; RV32IFD-NEXT: neg s1, s0
700
- ; RV32IFD-NEXT: fle.d s2, fa4, fa0
701
- ; RV32IFD-NEXT: neg s3, s2
693
+ ; RV32IFD-NEXT: fle.d s0, fa5, fa0
702
694
; RV32IFD-NEXT: call __fixdfdi
703
- ; RV32IFD-NEXT: and a0, s3, a0
704
- ; RV32IFD-NEXT: or a0, s1, a0
705
- ; RV32IFD-NEXT: feq.d a2, fs0, fs0
706
- ; RV32IFD-NEXT: neg a2, a2
707
- ; RV32IFD-NEXT: lui a4, 524288
708
- ; RV32IFD-NEXT: li a5, 1
709
695
; RV32IFD-NEXT: lui a3, 524288
710
- ; RV32IFD-NEXT: bne s2, a5, .LBB12_2
696
+ ; RV32IFD-NEXT: li a4, 1
697
+ ; RV32IFD-NEXT: lui a2, 524288
698
+ ; RV32IFD-NEXT: bne s0, a4, .LBB12_2
711
699
; RV32IFD-NEXT: # %bb.1: # %start
712
- ; RV32IFD-NEXT: mv a3 , a1
700
+ ; RV32IFD-NEXT: mv a2 , a1
713
701
; RV32IFD-NEXT: .LBB12_2: # %start
714
- ; RV32IFD-NEXT: and a0, a2, a0
715
- ; RV32IFD-NEXT: beqz s0, .LBB12_4
702
+ ; RV32IFD-NEXT: lui a1, %hi(.LCPI12_1)
703
+ ; RV32IFD-NEXT: fld fa5, %lo(.LCPI12_1)(a1)
704
+ ; RV32IFD-NEXT: flt.d a4, fa5, fs0
705
+ ; RV32IFD-NEXT: beqz a4, .LBB12_4
716
706
; RV32IFD-NEXT: # %bb.3:
717
- ; RV32IFD-NEXT: addi a3, a4 , -1
707
+ ; RV32IFD-NEXT: addi a2, a3 , -1
718
708
; RV32IFD-NEXT: .LBB12_4: # %start
719
- ; RV32IFD-NEXT: and a1, a2, a3
720
- ; RV32IFD-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
721
- ; RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload
722
- ; RV32IFD-NEXT: lw s1, 20(sp) # 4-byte Folded Reload
723
- ; RV32IFD-NEXT: lw s2, 16(sp) # 4-byte Folded Reload
724
- ; RV32IFD-NEXT: lw s3, 12(sp) # 4-byte Folded Reload
709
+ ; RV32IFD-NEXT: feq.d a1, fs0, fs0
710
+ ; RV32IFD-NEXT: neg a3, a1
711
+ ; RV32IFD-NEXT: and a1, a3, a2
712
+ ; RV32IFD-NEXT: neg a2, a4
713
+ ; RV32IFD-NEXT: neg a4, s0
714
+ ; RV32IFD-NEXT: and a0, a4, a0
715
+ ; RV32IFD-NEXT: or a0, a2, a0
716
+ ; RV32IFD-NEXT: and a0, a3, a0
717
+ ; RV32IFD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
718
+ ; RV32IFD-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
725
719
; RV32IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload
726
- ; RV32IFD-NEXT: addi sp, sp, 32
720
+ ; RV32IFD-NEXT: addi sp, sp, 16
727
721
; RV32IFD-NEXT: ret
728
722
;
729
723
; RV64IFD-LABEL: fcvt_l_d_sat:
@@ -737,48 +731,44 @@ define i64 @fcvt_l_d_sat(double %a) nounwind {
737
731
;
738
732
; RV32IZFINXZDINX-LABEL: fcvt_l_d_sat:
739
733
; RV32IZFINXZDINX: # %bb.0: # %start
740
- ; RV32IZFINXZDINX-NEXT: addi sp, sp, -32
741
- ; RV32IZFINXZDINX-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
742
- ; RV32IZFINXZDINX-NEXT: sw s0, 24(sp) # 4-byte Folded Spill
743
- ; RV32IZFINXZDINX-NEXT: sw s1, 20(sp) # 4-byte Folded Spill
744
- ; RV32IZFINXZDINX-NEXT: sw s2, 16(sp) # 4-byte Folded Spill
745
- ; RV32IZFINXZDINX-NEXT: sw s3, 12(sp) # 4-byte Folded Spill
746
- ; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI12_0)
747
- ; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI12_0+4)(a2)
748
- ; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI12_0)(a2)
734
+ ; RV32IZFINXZDINX-NEXT: addi sp, sp, -16
735
+ ; RV32IZFINXZDINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
736
+ ; RV32IZFINXZDINX-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
737
+ ; RV32IZFINXZDINX-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
749
738
; RV32IZFINXZDINX-NEXT: mv s1, a1
750
739
; RV32IZFINXZDINX-NEXT: mv s0, a0
751
- ; RV32IZFINXZDINX-NEXT: fle.d s2, a2, s0
752
- ; RV32IZFINXZDINX-NEXT: neg s3, s2
753
740
; RV32IZFINXZDINX-NEXT: call __fixdfdi
754
- ; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI12_1)
755
- ; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI12_1+4)(a2)
756
- ; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI12_1)(a2)
757
- ; RV32IZFINXZDINX-NEXT: and a0, s3, a0
758
- ; RV32IZFINXZDINX-NEXT: flt.d a3, a2, s0
759
- ; RV32IZFINXZDINX-NEXT: neg a2, a3
760
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
761
- ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
762
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
741
+ ; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI12_0)
742
+ ; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI12_0+4)(a2)
743
+ ; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI12_0)(a2)
744
+ ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
763
745
; RV32IZFINXZDINX-NEXT: lui a5, 524288
764
- ; RV32IZFINXZDINX-NEXT: li a6 , 1
765
- ; RV32IZFINXZDINX-NEXT: lui a4 , 524288
766
- ; RV32IZFINXZDINX-NEXT: bne s2, a6 , .LBB12_2
746
+ ; RV32IZFINXZDINX-NEXT: li a4 , 1
747
+ ; RV32IZFINXZDINX-NEXT: lui a3 , 524288
748
+ ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB12_2
767
749
; RV32IZFINXZDINX-NEXT: # %bb.1: # %start
768
- ; RV32IZFINXZDINX-NEXT: mv a4 , a1
750
+ ; RV32IZFINXZDINX-NEXT: mv a3 , a1
769
751
; RV32IZFINXZDINX-NEXT: .LBB12_2: # %start
770
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
771
- ; RV32IZFINXZDINX-NEXT: beqz a3, .LBB12_4
752
+ ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI12_1)
753
+ ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI12_1)(a1)
754
+ ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI12_1+4)(a1)
755
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
756
+ ; RV32IZFINXZDINX-NEXT: beqz a4, .LBB12_4
772
757
; RV32IZFINXZDINX-NEXT: # %bb.3:
773
- ; RV32IZFINXZDINX-NEXT: addi a4 , a5, -1
758
+ ; RV32IZFINXZDINX-NEXT: addi a3 , a5, -1
774
759
; RV32IZFINXZDINX-NEXT: .LBB12_4: # %start
775
- ; RV32IZFINXZDINX-NEXT: and a1, a2, a4
776
- ; RV32IZFINXZDINX-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
777
- ; RV32IZFINXZDINX-NEXT: lw s0, 24(sp) # 4-byte Folded Reload
778
- ; RV32IZFINXZDINX-NEXT: lw s1, 20(sp) # 4-byte Folded Reload
779
- ; RV32IZFINXZDINX-NEXT: lw s2, 16(sp) # 4-byte Folded Reload
780
- ; RV32IZFINXZDINX-NEXT: lw s3, 12(sp) # 4-byte Folded Reload
781
- ; RV32IZFINXZDINX-NEXT: addi sp, sp, 32
760
+ ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
761
+ ; RV32IZFINXZDINX-NEXT: neg a5, a1
762
+ ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
763
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
764
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
765
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
766
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
767
+ ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
768
+ ; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
769
+ ; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
770
+ ; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
771
+ ; RV32IZFINXZDINX-NEXT: addi sp, sp, 16
782
772
; RV32IZFINXZDINX-NEXT: ret
783
773
;
784
774
; RV64IZFINXZDINX-LABEL: fcvt_l_d_sat:
0 commit comments