[PATCH] D126591: [InstCombine] Optimise shift+and+boolean conversion pattern to simple comparison

chenglin.bi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat May 28 01:58:39 PDT 2022


bcl5980 created this revision.
bcl5980 added reviewers: spatel, RKSimon, lebedev.ri, craig.topper.
Herald added subscribers: StephenFan, hiraditya.
Herald added a project: All.
bcl5980 requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

  iff (C1 is pow2) & (C2 is pow2) & (C1 <= C2):
  ((C1 << X) & C2) == 0 -> X != (Log2(C2) - Log2(C1)); https://alive2.llvm.org/ce/z/SVtcJM
  ((C1 << X) & C2) != 0 -> X == (Log2(C2) - Log2(C1)); https://alive2.llvm.org/ce/z/eLzTjS
  
  iff (C1 is pow2) & (C2 is pow2) & (C1 <= C2):
  ((C1 << X) & (C2 - 1)) == 0 -> X >= (Log2(C2) - Log2(C1)); https://alive2.llvm.org/ce/z/QHACBa
  ((C1 << X) & (C2 - 1)) != 0 -> X < (Log2(C2) - Log2(C1)); https://alive2.llvm.org/ce/z/xLdLWK
  
  iff (C1 is pow2) & (C2 is pow2):
  ((C1 >>u X) & C2) == 0 -> X != (Log2(C1) - Log2(C2)); https://alive2.llvm.org/ce/z/9p362A
  ((C1 >>u X) & C2) != 0 -> X == (Log2(C1) - Log2(C2)); https://alive2.llvm.org/ce/z/FsiU-A
  
  Fix issue https://github.com/llvm/llvm-project/issues/55739


https://reviews.llvm.org/D126591

Files:
  llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
  llvm/test/Transforms/InstCombine/icmp-and-shift.ll
  llvm/test/Transforms/InstCombine/lshr-and-signbit-icmpeq-zero.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126591.432707.patch
Type: text/x-patch
Size: 20235 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220528/e724c2e6/attachment.bin>


More information about the llvm-commits mailing list