[llvm] [SelectionDAG] Fix condition used for unsigned subtraction overflow (PR #170896)

Pavel Rosický via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 8 02:40:23 PST 2025


================
@@ -138,9 +140,10 @@ define i64 @v_usub_p1(i64 %val0, i64 %val1, ptr %ptrval) {
 ; CHECK-LABEL: v_usub_p1:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; CHECK-NEXT:    v_subrev_co_u32_e32 v0, vcc, 1, v0
-; CHECK-NEXT:    v_subbrev_co_u32_e32 v1, vcc, 0, v1, vcc
-; CHECK-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]
+; CHECK-NEXT:    v_add_co_u32_e32 v2, vcc, -1, v0
+; CHECK-NEXT:    v_addc_co_u32_e32 v3, vcc, -1, v1, vcc
+; CHECK-NEXT:    v_cmp_lt_u64_e32 vcc, 1, v[0:1]
----------------
ahorek wrote:

Although the sub → add substitution is functionally identical, the additional v_cmp_lt_u64_e32 instruction should not be emitted, see https://github.com/llvm/llvm-project/pull/155255

https://github.com/llvm/llvm-project/pull/170896


More information about the llvm-commits mailing list