[llvm] [InstCombine] Remove some of the complexity-based canonicalization (PR #91185)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 20 07:20:50 PDT 2024


================
@@ -808,10 +808,12 @@ define i32 @main7a_logical(i32 %argc, i32 %argc2, i32 %argc3) {
 ; B == (A & B) & D == (A & D)
 define i32 @main7b(i32 %argc, i32 %argc2, i32 %argc3) {
 ; CHECK-LABEL: @main7b(
-; CHECK-NEXT:    [[TMP1:%.*]] = or i32 [[ARGC2:%.*]], [[ARGC3:%.*]]
-; CHECK-NEXT:    [[TMP2:%.*]] = and i32 [[TMP1]], [[ARGC:%.*]]
-; CHECK-NEXT:    [[AND_COND:%.*]] = icmp ne i32 [[TMP2]], [[TMP1]]
-; CHECK-NEXT:    [[STOREMERGE:%.*]] = zext i1 [[AND_COND]] to i32
+; CHECK-NEXT:    [[AND1:%.*]] = and i32 [[ARGC:%.*]], [[ARGC2:%.*]]
+; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[ARGC2]], [[AND1]]
+; CHECK-NEXT:    [[AND2:%.*]] = and i32 [[ARGC]], [[ARGC3:%.*]]
+; CHECK-NEXT:    [[TOBOOL3:%.*]] = icmp ne i32 [[ARGC3]], [[AND2]]
+; CHECK-NEXT:    [[AND_COND_NOT:%.*]] = or i1 [[TOBOOL]], [[TOBOOL3]]
+; CHECK-NEXT:    [[STOREMERGE:%.*]] = zext i1 [[AND_COND_NOT]] to i32
----------------
nikic wrote:

Put up https://github.com/llvm/llvm-project/pull/104941 to fix this.

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


More information about the llvm-commits mailing list