[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