@@ -51,13 +51,14 @@ define i16 @fcvt_si_bf16_sat(bfloat %a) nounwind {
51
51
; CHECK32ZFBFMIN-LABEL: fcvt_si_bf16_sat:
52
52
; CHECK32ZFBFMIN: # %bb.0: # %start
53
53
; CHECK32ZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0
54
- ; CHECK32ZFBFMIN-NEXT: lui a0, %hi(.LCPI1_0)
55
- ; CHECK32ZFBFMIN-NEXT: feq.s a1, fa5, fa5
56
- ; CHECK32ZFBFMIN-NEXT: flw fa4, %lo(.LCPI1_0)(a0)
57
54
; CHECK32ZFBFMIN-NEXT: lui a0, 815104
58
- ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa3, a0
59
- ; CHECK32ZFBFMIN-NEXT: fmax.s fa5, fa5, fa3
60
- ; CHECK32ZFBFMIN-NEXT: neg a0, a1
55
+ ; CHECK32ZFBFMIN-NEXT: lui a1, 290816
56
+ ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa4, a0
57
+ ; CHECK32ZFBFMIN-NEXT: feq.s a0, fa5, fa5
58
+ ; CHECK32ZFBFMIN-NEXT: addi a1, a1, -512
59
+ ; CHECK32ZFBFMIN-NEXT: neg a0, a0
60
+ ; CHECK32ZFBFMIN-NEXT: fmax.s fa5, fa5, fa4
61
+ ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa4, a1
61
62
; CHECK32ZFBFMIN-NEXT: fmin.s fa5, fa5, fa4
62
63
; CHECK32ZFBFMIN-NEXT: fcvt.w.s a1, fa5, rtz
63
64
; CHECK32ZFBFMIN-NEXT: and a0, a0, a1
@@ -68,12 +69,13 @@ define i16 @fcvt_si_bf16_sat(bfloat %a) nounwind {
68
69
; RV32ID-NEXT: fmv.x.w a0, fa0
69
70
; RV32ID-NEXT: lui a1, 815104
70
71
; RV32ID-NEXT: fmv.w.x fa5, a1
71
- ; RV32ID-NEXT: lui a1, %hi(.LCPI1_0)
72
+ ; RV32ID-NEXT: lui a1, 290816
72
73
; RV32ID-NEXT: slli a0, a0, 16
73
- ; RV32ID-NEXT: flw fa4, %lo(.LCPI1_0)(a1)
74
- ; RV32ID-NEXT: fmv.w.x fa3, a0
75
- ; RV32ID-NEXT: feq.s a0, fa3, fa3
76
- ; RV32ID-NEXT: fmax.s fa5, fa3, fa5
74
+ ; RV32ID-NEXT: addi a1, a1, -512
75
+ ; RV32ID-NEXT: fmv.w.x fa4, a0
76
+ ; RV32ID-NEXT: feq.s a0, fa4, fa4
77
+ ; RV32ID-NEXT: fmax.s fa5, fa4, fa5
78
+ ; RV32ID-NEXT: fmv.w.x fa4, a1
77
79
; RV32ID-NEXT: neg a0, a0
78
80
; RV32ID-NEXT: fmin.s fa5, fa5, fa4
79
81
; RV32ID-NEXT: fcvt.w.s a1, fa5, rtz
@@ -83,13 +85,14 @@ define i16 @fcvt_si_bf16_sat(bfloat %a) nounwind {
83
85
; CHECK64ZFBFMIN-LABEL: fcvt_si_bf16_sat:
84
86
; CHECK64ZFBFMIN: # %bb.0: # %start
85
87
; CHECK64ZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0
86
- ; CHECK64ZFBFMIN-NEXT: lui a0, %hi(.LCPI1_0)
87
- ; CHECK64ZFBFMIN-NEXT: feq.s a1, fa5, fa5
88
- ; CHECK64ZFBFMIN-NEXT: flw fa4, %lo(.LCPI1_0)(a0)
89
88
; CHECK64ZFBFMIN-NEXT: lui a0, 815104
90
- ; CHECK64ZFBFMIN-NEXT: fmv.w.x fa3, a0
91
- ; CHECK64ZFBFMIN-NEXT: fmax.s fa5, fa5, fa3
92
- ; CHECK64ZFBFMIN-NEXT: neg a0, a1
89
+ ; CHECK64ZFBFMIN-NEXT: lui a1, 290816
90
+ ; CHECK64ZFBFMIN-NEXT: fmv.w.x fa4, a0
91
+ ; CHECK64ZFBFMIN-NEXT: feq.s a0, fa5, fa5
92
+ ; CHECK64ZFBFMIN-NEXT: addi a1, a1, -512
93
+ ; CHECK64ZFBFMIN-NEXT: neg a0, a0
94
+ ; CHECK64ZFBFMIN-NEXT: fmax.s fa5, fa5, fa4
95
+ ; CHECK64ZFBFMIN-NEXT: fmv.w.x fa4, a1
93
96
; CHECK64ZFBFMIN-NEXT: fmin.s fa5, fa5, fa4
94
97
; CHECK64ZFBFMIN-NEXT: fcvt.l.s a1, fa5, rtz
95
98
; CHECK64ZFBFMIN-NEXT: and a0, a0, a1
@@ -100,12 +103,13 @@ define i16 @fcvt_si_bf16_sat(bfloat %a) nounwind {
100
103
; RV64ID-NEXT: fmv.x.w a0, fa0
101
104
; RV64ID-NEXT: lui a1, 815104
102
105
; RV64ID-NEXT: fmv.w.x fa5, a1
103
- ; RV64ID-NEXT: lui a1, %hi(.LCPI1_0)
106
+ ; RV64ID-NEXT: lui a1, 290816
104
107
; RV64ID-NEXT: slli a0, a0, 16
105
- ; RV64ID-NEXT: flw fa4, %lo(.LCPI1_0)(a1)
106
- ; RV64ID-NEXT: fmv.w.x fa3, a0
107
- ; RV64ID-NEXT: feq.s a0, fa3, fa3
108
- ; RV64ID-NEXT: fmax.s fa5, fa3, fa5
108
+ ; RV64ID-NEXT: addi a1, a1, -512
109
+ ; RV64ID-NEXT: fmv.w.x fa4, a0
110
+ ; RV64ID-NEXT: feq.s a0, fa4, fa4
111
+ ; RV64ID-NEXT: fmax.s fa5, fa4, fa5
112
+ ; RV64ID-NEXT: fmv.w.x fa4, a1
109
113
; RV64ID-NEXT: neg a0, a0
110
114
; RV64ID-NEXT: fmin.s fa5, fa5, fa4
111
115
; RV64ID-NEXT: fcvt.l.s a1, fa5, rtz
@@ -152,49 +156,53 @@ define i16 @fcvt_ui_bf16(bfloat %a) nounwind {
152
156
define i16 @fcvt_ui_bf16_sat (bfloat %a ) nounwind {
153
157
; CHECK32ZFBFMIN-LABEL: fcvt_ui_bf16_sat:
154
158
; CHECK32ZFBFMIN: # %bb.0: # %start
155
- ; CHECK32ZFBFMIN-NEXT: lui a0, %hi(.LCPI3_0)
156
- ; CHECK32ZFBFMIN-NEXT: flw fa5, %lo(.LCPI3_0)(a0)
157
- ; CHECK32ZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0
158
- ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa3, zero
159
- ; CHECK32ZFBFMIN-NEXT: fmax.s fa4, fa4, fa3
160
- ; CHECK32ZFBFMIN-NEXT: fmin.s fa5, fa4, fa5
159
+ ; CHECK32ZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0
160
+ ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa4, zero
161
+ ; CHECK32ZFBFMIN-NEXT: lui a0, 292864
162
+ ; CHECK32ZFBFMIN-NEXT: fmax.s fa5, fa5, fa4
163
+ ; CHECK32ZFBFMIN-NEXT: addi a0, a0, -256
164
+ ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa4, a0
165
+ ; CHECK32ZFBFMIN-NEXT: fmin.s fa5, fa5, fa4
161
166
; CHECK32ZFBFMIN-NEXT: fcvt.wu.s a0, fa5, rtz
162
167
; CHECK32ZFBFMIN-NEXT: ret
163
168
;
164
169
; RV32ID-LABEL: fcvt_ui_bf16_sat:
165
170
; RV32ID: # %bb.0: # %start
166
- ; RV32ID-NEXT: lui a0, %hi(.LCPI3_0)
167
- ; RV32ID-NEXT: flw fa5, %lo(.LCPI3_0)(a0)
168
171
; RV32ID-NEXT: fmv.x.w a0, fa0
172
+ ; RV32ID-NEXT: fmv.w.x fa5, zero
169
173
; RV32ID-NEXT: slli a0, a0, 16
170
174
; RV32ID-NEXT: fmv.w.x fa4, a0
171
- ; RV32ID-NEXT: fmv.w.x fa3, zero
172
- ; RV32ID-NEXT: fmax.s fa4, fa4, fa3
173
- ; RV32ID-NEXT: fmin.s fa5, fa4, fa5
175
+ ; RV32ID-NEXT: lui a0, 292864
176
+ ; RV32ID-NEXT: addi a0, a0, -256
177
+ ; RV32ID-NEXT: fmax.s fa5, fa4, fa5
178
+ ; RV32ID-NEXT: fmv.w.x fa4, a0
179
+ ; RV32ID-NEXT: fmin.s fa5, fa5, fa4
174
180
; RV32ID-NEXT: fcvt.wu.s a0, fa5, rtz
175
181
; RV32ID-NEXT: ret
176
182
;
177
183
; CHECK64ZFBFMIN-LABEL: fcvt_ui_bf16_sat:
178
184
; CHECK64ZFBFMIN: # %bb.0: # %start
179
- ; CHECK64ZFBFMIN-NEXT: lui a0, %hi(.LCPI3_0)
180
- ; CHECK64ZFBFMIN-NEXT: flw fa5, %lo(.LCPI3_0)(a0)
181
- ; CHECK64ZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0
182
- ; CHECK64ZFBFMIN-NEXT: fmv.w.x fa3, zero
183
- ; CHECK64ZFBFMIN-NEXT: fmax.s fa4, fa4, fa3
184
- ; CHECK64ZFBFMIN-NEXT: fmin.s fa5, fa4, fa5
185
+ ; CHECK64ZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0
186
+ ; CHECK64ZFBFMIN-NEXT: fmv.w.x fa4, zero
187
+ ; CHECK64ZFBFMIN-NEXT: lui a0, 292864
188
+ ; CHECK64ZFBFMIN-NEXT: fmax.s fa5, fa5, fa4
189
+ ; CHECK64ZFBFMIN-NEXT: addi a0, a0, -256
190
+ ; CHECK64ZFBFMIN-NEXT: fmv.w.x fa4, a0
191
+ ; CHECK64ZFBFMIN-NEXT: fmin.s fa5, fa5, fa4
185
192
; CHECK64ZFBFMIN-NEXT: fcvt.lu.s a0, fa5, rtz
186
193
; CHECK64ZFBFMIN-NEXT: ret
187
194
;
188
195
; RV64ID-LABEL: fcvt_ui_bf16_sat:
189
196
; RV64ID: # %bb.0: # %start
190
- ; RV64ID-NEXT: lui a0, %hi(.LCPI3_0)
191
- ; RV64ID-NEXT: flw fa5, %lo(.LCPI3_0)(a0)
192
197
; RV64ID-NEXT: fmv.x.w a0, fa0
198
+ ; RV64ID-NEXT: fmv.w.x fa5, zero
193
199
; RV64ID-NEXT: slli a0, a0, 16
194
200
; RV64ID-NEXT: fmv.w.x fa4, a0
195
- ; RV64ID-NEXT: fmv.w.x fa3, zero
196
- ; RV64ID-NEXT: fmax.s fa4, fa4, fa3
197
- ; RV64ID-NEXT: fmin.s fa5, fa4, fa5
201
+ ; RV64ID-NEXT: lui a0, 292864
202
+ ; RV64ID-NEXT: addi a0, a0, -256
203
+ ; RV64ID-NEXT: fmax.s fa5, fa4, fa5
204
+ ; RV64ID-NEXT: fmv.w.x fa4, a0
205
+ ; RV64ID-NEXT: fmin.s fa5, fa5, fa4
198
206
; RV64ID-NEXT: fcvt.lu.s a0, fa5, rtz
199
207
; RV64ID-NEXT: ret
200
208
start:
@@ -472,20 +480,21 @@ define i64 @fcvt_l_bf16_sat(bfloat %a) nounwind {
472
480
; RV32IZFBFMIN-NEXT: # %bb.1: # %start
473
481
; RV32IZFBFMIN-NEXT: mv a2, a1
474
482
; RV32IZFBFMIN-NEXT: .LBB10_2: # %start
475
- ; RV32IZFBFMIN-NEXT: lui a1, %hi(.LCPI10_0)
476
- ; RV32IZFBFMIN-NEXT: flw fa5, %lo(.LCPI10_0)(a1)
483
+ ; RV32IZFBFMIN-NEXT: lui a1, 389120
484
+ ; RV32IZFBFMIN-NEXT: addi a1, a1, -1
485
+ ; RV32IZFBFMIN-NEXT: fmv.w.x fa5, a1
477
486
; RV32IZFBFMIN-NEXT: flt.s a1, fa5, fs0
478
487
; RV32IZFBFMIN-NEXT: beqz a1, .LBB10_4
479
488
; RV32IZFBFMIN-NEXT: # %bb.3:
480
489
; RV32IZFBFMIN-NEXT: addi a2, a3, -1
481
490
; RV32IZFBFMIN-NEXT: .LBB10_4: # %start
482
491
; RV32IZFBFMIN-NEXT: feq.s a3, fs0, fs0
483
- ; RV32IZFBFMIN-NEXT: neg a4, a1
484
- ; RV32IZFBFMIN-NEXT: neg a1, s0
492
+ ; RV32IZFBFMIN-NEXT: neg a4, s0
493
+ ; RV32IZFBFMIN-NEXT: neg a5, a1
485
494
; RV32IZFBFMIN-NEXT: neg a3, a3
486
- ; RV32IZFBFMIN-NEXT: and a0, a1 , a0
495
+ ; RV32IZFBFMIN-NEXT: and a0, a4 , a0
487
496
; RV32IZFBFMIN-NEXT: and a1, a3, a2
488
- ; RV32IZFBFMIN-NEXT: or a0, a4 , a0
497
+ ; RV32IZFBFMIN-NEXT: or a0, a5 , a0
489
498
; RV32IZFBFMIN-NEXT: and a0, a3, a0
490
499
; RV32IZFBFMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
491
500
; RV32IZFBFMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
@@ -511,20 +520,21 @@ define i64 @fcvt_l_bf16_sat(bfloat %a) nounwind {
511
520
; R32IDZFBFMIN-NEXT: # %bb.1: # %start
512
521
; R32IDZFBFMIN-NEXT: mv a2, a1
513
522
; R32IDZFBFMIN-NEXT: .LBB10_2: # %start
514
- ; R32IDZFBFMIN-NEXT: lui a1, %hi(.LCPI10_0)
515
- ; R32IDZFBFMIN-NEXT: flw fa5, %lo(.LCPI10_0)(a1)
523
+ ; R32IDZFBFMIN-NEXT: lui a1, 389120
524
+ ; R32IDZFBFMIN-NEXT: addi a1, a1, -1
525
+ ; R32IDZFBFMIN-NEXT: fmv.w.x fa5, a1
516
526
; R32IDZFBFMIN-NEXT: flt.s a1, fa5, fs0
517
527
; R32IDZFBFMIN-NEXT: beqz a1, .LBB10_4
518
528
; R32IDZFBFMIN-NEXT: # %bb.3:
519
529
; R32IDZFBFMIN-NEXT: addi a2, a3, -1
520
530
; R32IDZFBFMIN-NEXT: .LBB10_4: # %start
521
531
; R32IDZFBFMIN-NEXT: feq.s a3, fs0, fs0
522
- ; R32IDZFBFMIN-NEXT: neg a4, a1
523
- ; R32IDZFBFMIN-NEXT: neg a1, s0
532
+ ; R32IDZFBFMIN-NEXT: neg a4, s0
533
+ ; R32IDZFBFMIN-NEXT: neg a5, a1
524
534
; R32IDZFBFMIN-NEXT: neg a3, a3
525
- ; R32IDZFBFMIN-NEXT: and a0, a1 , a0
535
+ ; R32IDZFBFMIN-NEXT: and a0, a4 , a0
526
536
; R32IDZFBFMIN-NEXT: and a1, a3, a2
527
- ; R32IDZFBFMIN-NEXT: or a0, a4 , a0
537
+ ; R32IDZFBFMIN-NEXT: or a0, a5 , a0
528
538
; R32IDZFBFMIN-NEXT: and a0, a3, a0
529
539
; R32IDZFBFMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
530
540
; R32IDZFBFMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
@@ -552,8 +562,9 @@ define i64 @fcvt_l_bf16_sat(bfloat %a) nounwind {
552
562
; RV32ID-NEXT: # %bb.1: # %start
553
563
; RV32ID-NEXT: mv a2, a1
554
564
; RV32ID-NEXT: .LBB10_2: # %start
555
- ; RV32ID-NEXT: lui a1, %hi(.LCPI10_0)
556
- ; RV32ID-NEXT: flw fa5, %lo(.LCPI10_0)(a1)
565
+ ; RV32ID-NEXT: lui a1, 389120
566
+ ; RV32ID-NEXT: addi a1, a1, -1
567
+ ; RV32ID-NEXT: fmv.w.x fa5, a1
557
568
; RV32ID-NEXT: flt.s a1, fa5, fs0
558
569
; RV32ID-NEXT: beqz a1, .LBB10_4
559
570
; RV32ID-NEXT: # %bb.3:
@@ -641,30 +652,59 @@ define i64 @fcvt_lu_bf16(bfloat %a) nounwind {
641
652
}
642
653
643
654
define i64 @fcvt_lu_bf16_sat (bfloat %a ) nounwind {
644
- ; CHECK32ZFBFMIN-LABEL: fcvt_lu_bf16_sat:
645
- ; CHECK32ZFBFMIN: # %bb.0: # %start
646
- ; CHECK32ZFBFMIN-NEXT: addi sp, sp, -16
647
- ; CHECK32ZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
648
- ; CHECK32ZFBFMIN-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
649
- ; CHECK32ZFBFMIN-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
650
- ; CHECK32ZFBFMIN-NEXT: lui a0, %hi(.LCPI12_0)
651
- ; CHECK32ZFBFMIN-NEXT: flw fa5, %lo(.LCPI12_0)(a0)
652
- ; CHECK32ZFBFMIN-NEXT: fcvt.s.bf16 fa0, fa0
653
- ; CHECK32ZFBFMIN-NEXT: fmv.w.x fa4, zero
654
- ; CHECK32ZFBFMIN-NEXT: fle.s a0, fa4, fa0
655
- ; CHECK32ZFBFMIN-NEXT: flt.s a1, fa5, fa0
656
- ; CHECK32ZFBFMIN-NEXT: neg s0, a1
657
- ; CHECK32ZFBFMIN-NEXT: neg s1, a0
658
- ; CHECK32ZFBFMIN-NEXT: call __fixunssfdi
659
- ; CHECK32ZFBFMIN-NEXT: and a0, s1, a0
660
- ; CHECK32ZFBFMIN-NEXT: and a1, s1, a1
661
- ; CHECK32ZFBFMIN-NEXT: or a0, s0, a0
662
- ; CHECK32ZFBFMIN-NEXT: or a1, s0, a1
663
- ; CHECK32ZFBFMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
664
- ; CHECK32ZFBFMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
665
- ; CHECK32ZFBFMIN-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
666
- ; CHECK32ZFBFMIN-NEXT: addi sp, sp, 16
667
- ; CHECK32ZFBFMIN-NEXT: ret
655
+ ; RV32IZFBFMIN-LABEL: fcvt_lu_bf16_sat:
656
+ ; RV32IZFBFMIN: # %bb.0: # %start
657
+ ; RV32IZFBFMIN-NEXT: addi sp, sp, -16
658
+ ; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
659
+ ; RV32IZFBFMIN-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
660
+ ; RV32IZFBFMIN-NEXT: fsw fs0, 4(sp) # 4-byte Folded Spill
661
+ ; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fs0, fa0
662
+ ; RV32IZFBFMIN-NEXT: fmv.w.x fa5, zero
663
+ ; RV32IZFBFMIN-NEXT: fle.s a0, fa5, fs0
664
+ ; RV32IZFBFMIN-NEXT: neg s0, a0
665
+ ; RV32IZFBFMIN-NEXT: fmv.s fa0, fs0
666
+ ; RV32IZFBFMIN-NEXT: call __fixunssfdi
667
+ ; RV32IZFBFMIN-NEXT: and a0, s0, a0
668
+ ; RV32IZFBFMIN-NEXT: lui a2, 391168
669
+ ; RV32IZFBFMIN-NEXT: and a1, s0, a1
670
+ ; RV32IZFBFMIN-NEXT: addi a2, a2, -1
671
+ ; RV32IZFBFMIN-NEXT: fmv.w.x fa5, a2
672
+ ; RV32IZFBFMIN-NEXT: flt.s a2, fa5, fs0
673
+ ; RV32IZFBFMIN-NEXT: neg a2, a2
674
+ ; RV32IZFBFMIN-NEXT: or a0, a2, a0
675
+ ; RV32IZFBFMIN-NEXT: or a1, a2, a1
676
+ ; RV32IZFBFMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
677
+ ; RV32IZFBFMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
678
+ ; RV32IZFBFMIN-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload
679
+ ; RV32IZFBFMIN-NEXT: addi sp, sp, 16
680
+ ; RV32IZFBFMIN-NEXT: ret
681
+ ;
682
+ ; R32IDZFBFMIN-LABEL: fcvt_lu_bf16_sat:
683
+ ; R32IDZFBFMIN: # %bb.0: # %start
684
+ ; R32IDZFBFMIN-NEXT: addi sp, sp, -16
685
+ ; R32IDZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
686
+ ; R32IDZFBFMIN-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
687
+ ; R32IDZFBFMIN-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill
688
+ ; R32IDZFBFMIN-NEXT: fcvt.s.bf16 fs0, fa0
689
+ ; R32IDZFBFMIN-NEXT: fmv.w.x fa5, zero
690
+ ; R32IDZFBFMIN-NEXT: fle.s a0, fa5, fs0
691
+ ; R32IDZFBFMIN-NEXT: neg s0, a0
692
+ ; R32IDZFBFMIN-NEXT: fmv.s fa0, fs0
693
+ ; R32IDZFBFMIN-NEXT: call __fixunssfdi
694
+ ; R32IDZFBFMIN-NEXT: and a0, s0, a0
695
+ ; R32IDZFBFMIN-NEXT: lui a2, 391168
696
+ ; R32IDZFBFMIN-NEXT: and a1, s0, a1
697
+ ; R32IDZFBFMIN-NEXT: addi a2, a2, -1
698
+ ; R32IDZFBFMIN-NEXT: fmv.w.x fa5, a2
699
+ ; R32IDZFBFMIN-NEXT: flt.s a2, fa5, fs0
700
+ ; R32IDZFBFMIN-NEXT: neg a2, a2
701
+ ; R32IDZFBFMIN-NEXT: or a0, a2, a0
702
+ ; R32IDZFBFMIN-NEXT: or a1, a2, a1
703
+ ; R32IDZFBFMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
704
+ ; R32IDZFBFMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
705
+ ; R32IDZFBFMIN-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload
706
+ ; R32IDZFBFMIN-NEXT: addi sp, sp, 16
707
+ ; R32IDZFBFMIN-NEXT: ret
668
708
;
669
709
; RV32ID-LABEL: fcvt_lu_bf16_sat:
670
710
; RV32ID: # %bb.0: # %start
@@ -673,15 +713,16 @@ define i64 @fcvt_lu_bf16_sat(bfloat %a) nounwind {
673
713
; RV32ID-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
674
714
; RV32ID-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
675
715
; RV32ID-NEXT: fmv.x.w a0, fa0
676
- ; RV32ID-NEXT: lui a1, %hi(.LCPI12_0)
677
- ; RV32ID-NEXT: fmv.w.x fa5, zero
678
- ; RV32ID-NEXT: flw fa4, %lo(.LCPI12_0)(a1)
716
+ ; RV32ID-NEXT: lui a1, 391168
679
717
; RV32ID-NEXT: slli a0, a0, 16
718
+ ; RV32ID-NEXT: addi a1, a1, -1
680
719
; RV32ID-NEXT: fmv.w.x fa0, a0
681
- ; RV32ID-NEXT: fle.s a0, fa5, fa0
682
- ; RV32ID-NEXT: flt.s a1, fa4, fa0
683
- ; RV32ID-NEXT: neg s0, a1
684
- ; RV32ID-NEXT: neg s1, a0
720
+ ; RV32ID-NEXT: fmv.w.x fa5, a1
721
+ ; RV32ID-NEXT: flt.s a0, fa5, fa0
722
+ ; RV32ID-NEXT: fmv.w.x fa5, zero
723
+ ; RV32ID-NEXT: fle.s a1, fa5, fa0
724
+ ; RV32ID-NEXT: neg s0, a0
725
+ ; RV32ID-NEXT: neg s1, a1
685
726
; RV32ID-NEXT: call __fixunssfdi
686
727
; RV32ID-NEXT: and a0, s1, a0
687
728
; RV32ID-NEXT: and a1, s1, a1
0 commit comments