@@ -479,9 +479,8 @@ define i64 @fcvt_l_bf16_sat(bfloat %a) nounwind {
479
479
; RV32IZFBFMIN-NEXT: feq.s a2, fs0, fs0
480
480
; RV32IZFBFMIN-NEXT: neg a2, a2
481
481
; RV32IZFBFMIN-NEXT: lui a4, 524288
482
- ; RV32IZFBFMIN-NEXT: li a5, 1
483
482
; RV32IZFBFMIN-NEXT: lui a3, 524288
484
- ; RV32IZFBFMIN-NEXT: bne s2, a5 , .LBB10_2
483
+ ; RV32IZFBFMIN-NEXT: beqz s2, .LBB10_2
485
484
; RV32IZFBFMIN-NEXT: # %bb.1: # %start
486
485
; RV32IZFBFMIN-NEXT: mv a3, a1
487
486
; RV32IZFBFMIN-NEXT: .LBB10_2: # %start
@@ -525,9 +524,8 @@ define i64 @fcvt_l_bf16_sat(bfloat %a) nounwind {
525
524
; R32IDZFBFMIN-NEXT: feq.s a2, fs0, fs0
526
525
; R32IDZFBFMIN-NEXT: neg a2, a2
527
526
; R32IDZFBFMIN-NEXT: lui a4, 524288
528
- ; R32IDZFBFMIN-NEXT: li a5, 1
529
527
; R32IDZFBFMIN-NEXT: lui a3, 524288
530
- ; R32IDZFBFMIN-NEXT: bne s2, a5 , .LBB10_2
528
+ ; R32IDZFBFMIN-NEXT: beqz s2, .LBB10_2
531
529
; R32IDZFBFMIN-NEXT: # %bb.1: # %start
532
530
; R32IDZFBFMIN-NEXT: mv a3, a1
533
531
; R32IDZFBFMIN-NEXT: .LBB10_2: # %start
@@ -548,50 +546,43 @@ define i64 @fcvt_l_bf16_sat(bfloat %a) nounwind {
548
546
;
549
547
; RV32ID-LABEL: fcvt_l_bf16_sat:
550
548
; RV32ID: # %bb.0: # %start
551
- ; RV32ID-NEXT: addi sp, sp, -32
552
- ; RV32ID-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
553
- ; RV32ID-NEXT: sw s0, 24(sp) # 4-byte Folded Spill
554
- ; RV32ID-NEXT: sw s1, 20(sp) # 4-byte Folded Spill
555
- ; RV32ID-NEXT: sw s2, 16(sp) # 4-byte Folded Spill
556
- ; RV32ID-NEXT: sw s3, 12(sp) # 4-byte Folded Spill
549
+ ; RV32ID-NEXT: addi sp, sp, -16
550
+ ; RV32ID-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
551
+ ; RV32ID-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
557
552
; RV32ID-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill
558
- ; RV32ID-NEXT: lui a0, %hi(.LCPI10_0)
559
- ; RV32ID-NEXT: flw fa5, %lo(.LCPI10_0)(a0)
560
553
; RV32ID-NEXT: fmv.x.w a0, fa0
561
554
; RV32ID-NEXT: slli a0, a0, 16
562
555
; RV32ID-NEXT: fmv.w.x fs0, a0
563
- ; RV32ID-NEXT: flt.s s0, fa5, fs0
564
- ; RV32ID-NEXT: neg s1, s0
565
556
; RV32ID-NEXT: lui a0, 913408
566
557
; RV32ID-NEXT: fmv.w.x fa5, a0
567
- ; RV32ID-NEXT: fle.s s2, fa5, fs0
568
- ; RV32ID-NEXT: neg s3, s2
558
+ ; RV32ID-NEXT: fle.s s0, fa5, fs0
569
559
; RV32ID-NEXT: fmv.s fa0, fs0
570
560
; RV32ID-NEXT: call __fixsfdi
571
- ; RV32ID-NEXT: and a0, s3, a0
572
- ; RV32ID-NEXT: or a0, s1, a0
573
- ; RV32ID-NEXT: feq.s a2, fs0, fs0
574
- ; RV32ID-NEXT: neg a2, a2
575
561
; RV32ID-NEXT: lui a4, 524288
576
- ; RV32ID-NEXT: li a5, 1
577
- ; RV32ID-NEXT: lui a3, 524288
578
- ; RV32ID-NEXT: bne s2, a5, .LBB10_2
562
+ ; RV32ID-NEXT: lui a2, 524288
563
+ ; RV32ID-NEXT: beqz s0, .LBB10_2
579
564
; RV32ID-NEXT: # %bb.1: # %start
580
- ; RV32ID-NEXT: mv a3 , a1
565
+ ; RV32ID-NEXT: mv a2 , a1
581
566
; RV32ID-NEXT: .LBB10_2: # %start
582
- ; RV32ID-NEXT: and a0, a2, a0
583
- ; RV32ID-NEXT: beqz s0, .LBB10_4
567
+ ; RV32ID-NEXT: lui a1, %hi(.LCPI10_0)
568
+ ; RV32ID-NEXT: flw fa5, %lo(.LCPI10_0)(a1)
569
+ ; RV32ID-NEXT: flt.s a3, fa5, fs0
570
+ ; RV32ID-NEXT: beqz a3, .LBB10_4
584
571
; RV32ID-NEXT: # %bb.3:
585
- ; RV32ID-NEXT: addi a3 , a4, -1
572
+ ; RV32ID-NEXT: addi a2 , a4, -1
586
573
; RV32ID-NEXT: .LBB10_4: # %start
587
- ; RV32ID-NEXT: and a1, a2, a3
588
- ; RV32ID-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
589
- ; RV32ID-NEXT: lw s0, 24(sp) # 4-byte Folded Reload
590
- ; RV32ID-NEXT: lw s1, 20(sp) # 4-byte Folded Reload
591
- ; RV32ID-NEXT: lw s2, 16(sp) # 4-byte Folded Reload
592
- ; RV32ID-NEXT: lw s3, 12(sp) # 4-byte Folded Reload
574
+ ; RV32ID-NEXT: feq.s a1, fs0, fs0
575
+ ; RV32ID-NEXT: neg a4, a1
576
+ ; RV32ID-NEXT: and a1, a4, a2
577
+ ; RV32ID-NEXT: neg a2, a3
578
+ ; RV32ID-NEXT: neg a3, s0
579
+ ; RV32ID-NEXT: and a0, a3, a0
580
+ ; RV32ID-NEXT: or a0, a2, a0
581
+ ; RV32ID-NEXT: and a0, a4, a0
582
+ ; RV32ID-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
583
+ ; RV32ID-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
593
584
; RV32ID-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload
594
- ; RV32ID-NEXT: addi sp, sp, 32
585
+ ; RV32ID-NEXT: addi sp, sp, 16
595
586
; RV32ID-NEXT: ret
596
587
;
597
588
; CHECK64ZFBFMIN-LABEL: fcvt_l_bf16_sat:
@@ -675,8 +666,7 @@ define i64 @fcvt_lu_bf16_sat(bfloat %a) nounwind {
675
666
; CHECK32ZFBFMIN-NEXT: neg s0, a0
676
667
; CHECK32ZFBFMIN-NEXT: fmv.w.x fa5, zero
677
668
; CHECK32ZFBFMIN-NEXT: fle.s a0, fa5, fa0
678
- ; CHECK32ZFBFMIN-NEXT: xori a0, a0, 1
679
- ; CHECK32ZFBFMIN-NEXT: addi s1, a0, -1
669
+ ; CHECK32ZFBFMIN-NEXT: neg s1, a0
680
670
; CHECK32ZFBFMIN-NEXT: call __fixunssfdi
681
671
; CHECK32ZFBFMIN-NEXT: and a0, s1, a0
682
672
; CHECK32ZFBFMIN-NEXT: or a0, s0, a0
@@ -703,8 +693,7 @@ define i64 @fcvt_lu_bf16_sat(bfloat %a) nounwind {
703
693
; RV32ID-NEXT: neg s0, a0
704
694
; RV32ID-NEXT: fmv.w.x fa5, zero
705
695
; RV32ID-NEXT: fle.s a0, fa5, fa0
706
- ; RV32ID-NEXT: xori a0, a0, 1
707
- ; RV32ID-NEXT: addi s1, a0, -1
696
+ ; RV32ID-NEXT: neg s1, a0
708
697
; RV32ID-NEXT: call __fixunssfdi
709
698
; RV32ID-NEXT: and a0, s1, a0
710
699
; RV32ID-NEXT: or a0, s0, a0
0 commit comments