Do (A == C1 || A == C2) -> (A & ~(C1 ^ C2)) == C1 rather than (A == C1 || A == C2...
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 2 Dec 2015 16:15:07 +0000 (16:15 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 2 Dec 2015 16:15:07 +0000 (16:15 +0000)
commit26a5db075f0b48f6e539ebff21c060264935ea01
treedf77d8544ebc3a3ed66f3f870e704cb92b83aeeb
parentf43a53680ab84d603007b06ed2ff43573072673a
Do (A == C1 || A == C2) -> (A & ~(C1 ^ C2)) == C1 rather than (A == C1 || A == C2) -> (A | (C1 ^ C2)) == C2 when C1 ^ C2 is a power of 2.

Differential Revision: http://reviews.llvm.org/D14223

Patch by Amaury SECHET!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254518 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
test/Transforms/InstCombine/icmp.ll
test/Transforms/InstCombine/load-cmp.ll
test/Transforms/InstCombine/or.ll