@@ -102,30 +102,29 @@ define i64 @test_floor_si64(double %x) nounwind {
102
102
; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI1_0)
103
103
; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI1_0+4)(a2)
104
104
; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI1_0)(a2)
105
- ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
105
+ ; RV32IZFINXZDINX-NEXT: lui a4, %hi(.LCPI1_1)
106
+ ; RV32IZFINXZDINX-NEXT: lw a5, %lo(.LCPI1_1+4)(a4)
107
+ ; RV32IZFINXZDINX-NEXT: lw a4, %lo(.LCPI1_1)(a4)
108
+ ; RV32IZFINXZDINX-NEXT: fle.d a6, a2, s0
109
+ ; RV32IZFINXZDINX-NEXT: neg a2, a6
110
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
111
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a4, s0
112
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
113
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
114
+ ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
115
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
106
116
; RV32IZFINXZDINX-NEXT: lui a5, 524288
107
- ; RV32IZFINXZDINX-NEXT: li a4, 1
108
117
; RV32IZFINXZDINX-NEXT: lui a3, 524288
109
- ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB1_2
118
+ ; RV32IZFINXZDINX-NEXT: beqz a6 , .LBB1_2
110
119
; RV32IZFINXZDINX-NEXT: # %bb.1:
111
120
; RV32IZFINXZDINX-NEXT: mv a3, a1
112
121
; RV32IZFINXZDINX-NEXT: .LBB1_2:
113
- ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI1_1)
114
- ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI1_1)(a1)
115
- ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI1_1+4)(a1)
116
- ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
122
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
117
123
; RV32IZFINXZDINX-NEXT: beqz a4, .LBB1_4
118
124
; RV32IZFINXZDINX-NEXT: # %bb.3:
119
125
; RV32IZFINXZDINX-NEXT: addi a3, a5, -1
120
126
; RV32IZFINXZDINX-NEXT: .LBB1_4:
121
- ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
122
- ; RV32IZFINXZDINX-NEXT: neg a5, a1
123
- ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
124
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
125
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
126
- ; RV32IZFINXZDINX-NEXT: neg a2, a4
127
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
128
- ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
127
+ ; RV32IZFINXZDINX-NEXT: and a1, a2, a3
129
128
; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
130
129
; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
131
130
; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -347,30 +346,29 @@ define i64 @test_ceil_si64(double %x) nounwind {
347
346
; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI5_0)
348
347
; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI5_0+4)(a2)
349
348
; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI5_0)(a2)
350
- ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
349
+ ; RV32IZFINXZDINX-NEXT: lui a4, %hi(.LCPI5_1)
350
+ ; RV32IZFINXZDINX-NEXT: lw a5, %lo(.LCPI5_1+4)(a4)
351
+ ; RV32IZFINXZDINX-NEXT: lw a4, %lo(.LCPI5_1)(a4)
352
+ ; RV32IZFINXZDINX-NEXT: fle.d a6, a2, s0
353
+ ; RV32IZFINXZDINX-NEXT: neg a2, a6
354
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
355
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a4, s0
356
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
357
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
358
+ ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
359
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
351
360
; RV32IZFINXZDINX-NEXT: lui a5, 524288
352
- ; RV32IZFINXZDINX-NEXT: li a4, 1
353
361
; RV32IZFINXZDINX-NEXT: lui a3, 524288
354
- ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB5_2
362
+ ; RV32IZFINXZDINX-NEXT: beqz a6 , .LBB5_2
355
363
; RV32IZFINXZDINX-NEXT: # %bb.1:
356
364
; RV32IZFINXZDINX-NEXT: mv a3, a1
357
365
; RV32IZFINXZDINX-NEXT: .LBB5_2:
358
- ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI5_1)
359
- ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI5_1)(a1)
360
- ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI5_1+4)(a1)
361
- ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
366
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
362
367
; RV32IZFINXZDINX-NEXT: beqz a4, .LBB5_4
363
368
; RV32IZFINXZDINX-NEXT: # %bb.3:
364
369
; RV32IZFINXZDINX-NEXT: addi a3, a5, -1
365
370
; RV32IZFINXZDINX-NEXT: .LBB5_4:
366
- ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
367
- ; RV32IZFINXZDINX-NEXT: neg a5, a1
368
- ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
369
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
370
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
371
- ; RV32IZFINXZDINX-NEXT: neg a2, a4
372
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
373
- ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
371
+ ; RV32IZFINXZDINX-NEXT: and a1, a2, a3
374
372
; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
375
373
; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
376
374
; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -592,30 +590,29 @@ define i64 @test_trunc_si64(double %x) nounwind {
592
590
; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI9_0)
593
591
; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI9_0+4)(a2)
594
592
; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI9_0)(a2)
595
- ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
593
+ ; RV32IZFINXZDINX-NEXT: lui a4, %hi(.LCPI9_1)
594
+ ; RV32IZFINXZDINX-NEXT: lw a5, %lo(.LCPI9_1+4)(a4)
595
+ ; RV32IZFINXZDINX-NEXT: lw a4, %lo(.LCPI9_1)(a4)
596
+ ; RV32IZFINXZDINX-NEXT: fle.d a6, a2, s0
597
+ ; RV32IZFINXZDINX-NEXT: neg a2, a6
598
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
599
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a4, s0
600
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
601
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
602
+ ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
603
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
596
604
; RV32IZFINXZDINX-NEXT: lui a5, 524288
597
- ; RV32IZFINXZDINX-NEXT: li a4, 1
598
605
; RV32IZFINXZDINX-NEXT: lui a3, 524288
599
- ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB9_2
606
+ ; RV32IZFINXZDINX-NEXT: beqz a6 , .LBB9_2
600
607
; RV32IZFINXZDINX-NEXT: # %bb.1:
601
608
; RV32IZFINXZDINX-NEXT: mv a3, a1
602
609
; RV32IZFINXZDINX-NEXT: .LBB9_2:
603
- ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI9_1)
604
- ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI9_1)(a1)
605
- ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI9_1+4)(a1)
606
- ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
610
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
607
611
; RV32IZFINXZDINX-NEXT: beqz a4, .LBB9_4
608
612
; RV32IZFINXZDINX-NEXT: # %bb.3:
609
613
; RV32IZFINXZDINX-NEXT: addi a3, a5, -1
610
614
; RV32IZFINXZDINX-NEXT: .LBB9_4:
611
- ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
612
- ; RV32IZFINXZDINX-NEXT: neg a5, a1
613
- ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
614
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
615
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
616
- ; RV32IZFINXZDINX-NEXT: neg a2, a4
617
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
618
- ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
615
+ ; RV32IZFINXZDINX-NEXT: and a1, a2, a3
619
616
; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
620
617
; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
621
618
; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -837,30 +834,29 @@ define i64 @test_round_si64(double %x) nounwind {
837
834
; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI13_0)
838
835
; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI13_0+4)(a2)
839
836
; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI13_0)(a2)
840
- ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
837
+ ; RV32IZFINXZDINX-NEXT: lui a4, %hi(.LCPI13_1)
838
+ ; RV32IZFINXZDINX-NEXT: lw a5, %lo(.LCPI13_1+4)(a4)
839
+ ; RV32IZFINXZDINX-NEXT: lw a4, %lo(.LCPI13_1)(a4)
840
+ ; RV32IZFINXZDINX-NEXT: fle.d a6, a2, s0
841
+ ; RV32IZFINXZDINX-NEXT: neg a2, a6
842
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
843
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a4, s0
844
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
845
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
846
+ ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
847
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
841
848
; RV32IZFINXZDINX-NEXT: lui a5, 524288
842
- ; RV32IZFINXZDINX-NEXT: li a4, 1
843
849
; RV32IZFINXZDINX-NEXT: lui a3, 524288
844
- ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB13_2
850
+ ; RV32IZFINXZDINX-NEXT: beqz a6 , .LBB13_2
845
851
; RV32IZFINXZDINX-NEXT: # %bb.1:
846
852
; RV32IZFINXZDINX-NEXT: mv a3, a1
847
853
; RV32IZFINXZDINX-NEXT: .LBB13_2:
848
- ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI13_1)
849
- ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI13_1)(a1)
850
- ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI13_1+4)(a1)
851
- ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
854
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
852
855
; RV32IZFINXZDINX-NEXT: beqz a4, .LBB13_4
853
856
; RV32IZFINXZDINX-NEXT: # %bb.3:
854
857
; RV32IZFINXZDINX-NEXT: addi a3, a5, -1
855
858
; RV32IZFINXZDINX-NEXT: .LBB13_4:
856
- ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
857
- ; RV32IZFINXZDINX-NEXT: neg a5, a1
858
- ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
859
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
860
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
861
- ; RV32IZFINXZDINX-NEXT: neg a2, a4
862
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
863
- ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
859
+ ; RV32IZFINXZDINX-NEXT: and a1, a2, a3
864
860
; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
865
861
; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
866
862
; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -1082,30 +1078,29 @@ define i64 @test_roundeven_si64(double %x) nounwind {
1082
1078
; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI17_0)
1083
1079
; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI17_0+4)(a2)
1084
1080
; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI17_0)(a2)
1085
- ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
1081
+ ; RV32IZFINXZDINX-NEXT: lui a4, %hi(.LCPI17_1)
1082
+ ; RV32IZFINXZDINX-NEXT: lw a5, %lo(.LCPI17_1+4)(a4)
1083
+ ; RV32IZFINXZDINX-NEXT: lw a4, %lo(.LCPI17_1)(a4)
1084
+ ; RV32IZFINXZDINX-NEXT: fle.d a6, a2, s0
1085
+ ; RV32IZFINXZDINX-NEXT: neg a2, a6
1086
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
1087
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a4, s0
1088
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
1089
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
1090
+ ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
1091
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
1086
1092
; RV32IZFINXZDINX-NEXT: lui a5, 524288
1087
- ; RV32IZFINXZDINX-NEXT: li a4, 1
1088
1093
; RV32IZFINXZDINX-NEXT: lui a3, 524288
1089
- ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB17_2
1094
+ ; RV32IZFINXZDINX-NEXT: beqz a6 , .LBB17_2
1090
1095
; RV32IZFINXZDINX-NEXT: # %bb.1:
1091
1096
; RV32IZFINXZDINX-NEXT: mv a3, a1
1092
1097
; RV32IZFINXZDINX-NEXT: .LBB17_2:
1093
- ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI17_1)
1094
- ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI17_1)(a1)
1095
- ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI17_1+4)(a1)
1096
- ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
1098
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
1097
1099
; RV32IZFINXZDINX-NEXT: beqz a4, .LBB17_4
1098
1100
; RV32IZFINXZDINX-NEXT: # %bb.3:
1099
1101
; RV32IZFINXZDINX-NEXT: addi a3, a5, -1
1100
1102
; RV32IZFINXZDINX-NEXT: .LBB17_4:
1101
- ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
1102
- ; RV32IZFINXZDINX-NEXT: neg a5, a1
1103
- ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
1104
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
1105
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
1106
- ; RV32IZFINXZDINX-NEXT: neg a2, a4
1107
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
1108
- ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
1103
+ ; RV32IZFINXZDINX-NEXT: and a1, a2, a3
1109
1104
; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1110
1105
; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1111
1106
; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -1327,30 +1322,29 @@ define i64 @test_rint_si64(double %x) nounwind {
1327
1322
; RV32IZFINXZDINX-NEXT: lui a2, %hi(.LCPI21_0)
1328
1323
; RV32IZFINXZDINX-NEXT: lw a3, %lo(.LCPI21_0+4)(a2)
1329
1324
; RV32IZFINXZDINX-NEXT: lw a2, %lo(.LCPI21_0)(a2)
1330
- ; RV32IZFINXZDINX-NEXT: fle.d a2, a2, s0
1325
+ ; RV32IZFINXZDINX-NEXT: lui a4, %hi(.LCPI21_1)
1326
+ ; RV32IZFINXZDINX-NEXT: lw a5, %lo(.LCPI21_1+4)(a4)
1327
+ ; RV32IZFINXZDINX-NEXT: lw a4, %lo(.LCPI21_1)(a4)
1328
+ ; RV32IZFINXZDINX-NEXT: fle.d a6, a2, s0
1329
+ ; RV32IZFINXZDINX-NEXT: neg a2, a6
1330
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
1331
+ ; RV32IZFINXZDINX-NEXT: flt.d a4, a4, s0
1332
+ ; RV32IZFINXZDINX-NEXT: neg a2, a4
1333
+ ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
1334
+ ; RV32IZFINXZDINX-NEXT: feq.d a2, s0, s0
1335
+ ; RV32IZFINXZDINX-NEXT: neg a2, a2
1331
1336
; RV32IZFINXZDINX-NEXT: lui a5, 524288
1332
- ; RV32IZFINXZDINX-NEXT: li a4, 1
1333
1337
; RV32IZFINXZDINX-NEXT: lui a3, 524288
1334
- ; RV32IZFINXZDINX-NEXT: bne a2, a4 , .LBB21_2
1338
+ ; RV32IZFINXZDINX-NEXT: beqz a6 , .LBB21_2
1335
1339
; RV32IZFINXZDINX-NEXT: # %bb.1:
1336
1340
; RV32IZFINXZDINX-NEXT: mv a3, a1
1337
1341
; RV32IZFINXZDINX-NEXT: .LBB21_2:
1338
- ; RV32IZFINXZDINX-NEXT: lui a1, %hi(.LCPI21_1)
1339
- ; RV32IZFINXZDINX-NEXT: lw a6, %lo(.LCPI21_1)(a1)
1340
- ; RV32IZFINXZDINX-NEXT: lw a7, %lo(.LCPI21_1+4)(a1)
1341
- ; RV32IZFINXZDINX-NEXT: flt.d a4, a6, s0
1342
+ ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
1342
1343
; RV32IZFINXZDINX-NEXT: beqz a4, .LBB21_4
1343
1344
; RV32IZFINXZDINX-NEXT: # %bb.3:
1344
1345
; RV32IZFINXZDINX-NEXT: addi a3, a5, -1
1345
1346
; RV32IZFINXZDINX-NEXT: .LBB21_4:
1346
- ; RV32IZFINXZDINX-NEXT: feq.d a1, s0, s0
1347
- ; RV32IZFINXZDINX-NEXT: neg a5, a1
1348
- ; RV32IZFINXZDINX-NEXT: and a1, a5, a3
1349
- ; RV32IZFINXZDINX-NEXT: neg a2, a2
1350
- ; RV32IZFINXZDINX-NEXT: and a0, a2, a0
1351
- ; RV32IZFINXZDINX-NEXT: neg a2, a4
1352
- ; RV32IZFINXZDINX-NEXT: or a0, a2, a0
1353
- ; RV32IZFINXZDINX-NEXT: and a0, a5, a0
1347
+ ; RV32IZFINXZDINX-NEXT: and a1, a2, a3
1354
1348
; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1355
1349
; RV32IZFINXZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1356
1350
; RV32IZFINXZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
0 commit comments