[PATCH] D102279: [InstCombine] Support one-hot merge for logical and/or

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 11 14:42:37 PDT 2021


nikic added inline comments.


================
Comment at: llvm/test/Transforms/InstCombine/onehot_merge.ll:69
 ; CHECK-NEXT:    [[T4:%.*]] = shl i32 1, [[C2:%.*]]
-; CHECK-NEXT:    [[T1:%.*]] = and i32 [[T]], [[K:%.*]]
-; CHECK-NEXT:    [[T2:%.*]] = icmp eq i32 [[T1]], 0
-; CHECK-NEXT:    [[T5:%.*]] = and i32 [[T4]], [[K]]
-; CHECK-NEXT:    [[T6:%.*]] = icmp eq i32 [[T5]], 0
-; CHECK-NEXT:    [[OR:%.*]] = select i1 [[T2]], i1 true, i1 [[T6]]
-; CHECK-NEXT:    ret i1 [[OR]]
+; CHECK-NEXT:    [[TMP1:%.*]] = freeze i32 [[T4]]
+; CHECK-NEXT:    [[TMP2:%.*]] = or i32 [[T]], [[TMP1]]
----------------
As a side-note, it would probably make sense to push freeze instructions through one-use non-canCreateUndefOrPoison instructions. `1 << freeze(x)` is better than `freeze(1 << x)`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102279/new/

https://reviews.llvm.org/D102279



More information about the llvm-commits mailing list