@@ -405,7 +405,7 @@ define i32 @fcvt_wu_d_sat(double %a) nounwind {
405405; RV32I-NEXT: li a2, 0
406406; RV32I-NEXT: li a3, 0
407407; RV32I-NEXT: call __gedf2
408- ; RV32I-NEXT: slti a0, a0, 0
408+ ; RV32I-NEXT: srli a0, a0, 31
409409; RV32I-NEXT: addi s3, a0, -1
410410; RV32I-NEXT: mv a0, s1
411411; RV32I-NEXT: mv a1, s0
@@ -446,8 +446,8 @@ define i32 @fcvt_wu_d_sat(double %a) nounwind {
446446; RV64I-NEXT: srli a0, a0, 32
447447; RV64I-NEXT: j .LBB6_3
448448; RV64I-NEXT: .LBB6_2:
449- ; RV64I-NEXT: slti a0 , s0, 0
450- ; RV64I-NEXT: addi a0, a0 , -1
449+ ; RV64I-NEXT: srli s0 , s0, 63
450+ ; RV64I-NEXT: addi a0, s0 , -1
451451; RV64I-NEXT: and a0, a0, s1
452452; RV64I-NEXT: .LBB6_3: # %start
453453; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
@@ -819,7 +819,7 @@ define i64 @fcvt_l_d_sat(double %a) nounwind {
819819; RV32I-NEXT: mv a3, s0
820820; RV32I-NEXT: call __unorddf2
821821; RV32I-NEXT: snez a0, a0
822- ; RV32I-NEXT: slti a1, s4, 0
822+ ; RV32I-NEXT: srli a1, s4, 31
823823; RV32I-NEXT: sgtz a2, s2
824824; RV32I-NEXT: addi a0, a0, -1
825825; RV32I-NEXT: addi a3, a1, -1
@@ -1029,7 +1029,7 @@ define i64 @fcvt_lu_d_sat(double %a) nounwind {
10291029; RV32I-NEXT: li a2, 0
10301030; RV32I-NEXT: li a3, 0
10311031; RV32I-NEXT: call __gedf2
1032- ; RV32I-NEXT: slti a0, a0, 0
1032+ ; RV32I-NEXT: srli a0, a0, 31
10331033; RV32I-NEXT: addi s3, a0, -1
10341034; RV32I-NEXT: mv a0, s1
10351035; RV32I-NEXT: mv a1, s0
@@ -1055,7 +1055,7 @@ define i64 @fcvt_lu_d_sat(double %a) nounwind {
10551055; RV64I-NEXT: mv s0, a0
10561056; RV64I-NEXT: li a1, 0
10571057; RV64I-NEXT: call __gedf2
1058- ; RV64I-NEXT: slti a0, a0, 0
1058+ ; RV64I-NEXT: srli a0, a0, 63
10591059; RV64I-NEXT: addi s1, a0, -1
10601060; RV64I-NEXT: mv a0, s0
10611061; RV64I-NEXT: call __fixunsdfdi
@@ -1898,9 +1898,9 @@ define zeroext i16 @fcvt_wu_s_sat_i16(double %a) nounwind {
18981898; RV32I-NEXT: mv a0, a1
18991899; RV32I-NEXT: j .LBB28_3
19001900; RV32I-NEXT: .LBB28_2:
1901- ; RV32I-NEXT: slti a2 , s0, 0
1902- ; RV32I-NEXT: addi a2, a2 , -1
1903- ; RV32I-NEXT: and a0, a2 , a0
1901+ ; RV32I-NEXT: srli s0 , s0, 31
1902+ ; RV32I-NEXT: addi s0, s0 , -1
1903+ ; RV32I-NEXT: and a0, s0 , a0
19041904; RV32I-NEXT: .LBB28_3: # %start
19051905; RV32I-NEXT: and a0, a0, a1
19061906; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
@@ -1937,8 +1937,8 @@ define zeroext i16 @fcvt_wu_s_sat_i16(double %a) nounwind {
19371937; RV64I-NEXT: mv a0, a1
19381938; RV64I-NEXT: j .LBB28_3
19391939; RV64I-NEXT: .LBB28_2:
1940- ; RV64I-NEXT: slti a0 , s0, 0
1941- ; RV64I-NEXT: addi a0, a0 , -1
1940+ ; RV64I-NEXT: srli s0 , s0, 63
1941+ ; RV64I-NEXT: addi a0, s0 , -1
19421942; RV64I-NEXT: and a0, a0, s1
19431943; RV64I-NEXT: .LBB28_3: # %start
19441944; RV64I-NEXT: and a0, a0, a1
@@ -2271,9 +2271,9 @@ define zeroext i8 @fcvt_wu_s_sat_i8(double %a) nounwind {
22712271; RV32I-NEXT: li a0, 255
22722272; RV32I-NEXT: j .LBB32_3
22732273; RV32I-NEXT: .LBB32_2:
2274- ; RV32I-NEXT: slti a1 , s0, 0
2275- ; RV32I-NEXT: addi a1, a1 , -1
2276- ; RV32I-NEXT: and a0, a1 , a0
2274+ ; RV32I-NEXT: srli s0 , s0, 31
2275+ ; RV32I-NEXT: addi s0, s0 , -1
2276+ ; RV32I-NEXT: and a0, s0 , a0
22772277; RV32I-NEXT: .LBB32_3: # %start
22782278; RV32I-NEXT: zext.b a0, a0
22792279; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
@@ -2307,8 +2307,8 @@ define zeroext i8 @fcvt_wu_s_sat_i8(double %a) nounwind {
23072307; RV64I-NEXT: li a0, 255
23082308; RV64I-NEXT: j .LBB32_3
23092309; RV64I-NEXT: .LBB32_2:
2310- ; RV64I-NEXT: slti a0 , s0, 0
2311- ; RV64I-NEXT: addi a0, a0 , -1
2310+ ; RV64I-NEXT: srli s0 , s0, 63
2311+ ; RV64I-NEXT: addi a0, s0 , -1
23122312; RV64I-NEXT: and a0, a0, s1
23132313; RV64I-NEXT: .LBB32_3: # %start
23142314; RV64I-NEXT: zext.b a0, a0
@@ -2386,7 +2386,7 @@ define zeroext i32 @fcvt_wu_d_sat_zext(double %a) nounwind {
23862386; RV32I-NEXT: li a2, 0
23872387; RV32I-NEXT: li a3, 0
23882388; RV32I-NEXT: call __gedf2
2389- ; RV32I-NEXT: slti a0, a0, 0
2389+ ; RV32I-NEXT: srli a0, a0, 31
23902390; RV32I-NEXT: addi s3, a0, -1
23912391; RV32I-NEXT: mv a0, s1
23922392; RV32I-NEXT: mv a1, s0
@@ -2427,8 +2427,8 @@ define zeroext i32 @fcvt_wu_d_sat_zext(double %a) nounwind {
24272427; RV64I-NEXT: srli a0, a0, 32
24282428; RV64I-NEXT: j .LBB33_3
24292429; RV64I-NEXT: .LBB33_2:
2430- ; RV64I-NEXT: slti a0 , s0, 0
2431- ; RV64I-NEXT: addi a0, a0 , -1
2430+ ; RV64I-NEXT: srli s0 , s0, 63
2431+ ; RV64I-NEXT: addi a0, s0 , -1
24322432; RV64I-NEXT: and a0, a0, s1
24332433; RV64I-NEXT: .LBB33_3: # %start
24342434; RV64I-NEXT: slli a0, a0, 32
0 commit comments