[llvm] [InstCombine] Fold icmp eq (and X, 1), 0 --> xor (trunc X to i1) (PR #219320)

Rohan Jha via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 2 09:50:58 PDT 2026


================
@@ -1121,10 +1122,11 @@ define void @assume_makes_and_known_assume_on_arg(ptr %p, i32 %x) {
 define void @assume_makes_and_known_assume_on_mul(ptr %p, i32 %a, i32 %b) {
 ; CHECK-LABEL: @assume_makes_and_known_assume_on_mul(
 ; CHECK-NEXT:    [[X:%.*]] = mul i32 [[A:%.*]], [[B:%.*]]
-; CHECK-NEXT:    [[AND:%.*]] = and i32 [[X]], 1
-; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[AND]], 0
+; CHECK-NEXT:    [[TMP1:%.*]] = trunc i32 [[X]] to i1
+; CHECK-NEXT:    [[CMP:%.*]] = xor i1 [[TMP1]], true
 ; CHECK-NEXT:    call void @llvm.assume(i1 [[CMP]])
-; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 4
+; CHECK-NEXT:    [[AND2:%.*]] = and i32 [[X]], 1
----------------
rohan11235813 wrote:

yeah, assume regressions are handled in https://github.com/llvm/llvm-project/pull/219854, so that might have to  go in before we can merge this. 

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


More information about the llvm-commits mailing list