@@ -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
@@ -1529,10 +1523,8 @@ define i64 @utest_f32i64(float %x) {
1529
1523
; RV32-NEXT: lw a1, 20(sp)
1530
1524
; RV32-NEXT: lw a2, 12(sp)
1531
1525
; RV32-NEXT: lw a3, 8(sp)
1532
- ; RV32-NEXT: seqz a4, a0
1533
- ; RV32-NEXT: snez a5, a1
1534
- ; RV32-NEXT: addi a5, a5, -1
1535
- ; RV32-NEXT: and a4, a5, a4
1526
+ ; RV32-NEXT: or a4, a1, a0
1527
+ ; RV32-NEXT: seqz a4, a4
1536
1528
; RV32-NEXT: xori a0, a0, 1
1537
1529
; RV32-NEXT: or a0, a0, a1
1538
1530
; RV32-NEXT: seqz a0, a0
@@ -1780,10 +1772,8 @@ define i64 @utesth_f16i64(half %x) {
1780
1772
; RV32-NEXT: lw a1, 20(sp)
1781
1773
; RV32-NEXT: lw a2, 12(sp)
1782
1774
; RV32-NEXT: lw a3, 8(sp)
1783
- ; RV32-NEXT: seqz a4, a0
1784
- ; RV32-NEXT: snez a5, a1
1785
- ; RV32-NEXT: addi a5, a5, -1
1786
- ; RV32-NEXT: and a4, a5, a4
1775
+ ; RV32-NEXT: or a4, a1, a0
1776
+ ; RV32-NEXT: seqz a4, a4
1787
1777
; RV32-NEXT: xori a0, a0, 1
1788
1778
; RV32-NEXT: or a0, a0, a1
1789
1779
; RV32-NEXT: seqz a0, a0
@@ -3083,10 +3073,8 @@ define i64 @utest_f64i64_mm(double %x) {
3083
3073
; RV32IF-NEXT: lw a1, 20(sp)
3084
3074
; RV32IF-NEXT: lw a2, 12(sp)
3085
3075
; RV32IF-NEXT: lw a3, 8(sp)
3086
- ; RV32IF-NEXT: seqz a4, a0
3087
- ; RV32IF-NEXT: snez a5, a1
3088
- ; RV32IF-NEXT: addi a5, a5, -1
3089
- ; RV32IF-NEXT: and a4, a5, a4
3076
+ ; RV32IF-NEXT: or a4, a1, a0
3077
+ ; RV32IF-NEXT: seqz a4, a4
3090
3078
; RV32IF-NEXT: xori a0, a0, 1
3091
3079
; RV32IF-NEXT: or a0, a0, a1
3092
3080
; RV32IF-NEXT: seqz a0, a0
@@ -3125,10 +3113,8 @@ define i64 @utest_f64i64_mm(double %x) {
3125
3113
; RV32IFD-NEXT: lw a1, 20(sp)
3126
3114
; RV32IFD-NEXT: lw a2, 12(sp)
3127
3115
; RV32IFD-NEXT: lw a3, 8(sp)
3128
- ; RV32IFD-NEXT: seqz a4, a0
3129
- ; RV32IFD-NEXT: snez a5, a1
3130
- ; RV32IFD-NEXT: addi a5, a5, -1
3131
- ; RV32IFD-NEXT: and a4, a5, a4
3116
+ ; RV32IFD-NEXT: or a4, a1, a0
3117
+ ; RV32IFD-NEXT: seqz a4, a4
3132
3118
; RV32IFD-NEXT: xori a0, a0, 1
3133
3119
; RV32IFD-NEXT: or a0, a0, a1
3134
3120
; RV32IFD-NEXT: seqz a0, a0
@@ -3341,10 +3327,8 @@ define i64 @utest_f32i64_mm(float %x) {
3341
3327
; RV32-NEXT: lw a1, 20(sp)
3342
3328
; RV32-NEXT: lw a2, 12(sp)
3343
3329
; RV32-NEXT: lw a3, 8(sp)
3344
- ; RV32-NEXT: seqz a4, a0
3345
- ; RV32-NEXT: snez a5, a1
3346
- ; RV32-NEXT: addi a5, a5, -1
3347
- ; RV32-NEXT: and a4, a5, a4
3330
+ ; RV32-NEXT: or a4, a1, a0
3331
+ ; RV32-NEXT: seqz a4, a4
3348
3332
; RV32-NEXT: xori a0, a0, 1
3349
3333
; RV32-NEXT: or a0, a0, a1
3350
3334
; RV32-NEXT: seqz a0, a0
@@ -3566,10 +3550,8 @@ define i64 @utesth_f16i64_mm(half %x) {
3566
3550
; RV32-NEXT: lw a1, 20(sp)
3567
3551
; RV32-NEXT: lw a2, 12(sp)
3568
3552
; RV32-NEXT: lw a3, 8(sp)
3569
- ; RV32-NEXT: seqz a4, a0
3570
- ; RV32-NEXT: snez a5, a1
3571
- ; RV32-NEXT: addi a5, a5, -1
3572
- ; RV32-NEXT: and a4, a5, a4
3553
+ ; RV32-NEXT: or a4, a1, a0
3554
+ ; RV32-NEXT: seqz a4, a4
3573
3555
; RV32-NEXT: xori a0, a0, 1
3574
3556
; RV32-NEXT: or a0, a0, a1
3575
3557
; RV32-NEXT: seqz a0, a0
0 commit comments