@@ -115,8 +115,7 @@ define i32 @utest_f64i32(double %x) {
115
115
; RV32IF-NEXT: .cfi_offset ra, -4
116
116
; RV32IF-NEXT: call __fixunsdfdi@plt
117
117
; RV32IF-NEXT: sltiu a2, a0, -1
118
- ; RV32IF-NEXT: snez a1, a1
119
- ; RV32IF-NEXT: addi a1, a1, -1
118
+ ; RV32IF-NEXT: seqz a1, a1
120
119
; RV32IF-NEXT: and a1, a1, a2
121
120
; RV32IF-NEXT: addi a1, a1, -1
122
121
; RV32IF-NEXT: or a0, a1, a0
@@ -434,8 +433,7 @@ define i32 @utesth_f16i32(half %x) {
434
433
; RV32-NEXT: call __extendhfsf2@plt
435
434
; RV32-NEXT: call __fixunssfdi@plt
436
435
; RV32-NEXT: sltiu a2, a0, -1
437
- ; RV32-NEXT: snez a1, a1
438
- ; RV32-NEXT: addi a1, a1, -1
436
+ ; RV32-NEXT: seqz a1, a1
439
437
; RV32-NEXT: and a1, a1, a2
440
438
; RV32-NEXT: addi a1, a1, -1
441
439
; RV32-NEXT: or a0, a1, a0
@@ -1241,10 +1239,8 @@ define i64 @utest_f64i64(double %x) {
1241
1239
; RV32IF-NEXT: lw a1, 20(sp)
1242
1240
; RV32IF-NEXT: lw a2, 12(sp)
1243
1241
; RV32IF-NEXT: lw a3, 8(sp)
1244
- ; RV32IF-NEXT: seqz a4, a0
1245
- ; RV32IF-NEXT: snez a5, a1
1246
- ; RV32IF-NEXT: addi a5, a5, -1
1247
- ; RV32IF-NEXT: and a4, a5, a4
1242
+ ; RV32IF-NEXT: or a4, a1, a0
1243
+ ; RV32IF-NEXT: seqz a4, a4
1248
1244
; RV32IF-NEXT: xori a0, a0, 1
1249
1245
; RV32IF-NEXT: or a0, a0, a1
1250
1246
; RV32IF-NEXT: seqz a0, a0
@@ -1283,10 +1279,8 @@ define i64 @utest_f64i64(double %x) {
1283
1279
; RV32IFD-NEXT: lw a1, 20(sp)
1284
1280
; RV32IFD-NEXT: lw a2, 12(sp)
1285
1281
; RV32IFD-NEXT: lw a3, 8(sp)
1286
- ; RV32IFD-NEXT: seqz a4, a0
1287
- ; RV32IFD-NEXT: snez a5, a1
1288
- ; RV32IFD-NEXT: addi a5, a5, -1
1289
- ; RV32IFD-NEXT: and a4, a5, a4
1282
+ ; RV32IFD-NEXT: or a4, a1, a0
1283
+ ; RV32IFD-NEXT: seqz a4, a4
1290
1284
; RV32IFD-NEXT: xori a0, a0, 1
1291
1285
; RV32IFD-NEXT: or a0, a0, a1
1292
1286
; RV32IFD-NEXT: seqz a0, a0
@@ -1555,10 +1549,8 @@ define i64 @utest_f32i64(float %x) {
1555
1549
; RV32-NEXT: lw a1, 20(sp)
1556
1550
; RV32-NEXT: lw a2, 12(sp)
1557
1551
; RV32-NEXT: lw a3, 8(sp)
1558
- ; RV32-NEXT: seqz a4, a0
1559
- ; RV32-NEXT: snez a5, a1
1560
- ; RV32-NEXT: addi a5, a5, -1
1561
- ; RV32-NEXT: and a4, a5, a4
1552
+ ; RV32-NEXT: or a4, a1, a0
1553
+ ; RV32-NEXT: seqz a4, a4
1562
1554
; RV32-NEXT: xori a0, a0, 1
1563
1555
; RV32-NEXT: or a0, a0, a1
1564
1556
; RV32-NEXT: seqz a0, a0
@@ -1816,10 +1808,8 @@ define i64 @utesth_f16i64(half %x) {
1816
1808
; RV32-NEXT: lw a1, 20(sp)
1817
1809
; RV32-NEXT: lw a2, 12(sp)
1818
1810
; RV32-NEXT: lw a3, 8(sp)
1819
- ; RV32-NEXT: seqz a4, a0
1820
- ; RV32-NEXT: snez a5, a1
1821
- ; RV32-NEXT: addi a5, a5, -1
1822
- ; RV32-NEXT: and a4, a5, a4
1811
+ ; RV32-NEXT: or a4, a1, a0
1812
+ ; RV32-NEXT: seqz a4, a4
1823
1813
; RV32-NEXT: xori a0, a0, 1
1824
1814
; RV32-NEXT: or a0, a0, a1
1825
1815
; RV32-NEXT: seqz a0, a0
@@ -3234,11 +3224,9 @@ define i64 @utest_f64i64_mm(double %x) {
3234
3224
; RV32IF-NEXT: lw a1, 20(sp)
3235
3225
; RV32IF-NEXT: lw a2, 12(sp)
3236
3226
; RV32IF-NEXT: lw a3, 8(sp)
3237
- ; RV32IF-NEXT: seqz a4, a0
3238
- ; RV32IF-NEXT: snez a5, a1
3239
- ; RV32IF-NEXT: addi a5, a5, -1
3240
- ; RV32IF-NEXT: and a4, a5, a4
3241
- ; RV32IF-NEXT: neg a4, a4
3227
+ ; RV32IF-NEXT: or a4, a1, a0
3228
+ ; RV32IF-NEXT: snez a4, a4
3229
+ ; RV32IF-NEXT: addi a4, a4, -1
3242
3230
; RV32IF-NEXT: and a3, a4, a3
3243
3231
; RV32IF-NEXT: xori a0, a0, 1
3244
3232
; RV32IF-NEXT: or a0, a0, a1
@@ -3281,11 +3269,9 @@ define i64 @utest_f64i64_mm(double %x) {
3281
3269
; RV32IFD-NEXT: lw a1, 20(sp)
3282
3270
; RV32IFD-NEXT: lw a2, 12(sp)
3283
3271
; RV32IFD-NEXT: lw a3, 8(sp)
3284
- ; RV32IFD-NEXT: seqz a4, a0
3285
- ; RV32IFD-NEXT: snez a5, a1
3286
- ; RV32IFD-NEXT: addi a5, a5, -1
3287
- ; RV32IFD-NEXT: and a4, a5, a4
3288
- ; RV32IFD-NEXT: neg a4, a4
3272
+ ; RV32IFD-NEXT: or a4, a1, a0
3273
+ ; RV32IFD-NEXT: snez a4, a4
3274
+ ; RV32IFD-NEXT: addi a4, a4, -1
3289
3275
; RV32IFD-NEXT: and a3, a4, a3
3290
3276
; RV32IFD-NEXT: xori a0, a0, 1
3291
3277
; RV32IFD-NEXT: or a0, a0, a1
@@ -3601,11 +3587,9 @@ define i64 @utest_f32i64_mm(float %x) {
3601
3587
; RV32-NEXT: lw a1, 20(sp)
3602
3588
; RV32-NEXT: lw a2, 12(sp)
3603
3589
; RV32-NEXT: lw a3, 8(sp)
3604
- ; RV32-NEXT: seqz a4, a0
3605
- ; RV32-NEXT: snez a5, a1
3606
- ; RV32-NEXT: addi a5, a5, -1
3607
- ; RV32-NEXT: and a4, a5, a4
3608
- ; RV32-NEXT: neg a4, a4
3590
+ ; RV32-NEXT: or a4, a1, a0
3591
+ ; RV32-NEXT: snez a4, a4
3592
+ ; RV32-NEXT: addi a4, a4, -1
3609
3593
; RV32-NEXT: and a3, a4, a3
3610
3594
; RV32-NEXT: xori a0, a0, 1
3611
3595
; RV32-NEXT: or a0, a0, a1
@@ -3914,11 +3898,9 @@ define i64 @utesth_f16i64_mm(half %x) {
3914
3898
; RV32-NEXT: lw a1, 20(sp)
3915
3899
; RV32-NEXT: lw a2, 12(sp)
3916
3900
; RV32-NEXT: lw a3, 8(sp)
3917
- ; RV32-NEXT: seqz a4, a0
3918
- ; RV32-NEXT: snez a5, a1
3919
- ; RV32-NEXT: addi a5, a5, -1
3920
- ; RV32-NEXT: and a4, a5, a4
3921
- ; RV32-NEXT: neg a4, a4
3901
+ ; RV32-NEXT: or a4, a1, a0
3902
+ ; RV32-NEXT: snez a4, a4
3903
+ ; RV32-NEXT: addi a4, a4, -1
3922
3904
; RV32-NEXT: and a3, a4, a3
3923
3905
; RV32-NEXT: xori a0, a0, 1
3924
3906
; RV32-NEXT: or a0, a0, a1
0 commit comments