[PATCH] D36384: [InstCombine] Support (X | C1) & C2 --> (X & C2^(C1&C2)) | (C1&C2) for vector splats

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 6 17:12:39 PDT 2017


craig.topper created this revision.

Note the original code I deleted incorrectly listed this as  (X | C1) & C2 --> (X & C2^(C1&C2)) | C1   Which is only valid if C1 is a subset of C2. This relied on SimplifyDemandedBits to remove any extra bits from C1 before we got to that code.

My new implementation avoids relying on that behavior so that it can be naively verified with alive.


https://reviews.llvm.org/D36384

Files:
  lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  test/Transforms/InstCombine/or.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36384.109944.patch
Type: text/x-patch
Size: 4032 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170807/4c5cd97d/attachment.bin>


More information about the llvm-commits mailing list