@@ -114,9 +114,8 @@ define i32 @utest_f64i32(double %x) {
114
114
; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
115
115
; RV32IF-NEXT: .cfi_offset ra, -4
116
116
; RV32IF-NEXT: call __fixunsdfdi
117
+ ; RV32IF-NEXT: seqz a1, a1
117
118
; RV32IF-NEXT: sltiu a2, a0, -1
118
- ; RV32IF-NEXT: snez a1, a1
119
- ; RV32IF-NEXT: addi a1, a1, -1
120
119
; RV32IF-NEXT: and a1, a1, a2
121
120
; RV32IF-NEXT: addi a1, a1, -1
122
121
; RV32IF-NEXT: or a0, a1, a0
@@ -430,9 +429,8 @@ define i32 @utesth_f16i32(half %x) {
430
429
; RV32-NEXT: .cfi_offset ra, -4
431
430
; RV32-NEXT: call __extendhfsf2
432
431
; RV32-NEXT: call __fixunssfdi
432
+ ; RV32-NEXT: seqz a1, a1
433
433
; RV32-NEXT: sltiu a2, a0, -1
434
- ; RV32-NEXT: snez a1, a1
435
- ; RV32-NEXT: addi a1, a1, -1
436
434
; RV32-NEXT: and a1, a1, a2
437
435
; RV32-NEXT: addi a1, a1, -1
438
436
; RV32-NEXT: or a0, a1, a0
@@ -1229,10 +1227,8 @@ define i64 @utest_f64i64(double %x) {
1229
1227
; RV32IF-NEXT: lw a1, 20(sp)
1230
1228
; RV32IF-NEXT: lw a2, 12(sp)
1231
1229
; RV32IF-NEXT: lw a3, 8(sp)
1232
- ; RV32IF-NEXT: seqz a4, a0
1233
- ; RV32IF-NEXT: snez a5, a1
1234
- ; RV32IF-NEXT: addi a5, a5, -1
1235
- ; RV32IF-NEXT: and a4, a5, a4
1230
+ ; RV32IF-NEXT: or a4, a1, a0
1231
+ ; RV32IF-NEXT: seqz a4, a4
1236
1232
; RV32IF-NEXT: xori a0, a0, 1
1237
1233
; RV32IF-NEXT: or a0, a0, a1
1238
1234
; RV32IF-NEXT: seqz a0, a0
@@ -1271,10 +1267,8 @@ define i64 @utest_f64i64(double %x) {
1271
1267
; RV32IFD-NEXT: lw a1, 20(sp)
1272
1268
; RV32IFD-NEXT: lw a2, 12(sp)
1273
1269
; RV32IFD-NEXT: lw a3, 8(sp)
1274
- ; RV32IFD-NEXT: seqz a4, a0
1275
- ; RV32IFD-NEXT: snez a5, a1
1276
- ; RV32IFD-NEXT: addi a5, a5, -1
1277
- ; RV32IFD-NEXT: and a4, a5, a4
1270
+ ; RV32IFD-NEXT: or a4, a1, a0
1271
+ ; RV32IFD-NEXT: seqz a4, a4
1278
1272
; RV32IFD-NEXT: xori a0, a0, 1
1279
1273
; RV32IFD-NEXT: or a0, a0, a1
1280
1274
; RV32IFD-NEXT: seqz a0, a0
@@ -1324,8 +1318,8 @@ define i64 @ustest_f64i64(double %x) {
1324
1318
; RV32IF-NEXT: # %bb.4: # %entry
1325
1319
; RV32IF-NEXT: li a0, 1
1326
1320
; RV32IF-NEXT: .LBB20_5: # %entry
1327
- ; RV32IF-NEXT: lw a4 , 8(sp)
1328
- ; RV32IF-NEXT: lw a3 , 12(sp)
1321
+ ; RV32IF-NEXT: lw a3 , 8(sp)
1322
+ ; RV32IF-NEXT: lw a4 , 12(sp)
1329
1323
; RV32IF-NEXT: and a5, a2, a1
1330
1324
; RV32IF-NEXT: beqz a5, .LBB20_7
1331
1325
; RV32IF-NEXT: # %bb.6: # %entry
@@ -1334,18 +1328,17 @@ define i64 @ustest_f64i64(double %x) {
1334
1328
; RV32IF-NEXT: .LBB20_7:
1335
1329
; RV32IF-NEXT: snez a1, a0
1336
1330
; RV32IF-NEXT: .LBB20_8: # %entry
1337
- ; RV32IF-NEXT: and a3 , a2, a3
1331
+ ; RV32IF-NEXT: and a4 , a2, a4
1338
1332
; RV32IF-NEXT: or a0, a0, a5
1339
- ; RV32IF-NEXT: and a2, a2, a4
1333
+ ; RV32IF-NEXT: and a2, a2, a3
1340
1334
; RV32IF-NEXT: bnez a0, .LBB20_10
1341
1335
; RV32IF-NEXT: # %bb.9:
1342
- ; RV32IF-NEXT: snez a0, a3
1343
- ; RV32IF-NEXT: snez a1, a2
1344
- ; RV32IF-NEXT: or a1, a1, a0
1336
+ ; RV32IF-NEXT: or a0, a2, a4
1337
+ ; RV32IF-NEXT: snez a1, a0
1345
1338
; RV32IF-NEXT: .LBB20_10: # %entry
1346
1339
; RV32IF-NEXT: neg a1, a1
1347
1340
; RV32IF-NEXT: and a0, a1, a2
1348
- ; RV32IF-NEXT: and a1, a1, a3
1341
+ ; RV32IF-NEXT: and a1, a1, a4
1349
1342
; RV32IF-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
1350
1343
; RV32IF-NEXT: addi sp, sp, 32
1351
1344
; RV32IF-NEXT: ret
@@ -1404,8 +1397,8 @@ define i64 @ustest_f64i64(double %x) {
1404
1397
; RV32IFD-NEXT: # %bb.4: # %entry
1405
1398
; RV32IFD-NEXT: li a0, 1
1406
1399
; RV32IFD-NEXT: .LBB20_5: # %entry
1407
- ; RV32IFD-NEXT: lw a4 , 8(sp)
1408
- ; RV32IFD-NEXT: lw a3 , 12(sp)
1400
+ ; RV32IFD-NEXT: lw a3 , 8(sp)
1401
+ ; RV32IFD-NEXT: lw a4 , 12(sp)
1409
1402
; RV32IFD-NEXT: and a5, a2, a1
1410
1403
; RV32IFD-NEXT: beqz a5, .LBB20_7
1411
1404
; RV32IFD-NEXT: # %bb.6: # %entry
@@ -1414,18 +1407,17 @@ define i64 @ustest_f64i64(double %x) {
1414
1407
; RV32IFD-NEXT: .LBB20_7:
1415
1408
; RV32IFD-NEXT: snez a1, a0
1416
1409
; RV32IFD-NEXT: .LBB20_8: # %entry
1417
- ; RV32IFD-NEXT: and a3 , a2, a3
1410
+ ; RV32IFD-NEXT: and a4 , a2, a4
1418
1411
; RV32IFD-NEXT: or a0, a0, a5
1419
- ; RV32IFD-NEXT: and a2, a2, a4
1412
+ ; RV32IFD-NEXT: and a2, a2, a3
1420
1413
; RV32IFD-NEXT: bnez a0, .LBB20_10
1421
1414
; RV32IFD-NEXT: # %bb.9:
1422
- ; RV32IFD-NEXT: snez a0, a3
1423
- ; RV32IFD-NEXT: snez a1, a2
1424
- ; RV32IFD-NEXT: or a1, a1, a0
1415
+ ; RV32IFD-NEXT: or a0, a2, a4
1416
+ ; RV32IFD-NEXT: snez a1, a0
1425
1417
; RV32IFD-NEXT: .LBB20_10: # %entry
1426
1418
; RV32IFD-NEXT: neg a1, a1
1427
1419
; RV32IFD-NEXT: and a0, a1, a2
1428
- ; RV32IFD-NEXT: and a1, a1, a3
1420
+ ; RV32IFD-NEXT: and a1, a1, a4
1429
1421
; RV32IFD-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
1430
1422
; RV32IFD-NEXT: addi sp, sp, 32
1431
1423
; RV32IFD-NEXT: ret
@@ -1531,10 +1523,8 @@ define i64 @utest_f32i64(float %x) {
1531
1523
; RV32-NEXT: lw a1, 20(sp)
1532
1524
; RV32-NEXT: lw a2, 12(sp)
1533
1525
; RV32-NEXT: lw a3, 8(sp)
1534
- ; RV32-NEXT: seqz a4, a0
1535
- ; RV32-NEXT: snez a5, a1
1536
- ; RV32-NEXT: addi a5, a5, -1
1537
- ; RV32-NEXT: and a4, a5, a4
1526
+ ; RV32-NEXT: or a4, a1, a0
1527
+ ; RV32-NEXT: seqz a4, a4
1538
1528
; RV32-NEXT: xori a0, a0, 1
1539
1529
; RV32-NEXT: or a0, a0, a1
1540
1530
; RV32-NEXT: seqz a0, a0
@@ -1596,8 +1586,8 @@ define i64 @ustest_f32i64(float %x) {
1596
1586
; RV32-NEXT: # %bb.4: # %entry
1597
1587
; RV32-NEXT: li a0, 1
1598
1588
; RV32-NEXT: .LBB23_5: # %entry
1599
- ; RV32-NEXT: lw a4 , 8(sp)
1600
- ; RV32-NEXT: lw a3 , 12(sp)
1589
+ ; RV32-NEXT: lw a3 , 8(sp)
1590
+ ; RV32-NEXT: lw a4 , 12(sp)
1601
1591
; RV32-NEXT: and a5, a2, a1
1602
1592
; RV32-NEXT: beqz a5, .LBB23_7
1603
1593
; RV32-NEXT: # %bb.6: # %entry
@@ -1606,18 +1596,17 @@ define i64 @ustest_f32i64(float %x) {
1606
1596
; RV32-NEXT: .LBB23_7:
1607
1597
; RV32-NEXT: snez a1, a0
1608
1598
; RV32-NEXT: .LBB23_8: # %entry
1609
- ; RV32-NEXT: and a3 , a2, a3
1599
+ ; RV32-NEXT: and a4 , a2, a4
1610
1600
; RV32-NEXT: or a0, a0, a5
1611
- ; RV32-NEXT: and a2, a2, a4
1601
+ ; RV32-NEXT: and a2, a2, a3
1612
1602
; RV32-NEXT: bnez a0, .LBB23_10
1613
1603
; RV32-NEXT: # %bb.9:
1614
- ; RV32-NEXT: snez a0, a3
1615
- ; RV32-NEXT: snez a1, a2
1616
- ; RV32-NEXT: or a1, a1, a0
1604
+ ; RV32-NEXT: or a0, a2, a4
1605
+ ; RV32-NEXT: snez a1, a0
1617
1606
; RV32-NEXT: .LBB23_10: # %entry
1618
1607
; RV32-NEXT: neg a1, a1
1619
1608
; RV32-NEXT: and a0, a1, a2
1620
- ; RV32-NEXT: and a1, a1, a3
1609
+ ; RV32-NEXT: and a1, a1, a4
1621
1610
; RV32-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
1622
1611
; RV32-NEXT: addi sp, sp, 32
1623
1612
; RV32-NEXT: ret
@@ -1783,10 +1772,8 @@ define i64 @utesth_f16i64(half %x) {
1783
1772
; RV32-NEXT: lw a1, 20(sp)
1784
1773
; RV32-NEXT: lw a2, 12(sp)
1785
1774
; RV32-NEXT: lw a3, 8(sp)
1786
- ; RV32-NEXT: seqz a4, a0
1787
- ; RV32-NEXT: snez a5, a1
1788
- ; RV32-NEXT: addi a5, a5, -1
1789
- ; RV32-NEXT: and a4, a5, a4
1775
+ ; RV32-NEXT: or a4, a1, a0
1776
+ ; RV32-NEXT: seqz a4, a4
1790
1777
; RV32-NEXT: xori a0, a0, 1
1791
1778
; RV32-NEXT: or a0, a0, a1
1792
1779
; RV32-NEXT: seqz a0, a0
@@ -1850,8 +1837,8 @@ define i64 @ustest_f16i64(half %x) {
1850
1837
; RV32-NEXT: # %bb.4: # %entry
1851
1838
; RV32-NEXT: li a0, 1
1852
1839
; RV32-NEXT: .LBB26_5: # %entry
1853
- ; RV32-NEXT: lw a4 , 8(sp)
1854
- ; RV32-NEXT: lw a3 , 12(sp)
1840
+ ; RV32-NEXT: lw a3 , 8(sp)
1841
+ ; RV32-NEXT: lw a4 , 12(sp)
1855
1842
; RV32-NEXT: and a5, a2, a1
1856
1843
; RV32-NEXT: beqz a5, .LBB26_7
1857
1844
; RV32-NEXT: # %bb.6: # %entry
@@ -1860,18 +1847,17 @@ define i64 @ustest_f16i64(half %x) {
1860
1847
; RV32-NEXT: .LBB26_7:
1861
1848
; RV32-NEXT: snez a1, a0
1862
1849
; RV32-NEXT: .LBB26_8: # %entry
1863
- ; RV32-NEXT: and a3 , a2, a3
1850
+ ; RV32-NEXT: and a4 , a2, a4
1864
1851
; RV32-NEXT: or a0, a0, a5
1865
- ; RV32-NEXT: and a2, a2, a4
1852
+ ; RV32-NEXT: and a2, a2, a3
1866
1853
; RV32-NEXT: bnez a0, .LBB26_10
1867
1854
; RV32-NEXT: # %bb.9:
1868
- ; RV32-NEXT: snez a0, a3
1869
- ; RV32-NEXT: snez a1, a2
1870
- ; RV32-NEXT: or a1, a1, a0
1855
+ ; RV32-NEXT: or a0, a2, a4
1856
+ ; RV32-NEXT: snez a1, a0
1871
1857
; RV32-NEXT: .LBB26_10: # %entry
1872
1858
; RV32-NEXT: neg a1, a1
1873
1859
; RV32-NEXT: and a0, a1, a2
1874
- ; RV32-NEXT: and a1, a1, a3
1860
+ ; RV32-NEXT: and a1, a1, a4
1875
1861
; RV32-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
1876
1862
; RV32-NEXT: addi sp, sp, 32
1877
1863
; RV32-NEXT: ret
@@ -3087,10 +3073,8 @@ define i64 @utest_f64i64_mm(double %x) {
3087
3073
; RV32IF-NEXT: lw a1, 20(sp)
3088
3074
; RV32IF-NEXT: lw a2, 12(sp)
3089
3075
; RV32IF-NEXT: lw a3, 8(sp)
3090
- ; RV32IF-NEXT: seqz a4, a0
3091
- ; RV32IF-NEXT: snez a5, a1
3092
- ; RV32IF-NEXT: addi a5, a5, -1
3093
- ; RV32IF-NEXT: and a4, a5, a4
3076
+ ; RV32IF-NEXT: or a4, a1, a0
3077
+ ; RV32IF-NEXT: seqz a4, a4
3094
3078
; RV32IF-NEXT: xori a0, a0, 1
3095
3079
; RV32IF-NEXT: or a0, a0, a1
3096
3080
; RV32IF-NEXT: seqz a0, a0
@@ -3129,10 +3113,8 @@ define i64 @utest_f64i64_mm(double %x) {
3129
3113
; RV32IFD-NEXT: lw a1, 20(sp)
3130
3114
; RV32IFD-NEXT: lw a2, 12(sp)
3131
3115
; RV32IFD-NEXT: lw a3, 8(sp)
3132
- ; RV32IFD-NEXT: seqz a4, a0
3133
- ; RV32IFD-NEXT: snez a5, a1
3134
- ; RV32IFD-NEXT: addi a5, a5, -1
3135
- ; RV32IFD-NEXT: and a4, a5, a4
3116
+ ; RV32IFD-NEXT: or a4, a1, a0
3117
+ ; RV32IFD-NEXT: seqz a4, a4
3136
3118
; RV32IFD-NEXT: xori a0, a0, 1
3137
3119
; RV32IFD-NEXT: or a0, a0, a1
3138
3120
; RV32IFD-NEXT: seqz a0, a0
@@ -3345,10 +3327,8 @@ define i64 @utest_f32i64_mm(float %x) {
3345
3327
; RV32-NEXT: lw a1, 20(sp)
3346
3328
; RV32-NEXT: lw a2, 12(sp)
3347
3329
; RV32-NEXT: lw a3, 8(sp)
3348
- ; RV32-NEXT: seqz a4, a0
3349
- ; RV32-NEXT: snez a5, a1
3350
- ; RV32-NEXT: addi a5, a5, -1
3351
- ; RV32-NEXT: and a4, a5, a4
3330
+ ; RV32-NEXT: or a4, a1, a0
3331
+ ; RV32-NEXT: seqz a4, a4
3352
3332
; RV32-NEXT: xori a0, a0, 1
3353
3333
; RV32-NEXT: or a0, a0, a1
3354
3334
; RV32-NEXT: seqz a0, a0
@@ -3570,10 +3550,8 @@ define i64 @utesth_f16i64_mm(half %x) {
3570
3550
; RV32-NEXT: lw a1, 20(sp)
3571
3551
; RV32-NEXT: lw a2, 12(sp)
3572
3552
; RV32-NEXT: lw a3, 8(sp)
3573
- ; RV32-NEXT: seqz a4, a0
3574
- ; RV32-NEXT: snez a5, a1
3575
- ; RV32-NEXT: addi a5, a5, -1
3576
- ; RV32-NEXT: and a4, a5, a4
3553
+ ; RV32-NEXT: or a4, a1, a0
3554
+ ; RV32-NEXT: seqz a4, a4
3577
3555
; RV32-NEXT: xori a0, a0, 1
3578
3556
; RV32-NEXT: or a0, a0, a1
3579
3557
; RV32-NEXT: seqz a0, a0
0 commit comments